あるフリーウェアのインストール用bashプログラムを見ていたら次の様なものがあった。(以下の例は簡略化してある。) STRING="abc" if [[ "$STRING" =~ "^ab[cd]$" ]]; then echo "matched" else echo "unmatched" fi if文の条件表現の中に“=~”というオペレータがある。manを見ると =~ オペレータは文字列を正規表現と比較するとある。知らなかった。bashの文字列比較で正規表現が使えるとは。私は正規表現比較が必要な時はgrepに喰わせて判断していたのだが、これを使えば簡単にできる。 ところが、だ。上のプログラムが期待通りに動かない。上の例では =~ の左辺と右辺の正規表現はマッチするはずだが、結果は“unmatched”。色々と正規表現を変えてみたが、どれとしてマッチングしない。しかし、if文を次のように