我写了一个shell脚本来做某事.一切正常!我的代码的一部分是这样的,所以我可以传递选项和参数:
while getopts "a:b:c" opt
do
case $opt in
a) AA=$OPTARG ;;
b) BB=$OPTARG ;;
c) CC=$OPTARG ;;
esac
done
shift $(expr $OPTIND - 1)
Run Code Online (Sandbox Code Playgroud)
但是现在我想添加一个选项,比如说d我不希望它使用任何参数,如下面的代码所示,但它以错误结束,抱怨option requires an argument error -- d似乎getopts不能这样做.
while getopts "a:b:c:d" opt
do
case $opt in
a) AA=$OPTARG ;;
b) BB=$OPTARG ;;
c) CC=$OPTARG ;;
d) DD="ON" ;;
esac
done
shift $(expr $OPTIND - 1)
Run Code Online (Sandbox Code Playgroud)
那我该怎么办?如果我想要两个选项类型,一个可以接受参数,而另一个不需要参数,那么通常的做法是什么?
l0b*_*0b0 18
将:在getopts符是不是一个分隔符.来自man getopts:
如果一个字符后面跟一个冒号,那么该选项应该有一个参数,该参数应该用空格分隔.
因此,如果您想要一个不参数的选项,只需添加该字符即可.如果您希望它接受参数,请添加后跟的字符:.