123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- # Simple usage cases for getopts.
- #
- # OPTIND is either not touched at all (first loop with getopts,
- # relying on shell startup init), or getopts state is reset
- # before new loop with "unset OPTIND", "OPTIND=1" or "OPTIND=0".
- #
- # Each option is a separate argument (no "-abc"). This conceptually
- # needs only $OPTIND to hold getopts state.
- #
- # We check that loop does not stop on unknown option (sets "?"),
- # stops on _first_ non-option argument.
- (
- echo "*** no OPTIND, optstring:'ab' args:-a -b c"
- var=QWERTY
- while getopts "ab" var -a -b c; do
- echo "var:'$var' OPTIND:$OPTIND"
- done
- # unfortunately, "rc:0" is shown since while's overall exitcode is "success"
- echo "exited: rc:$? var:'$var' OPTIND:$OPTIND"
- # Resetting behavior =1
- echo "*** OPTIND=1, optstring:'ab' args:-a -b c"
- OPTIND=1
- while getopts "ab" var -a -b c; do
- echo "var:'$var' OPTIND:$OPTIND"
- done
- echo "exited: rc:$? var:'$var' OPTIND:$OPTIND"
- # Resetting behavior =0
- echo "*** OPTIND=0, optstring:'ab' args:-a -b c"
- OPTIND=0
- while getopts "ab" var -a -b c; do
- echo "var:'$var' OPTIND:$OPTIND"
- done
- echo "exited: rc:$? var:'$var' OPTIND:$OPTIND"
- # Resetting behavior "unset"
- echo "*** unset OPTIND, optstring:'ab' args:-a -b c"
- unset OPTIND
- while getopts "ab" var -a -b c; do
- echo "var:'$var' OPTIND:$OPTIND"
- done
- echo "exited: rc:$? var:'$var' OPTIND:$OPTIND"
- # What is the final exitcode?
- echo "*** optstring:'ab' args:-a -b c"
- unset OPTIND
- getopts "ab" var -a -b c; echo "1 rc:$? var:'$var' OPTIND:$OPTIND"
- getopts "ab" var -a -b c; echo "2 rc:$? var:'$var' OPTIND:$OPTIND"
- getopts "ab" var -a -b c; echo "3 rc:$? var:'$var' OPTIND:$OPTIND"
- # Where would it stop? c or -c?
- echo "*** unset OPTIND, optstring:'ab' args:-a c -c -b d"
- unset OPTIND
- while getopts "ab" var -a c -c -b d; do
- echo "var:'$var' OPTIND:$OPTIND"
- done
- echo "exited: rc:$? var:'$var' OPTIND:$OPTIND"
- # What happens on unknown option?
- echo "*** unset OPTIND, optstring:'ab' args:-a -c -b d"
- unset OPTIND
- while getopts "ab" var -a -c -b d; do
- echo "var:'$var' OPTIND:$OPTIND"
- done
- echo "exited: rc:$? var:'$var' OPTIND:$OPTIND"
- # ORTERR=0 suppresses error message?
- echo "*** unset OPTIND, OPTERR=0, optstring:'ab' args:-a -c -b d"
- unset OPTIND
- OPTERR=0
- while getopts "ab" var -a -c -b d; do
- echo "var:'$var' OPTIND:$OPTIND"
- done
- echo "exited: rc:$? var:'$var' OPTIND:$OPTIND"
- ) 2>&1 \
- | sed -e 's/ unrecognized option: / invalid option -- /' \
- -e 's/ illegal option -- / invalid option -- /' \
|