我想使用 getopt 來決議我的輸入,例如 --count=123 --range=456 --err
這是我的測驗代碼:
argv=$(getopt --name `basename $0` --options '' --longoptions err::,count:,range: -- "$@") 2>&1 || show_usage
eval "set -- ${argv}"
echo "debug> [$argv]"
while true; do
case "$1" in
"--count")
echo "HitCount=$2"
echo "debug> [$1/$2/$3/$4/$5/$6/$7/$8]"
shift 2
echo "debug> [$1/$2/$3/$4/$5/$6/$7/$8]"
;;
"--range")
echo "ScanRange=$2"
echo "debug> [$1/$2/$3/$4/$5/$6/$7/$8]"
shift 2
echo "debug> [$1/$2/$3/$4/$5/$6/$7/$8]"
break
;;
"--")
echo "debug> [$1/$2/$3/$4/$5/$6/$7/$8]"
shift
echo "debug> [$1/$2/$3/$4/$5/$6/$7/$8]"
break
;;
*)
show_usage
break
;;
esac
done
測驗1:很好
./getopt.sh --count=1234 --range=5678
debug> [ --count '1234' --range '5678' --]
HitCount=1234
debug> [--count/1234/--range/5678/--///]
debug> [--range/5678/--/////]
ScanRange=5678
debug> [--range/5678/--/////]
debug> [--///////]
test2:我只更改命令列中的順序,但無法決議 "--count"。我不知道為什么?
./getopt.sh --range=5678 --count=1234
debug> [ --range '5678' --count '1234' --]
ScanRange=5678
debug> [--range/5678/--count/1234/--///]
debug> [--count/1234/--/////]
uj5u.com熱心網友回復:
傳引數給getopt時,順序是否必須和決議順序一致?
不。
它無法決議“--count”。我不知道為什么?
你break以前有,"--"所以它打破了回圈。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/439440.html
上一篇:sed通過轉義特殊字符替換行
