Каждое длинное имя опции в longopts может сопровождаться одним двоеточием, чтобы указать, что у него есть обязательный аргумент, и двумя двоеточиями, чтобы указать, что у него есть необязательный аргумент.
в man bash
.
Я написал bash функцию optionarg
:
optionarg (){
opts=$(getopt -o , --long name:,pass:: -- "$@")
eval set -- "$opts"
while true; do
case "$1" in
--name)
name=$2
echo "name is " $name
shift 2;;
--pass)
case "$2" in
'')
echo "no pass argument"
shift 2;;
*)
pass=$2
echo "pass" $pass
shift 2;;
esac;;
--)
shift 1;;
*) break;;
esac
done }
Давайте проверим здесь мой optionarg.
1.Назначаем аргумент без pass
.
optionarg --name tom --pass
name is tom
no pass argument
2. Назначьте аргумент xxxx
с помощью pass
.
optionarg --name tom --pass xxxx
name is tom
no pass argument
Как исправить мою функцию optionarg
, чтобы получить такой вывод?
optionarg --name tom --pass xxxx
name is tom
pass xxxx