これマニュアルページbash
オペレーターがこう言われています=~
。
==と!=と同じ優先順位を持つ追加の2項演算子=~を使用することもできます。使用すると、演算子の右側の文字列は拡張正規表現として扱われ、それに応じて一致します(例:正規表現(3))
しかし、マイナーなREでも動作しないようです。私のユースケースは次のとおりです。
n='hello'
[[ "$n" =~ 'llo' ]] && echo yes || echo no # <-- yes
[[ "$n" =~ 'llo$' ]] && echo yes || echo no # <-- no
これが$
EOLの標準RE指標ですが、2番目の比較で「いいえ」を返すのはなぜですか?
ベストアンサー1
マニュアルページを注意深く読んでおらず、次のように書かれています。
パターンのすべての部分を引用して、引用された部分を文字列に一致させることができます。
したがって、$
文字列では、文字列の終わりではなく文字通りのドル記号を意味します。文字列から移動して$
機能させます。
$ [[ "$n" =~ 'llo'$ ]] && echo yes || echo no
yes