将参数传递给getopt时,顺序是否必须与解析顺序相同



我想使用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:我只在命令行中更改了顺序,但无法解析&quot--计数">。我不知道为什么?

./getopt.sh --range=5678 --count=1234
debug> [ --range '5678' --count '1234' --]
ScanRange=5678
debug> [--range/5678/--count/1234/--///]
debug> [--count/1234/--/////]

在向getopt传递参数时,顺序是否必须与解析顺序相同?

否。

它无法解析&quot--计数";。我不知道为什么?

"--"之前有break,因此它会中断循环。

相关内容

  • 没有找到相关文章

最新更新