二重引用符と一重引用符の間の変数置換を使用する 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}\""

私のために動作します。 " \"はシェルの解釈を通して、次の文字の「私は特殊文字です」というフラグを反転します。

おすすめ記事