2019年11月17日日曜日

bash の [[ の中では -a は使えない

長年 bash を使っていて、気がつきませんでしたが、[[ の中では -a (AND条件指定) は使えないことを知りました。
[root@hoge ~]# A="hoge"
[root@hoge ~]# B="fuga"
[root@hoge ~]# [[ $A = ho* -a $B = fu* ]]
bash: 条件式に構文エラーがあります
bash: `-a' 周辺に構文エラーがあります
[root@hoge ~]# [[ $A = ho* && $B = fu* ]]
[root@hoge ~]# echo $?
0
このように -a は使えないが、その代わりに && が使えるようです。
[root@hoge ~]# help [[
[[ ... ]]: [[ expression ]]
    条件式のコマンドを実行します。

    条件式 EXPRESSION の評価結果に基づいて 0 または 1 を返します。
    条件式は test 組み込み関数と同じ優先順位で組み合わされます。また、
    次の演算子とも組み合わされます。

      ( EXPRESSION )    EXPRESSION の値を返します
      ! EXPRESSION              EXPRESSION が true の時 false を返します。それ
                                以外は false を返します
      EXPR1 && EXPR2    EXPR1 および EXPR2 の両方が true の時 true を返します。
        それ以外は false を返します。
      EXPR1 || EXPR2    EXPR1 および EXPR2 のいずれかが true の時 true を返し
        ます。それ以外は false を返します。

    `==' および `!=' 演算子が使用された場合、演算子の右側の文字列をパターンと
    した左側の文字列に対するパターン一致処理が行われます。
    `=~' 演算子が使用された場合、演算子の右側の文字列が正規表現として扱われま
    す。

    && および || 演算子は EXPR1 で式の値を決定するのに十分な場合は EXPR2 を
    評価しません。

    終了ステータス:
    EXPRESSION の値に基づいて 0 または 1 を返します。
以上、あたまのノートにメモ。

0 件のコメント:

コメントを投稿

人気ブログランキングへ にほんブログ村 IT技術ブログへ