2013-05-06 338 views
2

我: 的test.txt:shell腳本 - sed中不起作用

version-1 
version-1 

ori.sh:

old="version-1" 
new="version-2" 
sed -i .bak 's/${old}/${new}/g' test.txt 
運行ori.sh時

,沒有任何反應。我期望的test.txt會是什麼樣子:

的test.txt *:

version-2 
version-2 

任何想法?

+0

與'bash的-x'嘗試。 – 2013-05-06 08:14:10

回答

8

單引號是問題。 bash(或其他shell)不會在單引號中展開變量。

使用雙引號此sed命令,使外殼可以擴展變量:

sed -i.bak "s/${old}/${new}/g" test.txt 
3

需要引用您的變量翻番了。

對我來說,以下工作:

old="version-1" 
new="version-2" 
sed -i.bck 's:'"${old}"':'"${new}"':g' test.txt