または、ifステートメントを使用してシェルスクリプトのパラメータを検証します。

または、ifステートメントを使用してシェルスクリプトのパラメータを検証します。

異なる環境で複数の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

おすすめ記事