1

我在 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,但我希望当我有多种选择时有一种更简单的方法。

4

1 回答 1

1

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

毕竟,谁说选项的参数不能以破折号开头?如果是文件名,用户可能希望文件名以破折号开头。如果它是一个数字,它可能是一个负数。

于 2012-06-13T16:41:52.633 回答