Я использую getopts для обработки входных аргументов. У меня проблема с чтением значения необязательного аргумента.
Когда я запускаю скрипт с аргументами test.sh -t test -r server -p password -v 1
, $OPTARG
не возвращает значение необязательного аргумента -v
.
Может ли кто-нибудь сообщить мне, как обработать необязательное значение аргумента?
#!/bin/bash
usage()
{
cat << EOF
usage: $0 options
OPTIONS:
-h Show this message
-t Test type
-r Server address
-p Server root password
-v Verbose
EOF
}
TEST=
SERVER=
PASSWD=
VERBOSE=
echo "======111======"
while getopts "ht:r:p:v" OPTION
do
case $OPTION in
h)
usage
echo "===Option h selected=="
exit 1
;;
t)
TEST=$OPTARG
echo "====option t selected===$TEST"
;;
r)
SERVER=$OPTARG
echo "=====option r selected==="
;;
p)
PASSWD=$OPTARG
echo "====option p selected==="
;;
v)
VERBOSE=$OPTARG
echo "======option v selected===$VERBOSE"
;;
?)
echo "====unknown option selected===="
usage
exit
;;
esac
done
echo "========222===="
:
послеv
в вызовеgetopts
. Должно бытьwhile getopts "ht:r:p:v:"
. - person savanto   schedule 30.05.2014((VERBOSE++))
и вообще избежать аргумента. - person jaap   schedule 30.05.2014