二重引用符と変数置換を一重引用符で囲んだ grep パターン

二重引用符と変数置換を一重引用符で囲んだ grep パターン

たとえば、次のようなパターンがあるとします。

Thisisatest="1"

というファイルに保存されますfile

そして私はちょうど上記の文字列しかし何らかの理由で、リストからいくつかの数字をループし、それらを変数として使用して、次の操作を試みることにしました。

Thisisatest="$varhere"

上記は$varhere上記の数値に等しく、 です1。(数値をループすると述べましたが、これこれは将来の使用例に過ぎず、あくまでも例に過ぎません)

簡単にするために、上記のものを一致させたいとしますちょうどパターンその間上記の変数とその内容を使用します:

grep 'Thisisatest="$varhere"' file

ファイルには文字列が含まれThisisatest="1"$varhere数値が含まれます1

問題は、これがうまくいかないことだなぜなら単一引用符で囲まれている場合は変数の展開は行われません (上記のように)。

これに対抗する失敗した試みは次のとおりです。

  1. 変数置換によるコンテンツの置換
echo "${varhere/[0-9]*/Thisisatest=\"$varhere\"}"

ここで私はechoそれが出力されるかどうかを確認します文字列なので、grep の入力として使用できます...代わりに次のように出力されます:

'Thisisatest="'1'"
  1. 引用文を追加
echo "'Thisisatest="${varhere}"'"

出力:

'Thisisatest='1''
echo ''''Thisisatest=\"${varhere}\"''''

出力:

Thisisatest="'1'"

残りは明らかです...上記の最後の試みは、私が望んでいるものに近いように思えますが、それでもまだ違います。

上記を実行する方法はありますか?

答え1

grep "Thisisatest=\"${varhere}\""

私の場合はうまくいきました。" \" は、ONE シェル解釈を通じて、次の文字の「私は特殊文字です」フラグを反転します。

関連情報