【发布时间】:2016-06-20 08:05:44
【问题描述】:
无论标志的顺序如何,我都希望能够处理给定标志的多个参数。大家觉得这样可以接受吗?有什么改进吗?
所以:
$ ./script -c opt1 opt2 opt3 -b foo
opt1 opt2 opt3
foo
代码:
echo_args () {
echo "$@"
}
while (( $# > 0 )); do
case "$1" in
-b)
echo $2
;;
-c|--create)
c_args=()
# start looping from this flag
for arg in ${@:2}; do
[ "${arg:0:1}" == "-" ] && break
c_args+=("$arg")
done
echo_args "${c_args[@]}"
;;
*)
echo "huh?"
;;
esac
shift 1
done
【问题讨论】:
-
您可以做一些类似于 gcc 在将参数传递给例如时所做的事情。链接器:
-Wl,arg1,arg2,arg3即从空格作为分隔符切换到逗号。 -
一些程序接受重复的标志:
-c opt1 -c opt2 -c opt3 -b foo. -
是的,不使用 IFS 分隔符可以让我只传递下一个参数“$2”然后处理它,但我想让它类似于某些 GNU 命令的工作方式。
-
什么 Gnu 命令接受多个参数到一个标志?
-
cp与-t标志例如。