我正在嘗試找到一種方法來sed在 bash 腳本中的命令中轉義美元符號。我在這里找到了大量的答案,這些答案說您需要連續放置四個反斜杠才能逃脫該標志。我也嘗試過帶有兩個反斜杠的版本,但由于某種原因,我無法讓它作業。有人可以告訴我我做錯了什么嗎?
假設您有一個名為的檔案aaa.txt位于/home/Documents. 該檔案只有一行文本,即aaa. 我正在嘗試使用此命令替換它(請不要告訴我我可以以與行號不同的方式參考它,因為這只是我正在做的其他事情的簡化示例):
sed -i "1ccd /home/userr/$PARAMETER/$METHOD" "/home/userr/Documents/aaa.txt"
我得到的輸出是這樣的:
cd /home/userr/\/\
這不是我想要的。我想得到這個輸出,字串中有美元符號:
cd /home/userr/$PARAMETER/$METHOD
sed傳遞給命令以實作此目的的字串的正確形式是什么?
uj5u.com熱心網友回復:
您可以使用反斜杠轉義美元符號:
sed -i "1ccd /home/userr/\$PARAMETER/\$METHOD" "/home/userr/Documents/aaa.txt"
此處的檔案:https ://www.gnu.org/software/bash/manual/html_node/Escape-Character.html
uj5u.com熱心網友回復:
您需要洗掉雙引號,因此sed不會嘗試擴展它。這sed應該可以在不需要轉義的情況下作業。
$ sed -i '1ccd /home/userr/$PARAMETER/$METHOD' /home/userr/Documents/aaa.txt
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/473902.html
上一篇:用逗號分隔的引號連接字串
