给getopt传参时,顺序必须和解析顺序一样吗?
When passing parameters to getopt, does the order must same as the parsing order?
我想使用 getopt 来解析我的输入,例如 --count=123 --range=456 --err
这是我的测试代码:
argv=$(getopt --name `basename [=10=]` --options '' --longoptions err::,count:,range: -- "$@") 2>&1 || show_usage
eval "set -- ${argv}"
echo "debug> [$argv]"
while true; do
case "" in
"--count")
echo "HitCount="
echo "debug> [///////]"
shift 2
echo "debug> [///////]"
;;
"--range")
echo "ScanRange="
echo "debug> [///////]"
shift 2
echo "debug> [///////]"
break
;;
"--")
echo "debug> [///////]"
shift
echo "debug> [///////]"
break
;;
*)
show_usage
break
;;
esac
done
test1:很好
./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/--/////]
When passing parameters to getopt, does the order must same as the parsing order?
没有
it cannot parsed "--count". I don't know why?
你在 "--"
之前有 break
所以它打破了循环。
我想使用 getopt 来解析我的输入,例如 --count=123 --range=456 --err
这是我的测试代码:
argv=$(getopt --name `basename [=10=]` --options '' --longoptions err::,count:,range: -- "$@") 2>&1 || show_usage
eval "set -- ${argv}"
echo "debug> [$argv]"
while true; do
case "" in
"--count")
echo "HitCount="
echo "debug> [///////]"
shift 2
echo "debug> [///////]"
;;
"--range")
echo "ScanRange="
echo "debug> [///////]"
shift 2
echo "debug> [///////]"
break
;;
"--")
echo "debug> [///////]"
shift
echo "debug> [///////]"
break
;;
*)
show_usage
break
;;
esac
done
test1:很好
./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/--/////]
When passing parameters to getopt, does the order must same as the parsing order?
没有
it cannot parsed "--count". I don't know why?
你在 "--"
之前有 break
所以它打破了循环。