Bash正規表現パターンマッチングスペース、二重括弧内テスト、 "~="演算子の使用

Bash正規表現パターンマッチングスペース、二重括弧内テスト、 "~="演算子の使用

簡単に言えば、空白を含むいくつかのパターンと変数を一致させる方法が見つかりません。

これは私がうまくいくと期待しています(「ok」文字列をエコーし​​ます)。

item='foobar baz'
pat=".+bar baz"
if [[ "$item" =~ "$pat" ]] ; then
    echo ok
fi

$patの周りに引用符を追加/削除しても何の違いもないようです。次の 2 つのエラーが発生します。

bash: conditional binary operator expected
bash: syntax error near `~='

誰かが私がここで何が間違っているのかを指摘するのに役立ちますか?パターンをすぐに入力する必要があります(引用符/二重引用符なし、変数参照なし)。それでは、どのようにスペースを追加できますか? (代替ではなく正規表現マッチングを使用してください)

ありがとうございます!

答え1

構文エラーは自明です。つまり、代わりに~=使用しました=~

正規表現パターンに関しては、シェル組み込み関数が単語分割を処理できるため、$pat(and)のみを使用してください。$item[[

item='foobar baz'
pat=".+bar baz"
if [[ $item =~ $pat ]]; then
    echo ok
fi

$patieの周囲に二重引用符を使用すると、"$pat"正規表現トークン.+文字通り処理されます。

例:

$ item='foobar baz'; pat=".+bar baz"; if [[ $item =~ $pat ]]; then echo OK; fi
OK

関連情報