11

完全に機能するスクリプトを作成するためにケースを学習しようとしています。

私は以下から始めています

#!/bin/sh
case $@ in

    -h|--help)
            echo "You have selected Help"
            ;;
    -B|-b)
            echo "You have selected B"
            ;;
    -C|-c)
            echo "You have selected C"
            ;;
      *)
            echo "Valid Choices are A,B,C"
            exit 1
            ;;
esac

次の 2 つのオプションを使用します。

./getopts.sh -h -c

しかし、私はこの結果を得る有効な選択肢はA、B、Cです

私が間違っていることを教えてください。

1 つのオプションを入力すると何かを実行し、複数を入力すると複数のことを実行するスクリプトを作成したいと考えています。

また、最初に入力したオプション (-h) が $1 になるように、このスクリプトの $1 を surley として解析するにはどうすればよいでしょうか??

ありがとう!

4

3 に答える 3

6

getoptorを使用するgetoptsのがより良い解決策です。しかし、あなたの当面の質問に答えるに$@は、あなたのすべての引数ですので-h -c、あなたのケースステートメントの単一引数パターンのいずれとも一致しません。そのように引数を繰り返し処理する必要があります

for arg in "$@"; do
    case $arg in
       ....
    esac
done
于 2013-05-21T15:43:42.103 に答える