【发布时间】:2020-02-10 12:04:32
【问题描述】:
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. 用pass 分配参数xxxx。
optionarg --name tom --pass xxxx
name is tom
no pass argument
如何修复我的optionarg 函数以获得这样的输出?
optionarg --name tom --pass xxxx
name is tom
pass xxxx
【问题讨论】:
-
另见Using getopts to process long and short command line options,包括my answer,它可以接受带有可选参数的长选项,并且不需要外部调用
getopt。