可以使用getopts来获取全字标记吗?
如下:
while getopts ":abc --word" opt; do
case ${opt} in
a) SOMETHING
;;
...
--word) echo "Do something else."
;;
esac
done
尝试拿起那些双破折号标志。
答案 0 :(得分:5)
http://mywiki.wooledge.org/BashFAQ/035 归功于:How can I use long options with the Bash getopts builtin?。
答案 1 :(得分:1)
基本上是方舟的答案,但比mywiki页面更容易阅读:
#!/bin/bash
# example_args.sh
while [ $# -gt 0 ] ; do
case $1 in
-s | --state) S="$2" ;;
-u | --user) U="$2" ;;
-a | --aarg) A="$2" ;;
-b | --barg) B="$2" ;;
esac
shift
done
echo $S $U, $A $B
#$
是参数的数量,-gt
是“大于”,在这种情况下,$1
是标志,$2
是标志的值。
./example_args.sh --state IAM --user Yeezy -a Do --barg it
结果:
IAM Yeezy, Do it
答案 2 :(得分:0)
找到一种方法:
while getopts ":abc-:" opt; do
case ${opt} in
a) echo "Do something"
;;
...
-)
case ${OPTARG} in
"word"*) echo "This works"
;;
esac
esac
done
通过在opstring中添加 - :并使用$ OPTARG添加子案例,您可以选择所需的长选项。如果要包含该选项的参数,可以在案例中添加*或= *并选取参数。