getopts可以用来拾取全字标志吗?事情如下:
while getopts ":abc --word" opt; do case ${opt} in a) SOMETHING ;; ... --word) echo "Do something else." ;; esac done
想捡那些双破折号旗。
k4emjkb11#
基本上方舟的答案,但更容易和更快地阅读比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的结果为:
$#
-gt
$1
$2
./example_args.sh --state IAM --user Yeezy -a Do --barg it
IAM Yeezy, Do it
r1zhe5dt2#
http://mywiki.wooledge.org/BashFAQ/035信用卡支付给:How can I use long options with the Bash getopts builtin? .
atmip9wb3#
找到了一种方法:
while getopts ":abc-:" opt; do case ${opt} in a) echo "Do something" ;; ... -) case ${OPTARG} in "word"*) echo "This works" ;; esac esac done
加入─ ─到opstring并使用$OPTARG添加一个子case,你可以选择你想要的long选项。如果你想为该选项添加一个参数,你可以添加 * 或=* 到case并选择参数。
3条答案
按热度按时间k4emjkb11#
基本上方舟的答案,但更容易和更快地阅读比mywiki页面:
$#
表示参数的数目,-gt
是“大于”,$1
是本例中的标志,$2
是标志的值。./example_args.sh --state IAM --user Yeezy -a Do --barg it
的结果为:r1zhe5dt2#
http://mywiki.wooledge.org/BashFAQ/035信用卡支付给:How can I use long options with the Bash getopts builtin? .
atmip9wb3#
找到了一种方法:
加入─ ─到opstring并使用$OPTARG添加一个子case,你可以选择你想要的long选项。如果你想为该选项添加一个参数,你可以添加 * 或=* 到case并选择参数。