All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] getops: improve getopt-parse.bash example
@ 2016-07-27 10:34 Sami Kerola
  2016-07-27 11:15 ` Benno Schulenberg
  0 siblings, 1 reply; 4+ messages in thread
From: Sami Kerola @ 2016-07-27 10:34 UTC (permalink / raw)
  To: util-linux; +Cc: Sami Kerola

Use correct names of example scripts in the script.  Remove use of
backticks, they require quoting that makes the example harder to follow.
Split one-liners to one-command-at-a-time expressions.  Add continue keyword
to avoid additional case statement matching.  Be strict with quoting.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
---
 misc-utils/getopt-parse.bash | 78 ++++++++++++++++++++++++++++++--------------
 1 file changed, 53 insertions(+), 25 deletions(-)

diff --git a/misc-utils/getopt-parse.bash b/misc-utils/getopt-parse.bash
index aab8c62..923ddd8 100644
--- a/misc-utils/getopt-parse.bash
+++ b/misc-utils/getopt-parse.bash
@@ -3,45 +3,73 @@
 # A small example program for using the new getopt(1) program.
 # This program will only work with bash(1)
 # An similar program using the tcsh(1) script language can be found
-# as parse.tcsh
+# as getopt-parse.tcsh
 
 # Example input and output (from the bash prompt):
-# ./parse.bash -a par1 'another arg' --c-long 'wow!*\?' -cmore -b " very long "
+#
+# ./getopt-parse.bash -a par1 'another arg' --c-long 'wow!*\?' -cmore -b " very long "
 # Option a
 # Option c, no argument
-# Option c, argument `more'
-# Option b, argument ` very long '
+# Option c, argument 'more'
+# Option b, argument ' very long '
 # Remaining arguments:
-# --> `par1'
-# --> `another arg'
-# --> `wow!*\?'
+# --> 'par1'
+# --> 'another arg'
+# --> 'wow!*\?'
 
-# Note that we use `"$@"' to let each command-line parameter expand to a
-# separate word. The quotes around `$@' are essential!
-# We need TEMP as the `eval set --' would nuke the return value of getopt.
-TEMP=$(getopt -o ab:c:: --long a-long,b-long:,c-long:: \
-     -n 'example.bash' -- "$@")
+# Note that we use "$@" to let each command-line parameter expand to a
+# separate word. The quotes around "$@" are essential!
+# We need TEMP as the 'eval set --' would nuke the return value of getopt.
+TEMP=$(getopt -o 'ab:c::' --long '-long,b-long:,c-long::' -n 'example.bash' -- "$@")
 
-if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
+if [ $? -ne 0 ]; then
+	echo 'Terminating...' >&2
+	exit 1
+fi
 
-# Note the quotes around `$TEMP': they are essential!
+# Note the quotes around "$TEMP": they are essential!
 eval set -- "$TEMP"
+unset TEMP
 
-while true ; do
+while true; do
 	case "$1" in
-		-a|--a-long) echo "Option a" ; shift ;;
-		-b|--b-long) echo "Option b, argument \`$2'" ; shift 2 ;;
-		-c|--c-long)
+		'-a'|'--a-long')
+			echo 'Option a'
+			shift
+			continue
+		;;
+		'-b'|'--b-long')
+			echo "Option b, argument '$2'"
+			shift 2
+			continue
+		;;
+		'-c'|'--c-long')
 			# c has an optional argument. As we are in quoted mode,
 			# an empty parameter will be generated if its optional
 			# argument is not found.
 			case "$2" in
-				"") echo "Option c, no argument"; shift 2 ;;
-				*)  echo "Option c, argument \`$2'" ; shift 2 ;;
-			esac ;;
-		--) shift ; break ;;
-		*) echo "Internal error!" ; exit 1 ;;
+				'')
+					echo 'Option c, no argument'
+				;;
+				*)
+					echo "Option c, argument '$2'"
+				;;
+			esac
+			shift 2
+			continue
+		;;
+		'--')
+			shift
+			break
+		;;
+		*)
+			echo 'Internal error!' >&2
+			exit 1
+		;;
 	esac
 done
-echo "Remaining arguments:"
-for arg do echo '--> '"\`$arg'" ; done
+
+echo 'Remaining arguments:'
+for arg; do
+	echo "--> '$arg'"
+done
-- 
2.9.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] getops: improve getopt-parse.bash example
  2016-07-27 10:34 [PATCH] getops: improve getopt-parse.bash example Sami Kerola
@ 2016-07-27 11:15 ` Benno Schulenberg
  2016-07-27 15:20   ` Sami Kerola
  0 siblings, 1 reply; 4+ messages in thread
From: Benno Schulenberg @ 2016-07-27 11:15 UTC (permalink / raw)
  To: Sami Kerola; +Cc: Util-Linux


In the subject line: s/ops/opt/.

On Wed, Jul 27, 2016, at 12:34, Sami Kerola wrote:
> --- a/misc-utils/getopt-parse.bash
> +++ b/misc-utils/getopt-parse.bash
> @@ -3,45 +3,73 @@
>  # A small example program for using the new getopt(1) program.
>  # This program will only work with bash(1)
>  # An similar program using the tcsh(1) script language can be found

When here anyway, maybe fix a typo: s/An/A/.
Add a missing period: s/)/)./.
And adjust for the times: s/new //.

> -# as parse.tcsh
> +# as getopt-parse.tcsh

Also add period: s/tcsh/tcsh./

Benno

-- 
http://www.fastmail.com - Choose from over 50 domains or use your own


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] getops: improve getopt-parse.bash example
  2016-07-27 11:15 ` Benno Schulenberg
@ 2016-07-27 15:20   ` Sami Kerola
  2016-08-02 14:09     ` Karel Zak
  0 siblings, 1 reply; 4+ messages in thread
From: Sami Kerola @ 2016-07-27 15:20 UTC (permalink / raw)
  To: Benno Schulenberg; +Cc: Util-Linux

On 27 July 2016 at 12:15, Benno Schulenberg <bensberg@justemail.net> wrote:
>
> In the subject line: s/ops/opt/.
>
> On Wed, Jul 27, 2016, at 12:34, Sami Kerola wrote:
>> --- a/misc-utils/getopt-parse.bash
>> +++ b/misc-utils/getopt-parse.bash
>> @@ -3,45 +3,73 @@
>>  # A small example program for using the new getopt(1) program.
>>  # This program will only work with bash(1)
>>  # An similar program using the tcsh(1) script language can be found
>
> When here anyway, maybe fix a typo: s/An/A/.
> Add a missing period: s/)/)./.
> And adjust for the times: s/new //.
>
>> -# as parse.tcsh
>> +# as getopt-parse.tcsh
>
> Also add period: s/tcsh/tcsh./
>
> Benno

Thanks Benno.

The example file banner is updated to both of them. I also changed the
example script
to call itself as script rather than a program.

https://github.com/kerolasa/lelux-utiliteetit/commit/d27f5fe770025e456fbd33b87a96968f34c455ed

Karel if/when considering merge the branch name is: getopt

-- 
Sami Kerola
http://www.iki.fi/kerolasa/

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] getops: improve getopt-parse.bash example
  2016-07-27 15:20   ` Sami Kerola
@ 2016-08-02 14:09     ` Karel Zak
  0 siblings, 0 replies; 4+ messages in thread
From: Karel Zak @ 2016-08-02 14:09 UTC (permalink / raw)
  To: kerolasa; +Cc: Benno Schulenberg, Util-Linux

On Wed, Jul 27, 2016 at 04:20:32PM +0100, Sami Kerola wrote:
> On 27 July 2016 at 12:15, Benno Schulenberg <bensberg@justemail.net> wrote:
> >
> > In the subject line: s/ops/opt/.
> >
> > On Wed, Jul 27, 2016, at 12:34, Sami Kerola wrote:
> >> --- a/misc-utils/getopt-parse.bash
> >> +++ b/misc-utils/getopt-parse.bash
> >> @@ -3,45 +3,73 @@
> >>  # A small example program for using the new getopt(1) program.
> >>  # This program will only work with bash(1)
> >>  # An similar program using the tcsh(1) script language can be found
> >
> > When here anyway, maybe fix a typo: s/An/A/.
> > Add a missing period: s/)/)./.
> > And adjust for the times: s/new //.
> >
> >> -# as parse.tcsh
> >> +# as getopt-parse.tcsh
> >
> > Also add period: s/tcsh/tcsh./
> >
> > Benno
> 
> Thanks Benno.
> 
> The example file banner is updated to both of them. I also changed the
> example script
> to call itself as script rather than a program.
> 
> https://github.com/kerolasa/lelux-utiliteetit/commit/d27f5fe770025e456fbd33b87a96968f34c455ed
> 
> Karel if/when considering merge the branch name is: getopt

Merged, thanks.

    Karel

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-08-02 14:16 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-27 10:34 [PATCH] getops: improve getopt-parse.bash example Sami Kerola
2016-07-27 11:15 ` Benno Schulenberg
2016-07-27 15:20   ` Sami Kerola
2016-08-02 14:09     ` Karel Zak

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.