具有雙引號和單引號引起來的變數替換的 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 shell 解釋翻轉後面字元的「我是特殊字元」標誌。

相關內容