如果没有给出参数,如何防止需要参数的选项使用下一个选项?

时间:2012-06-13 16:37:46

标签: shell sh getopts

我在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但是我希望有更简单的方法来获得多种选择。

1 个答案:

答案 0 :(得分:1)

如果您使用的是getopts,它有自己的方式。放手去做。

毕竟,谁说选项的论点不能以破折号开头?如果它是文件名,则用户可能希望文件名以短划线开头。如果它是一个数字,也许它是一个负数。