パラメータが文字列と一致することを確認するためにシェルスクリプトを作成しています。約20個ほどあり、今後さらに追加する必要があるかもしれません。
現在、私が書く方法は読みにくく、更新するのが面倒です。私はシェルスクリプティングに慣れていないので、これを単純化し管理するのが簡単な最善の方法を知りません。
if [ $4 =="CRITICAL" ] && [[ $2 == "foo" || $2 == "bar" || $2 == "foo" || $2 == "bar" || $2 == "foo" || $2 == "bar" || $2 == "foo" || $2 == "bar" || $2 == "foo" || $2 == "bar" || ]]
VARIABLE=1
fi
上記のスクリプトでは、Fooとbarは両方とも異なる文字列です。
ベストアンサー1
標準シェルでは、case
代替をサポートするを使用できます。
#!/bin/sh
if [ "$4" = CRITICAL ]; then
case $2 in
foo|bar|doo|quux)
VARIABLE=1
;;
esac
fi
上記の5行がcase
長すぎる場合は、1行に書きます。
case $2 in foo|bar|doo|quux) VARIABLE=1;; esac
これは==
Bashの標準ではありませんが、[ .. ]
Bashとkshでサポートされています。