
異なる環境で複数のApacheインスタンスを再起動するためのbashスクリプトを作成しています。正しいパラメータのみを入力するようにいくつかのロジックを追加したいことを除いてうまくいきます。私はいくつかの方法で次の文を試しましたが、幸運ではありません。どんな提案がありますか?
if [[ $ENVT != qa || $ENVT != qa2 || $ENVT != stageqa || $ENVT != stage ]];
then
usage
fi
ステージ環境を使用するときは、開いたset -x
ときと同じように繰り返すのではなく、最初のオプションを評価して関数を呼び出します。
+ ENVT=stage
+ ACTION=stop
+ USER=www
+ '[' 2 -ne 2 ']'
+ [[ stage != qa ]]
+ usage
答え1
if
この場合、複数の条件を使用せず、case
代わりに次のように使用します。
case "$ENVT" in
(qa|qa2|stageqa|stage) ;;
(*) usage ;;
esac
答え2
期待した品質保証、品質保証2など。偽より複雑なテストのための価値。もし彼らが本当なら価値、@Gnoucのソリューションは次のとおりです。はるかに良い確かに。
元のサンプル構文に関する教育的価値については、この回答をここに残しておきます。
「!=」で使用するには、「and」が必要な場合があります。
その場合は、多くの式や演算子を一緒に連結しないでください。
if [[ a1 != b1 ]] && [[ a2 != b2 ]] && [[ a3 != b3 ]] ...
それは次のとおりです。
if [[ "$ENVT" != qa ]] && [[ "$ENVT" != qa2 ]] && [[ "$ENVT" != stageqa ]] && [[ "$ENVT" != stage ]];
then
usage
fi
ご覧のとおり、変数の周りに引用符を追加しました。これは二重[[]]の内部では必ずしも必要ではありませんが、[]のようなほとんどどこでも非常に似ています。いつも引用に慣れるのは難しく、引用し続けます。