/[public]/getopt/trunk/getopt-parse.bash
ViewVC logotype

Contents of /getopt/trunk/getopt-parse.bash

Parent Directory Parent Directory | Revision Log Revision Log


Revision 259 - (show annotations)
Mon Nov 7 22:09:10 2005 UTC (18 years, 4 months ago) by frodo
File size: 1500 byte(s)
Imported sources

1 #!/bin/bash
2
3 # A small example program for using the new getopt(1) program.
4 # This program will only work with bash(1)
5 # An similar program using the tcsh(1) script language can be found
6 # as parse.tcsh
7
8 # Example input and output (from the bash prompt):
9 # ./parse.bash -a par1 'another arg' --c-long 'wow!*\?' -cmore -b " very long "
10 # Option a
11 # Option c, no argument
12 # Option c, argument `more'
13 # Option b, argument ` very long '
14 # Remaining arguments:
15 # --> `par1'
16 # --> `another arg'
17 # --> `wow!*\?'
18
19 # Note that we use `"$@"' to let each command-line parameter expand to a
20 # separate word. The quotes around `$@' are essential!
21 # We need TEMP as the `eval set --' would nuke the return value of getopt.
22 TEMP=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \
23 -n 'example.bash' -- "$@"`
24
25 if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
26
27 # Note the quotes around `$TEMP': they are essential!
28 eval set -- "$TEMP"
29
30 while true ; do
31 case "$1" in
32 -a|--a-long) echo "Option a" ; shift ;;
33 -b|--b-long) echo "Option b, argument \`$2'" ; shift 2 ;;
34 -c|--c-long)
35 # c has an optional argument. As we are in quoted mode,
36 # an empty parameter will be generated if its optional
37 # argument is not found.
38 case "$2" in
39 "") echo "Option c, no argument"; shift 2 ;;
40 *) echo "Option c, argument \`$2'" ; shift 2 ;;
41 esac ;;
42 --) shift ; break ;;
43 *) echo "Internal error!" ; exit 1 ;;
44 esac
45 done
46 echo "Remaining arguments:"
47 for arg do echo '--> '"\`$arg'" ; done

Properties

Name Value
svn:executable *

frodo@frodo.looijaard.name
ViewVC Help
Powered by ViewVC 1.1.26