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 に答える