Shell脚本 - sed不起作用

时间:2013-05-06 07:42:36

标签: bash shell unix sed

我有: 的test.txt:

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

有什么想法吗?

2 个答案:

答案 0 :(得分:9)

单引号是问题所在。 bash(或其他shell)不会在单引号中扩展变量。

将此sed命令与双引号一起使用,以便shell可以扩展变量:

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

答案 1 :(得分:3)

你需要加倍引用你的变量。

以下适用于我:

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