hush: teach getopts to set/unset OPTARG

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2017-08-11 02:05:21 +02:00
parent 74d4058928
commit 81f962f3df
6 changed files with 73 additions and 6 deletions

View File

@@ -0,0 +1,18 @@
*** no OPTIND, optstring:'w:et' args:-q -w e -r -t -y
./getopt_optarg.tests: invalid option -- q
var:'?' OPTIND:2 OPTARG:''
var:'w' OPTIND:4 OPTARG:'e'
./getopt_optarg.tests: invalid option -- r
var:'?' OPTIND:5 OPTARG:''
var:'t' OPTIND:6 OPTARG:''
./getopt_optarg.tests: invalid option -- y
var:'?' OPTIND:7 OPTARG:''
exited: var:'?' OPTIND:7 OPTARG:''
*** OPTIND=0, optstring:'w:et' args:-w 1 -w2 -w -e -e -t -t
var:'w' OPTIND:3 OPTARG:'1'
var:'w' OPTIND:4 OPTARG:'2'
var:'w' OPTIND:6 OPTARG:'-e'
var:'e' OPTIND:7 OPTARG:''
var:'t' OPTIND:8 OPTARG:''
var:'t' OPTIND:9 OPTARG:''
exited: var:'?' OPTIND:9 OPTARG:''

View File

@@ -0,0 +1,16 @@
set -- -q -w e -r -t -y
echo "*** no OPTIND, optstring:'w:et' args:$*"
var=QWERTY
OPTARG=ASDFGH
while getopts "w:et" var; do
echo "var:'$var' OPTIND:$OPTIND OPTARG:'$OPTARG'"
done
echo "exited: var:'$var' OPTIND:$OPTIND OPTARG:'$OPTARG'"
set -- -w 1 -w2 -w -e -e -t -t
echo "*** OPTIND=0, optstring:'w:et' args:$*"
OPTIND=0
while getopts "w:et" var; do
echo "var:'$var' OPTIND:$OPTIND OPTARG:'$OPTARG'"
done
echo "exited: var:'$var' OPTIND:$OPTIND OPTARG:'$OPTARG'"

View File

@@ -4,5 +4,4 @@ var=QWERTY
while getopts "we" var; do
echo "var:'$var' OPTIND:$OPTIND"
done
# unfortunately, "rc:0" is shown since while's overall exitcode is "success"
echo "exited: var:'$var' OPTIND:$OPTIND"