/bin/sh スクリプト - パラメータが 1 か 2 であるかを確認するには?

/bin/sh スクリプト - パラメータが 1 か 2 であるかを確認するには?

修正が必要なスクリプトを受け取りました。中古なのに/bin/shおそらく変わらないと思います。

パラメータが整数(特に1または2)であることを確認したいと思います。

これを行い、パラメータが存在しない場合、または文字列で無効な整数である場合を満たすにはどうすればよいですか?

答え1

スクリプトのパラメータがあるか1どうかを確認するには、2単にケースステートメントを使用するだけです。

以下のコードでは、次のことを確認したいとします$1

case $1 in
    [12])
        # $1 is 1 or 2
        ;;
    *)
        # $1 is not 1 and not 2
esac

2つの特定の値にのみ興味があり、それを文字列として簡単に確認できるため、パラメータが有効な整数であることを確認する必要はありません。シェル変数の値は、算術コンテキストで使用されていない限り、常に文字列であり、これには理由はありません。

明示的な宣言を使用することもできますif

if [ "$1" = '1' ] || [ "$1" = '2' ]; then
    # $1 is 1 or 2
else
    # $1 is not 1 and not 2
fi

答え2

パラメータ値が整数であることを確認するには、次のリンクを確認してください。

https://stackoverflow.com/questions/2210349/test-whether-string-is-a-valid-integer

変数が存在することを確認するために、変数に最初の引数を割り当てるとします。

var=$1

 if [ ! -z "$var" ]; then
    echo "value is present"
 else
    echo "value is not present"
 fi 

関連情報