長年 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 件のコメント:
コメントを投稿