or演算子を使用する同様のテスト式?

or演算子を使用する同様のテスト式?

これが気になります:

if [ "$first_arg" == "major" ] || [ "$first_arg" == "minor" ]; then
        exit 1;
fi

これと同じ:

if [ "$first_arg" == "major" || "$first_arg" == "minor" ]; then
      exit 1;
fi

ベストアンサー1

彼らは違う。実際、[ "$first_arg" == "major" || "$first_arg" == "minor" ]有効な表現でもありません。

これは[、同等のコマンドであり、相互コマンドレベルで実行される代替コマンドをtest使用できないためです。||歴史的に正しい選択肢は次のように考えることができます-oが、これで、POSIXによって廃止されたとマークされました。1.書き直すことをお勧めします

test "$1" -o "$2"

入力する

test "$1" || test "$2"

test設定に加えて、正確には許可されていませんが、許可する[「最新の」テストコマンドがあります。[[-o||

したがって、これらはすべて有効で同じです。

  1. テスト[[:

    if [[ $first_arg == major || $first_arg == minor ]]; then
        exit 1;
    fi
    
  2. 2つの[[テスト:

    if [[ $first_arg == major ]] || [[ $first_arg == minor ]]; then
        exit 1;
    fi
    
  3. 2つの[テスト(標準と同じ):

    if [ "$first_arg" = major ] || [ "$first_arg" = minor ]; then
        exit 1;
    fi
    

$first_arg[[単語の区切りやパス名の拡張がないため、内部に二重引用符は必要ありません。[ただし、引用符は必ず使用してください。引用符minorも意味がありませんmajor。ここだけでなく、一緒にもtest一緒にも[同じです。その理由は単純な文字列だからです。

1. アプリケーションの使い方を確認してください。

おすすめ記事