BASH演算子「^」、「|」と条件^(n | N)$の「$」の意味

BASH演算子「^」、「|」と条件^(n | N)$の「$」の意味

私のスクリプトで「もう一度試してみますか?[y / N]」条件を設定しようとしています。

if [[ "$response" =~ ^(n|no)$ ]]; then do something...,

しかし、ここで使用されている「^」と「$」記号の意味は理解できません。簡単な方法を試してみましたが、うまくいきましたが、[[ if $response =~ (n|no) ]]「nein」のようなものを入力しても動作します...パイプを(|)「OR」演算子として使用しましたが、それも間違っている可能性があります。

このすべての状況が何を意味するのか、誰かが私に説明できますか?動作しますが、意味も知りたいです。本当にありがとうございます。

ベストアンサー1

これは正規表現の特殊文字です。

^文字列の先頭のアンカーです(したがって、一致の前には何もありません)。

$文字列の末尾にあるアンカーです(したがって、一致の後には何もありません)。

|あなたが疑うようにORです

bash拡張テストでは、=~右側の文字列が拡張正規表現であり、一致する場合は0で終了し、それ以外の場合は1で終了します。

[[ if $response =~ (n|no) ]]ifが角括弧の外にある必要があるため、欠陥がありますが、これが質問の誤字であると仮定すると、応答にn。アンカーポイントを開始して終了する必要があります。ただ nそれともno一致します。

おすすめ記事