所以,假設我有以下模式:
Thisisatest="1"
在一個名為 的檔案中file
。
我想匹配精確的上面的字串但無論出於何種原因,我選擇循環列表中的一些數字,將它們用作變數並嘗試執行以下操作:
Thisisatest="$varhere"
其中,上面的數$varhere
等於上面的數,即1
。 (雖然我提到了循環數字,這只是未來可能的用例,並且仍然是一個示例)
現在為了讓事情變得更容易,假設我想匹配上面的內容精確的圖案儘管使用上面的變數及其內容:
grep 'Thisisatest="$varhere"' file
其中文件包含字串Thisisatest="1"
並$varhere
包含數字1
。
問題是,這行不通因為當單引號之間時不會發生變數擴展(如上圖)。
這是反駁這項失敗的嘗試:
- 變數替換的內容替換
echo "${varhere/[0-9]*/Thisisatest=\"$varhere\"}"
這裡我用echo
來看是否有輸出正確的字串,因此它可以用作 grep 的輸入...它輸出以下內容:
'Thisisatest="'1'"
- 添加更多報價
echo "'Thisisatest="${varhere}"'"
輸出:
'Thisisatest='1''
echo ''''Thisisatest=\"${varhere}\"''''
輸出:
Thisisatest="'1'"
其餘的很明顯......現在上面的最後一次嘗試似乎接近我想要的,但仍然不是。
有什麼方法可以做到上述嗎?
答案1
grep "Thisisatest=\"${varhere}\""
對我有用。 「\
」透過 ONE shell 解釋翻轉後面字元的「我是特殊字元」標誌。