我在test.sh中有以下代码:
while getopts "f:i:" opt; do
case $opt in
f)
echo $OPTARG
i) echo $OPTARG
现在,如果我运行./test.sh -f
,我将收到错误:
option requires an argument -- i
但是,当我运行./test.sh -f -i test
时,它会回显-i。
我知道这是因为它只是用空格分隔下一个参数,但是有一种简单的方法来处理它吗?
我可以做if [ $OPTARG == "-i" ]; then exit 1
但是我希望有更简单的方法来获得多种选择。
答案 0 :(得分:1)
如果您使用的是getopts,它有自己的方式。放手去做。
毕竟,谁说选项的论点不能以破折号开头?如果它是文件名,则用户可能希望文件名以短划线开头。如果它是一个数字,也许它是一个负数。