2

我有: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 看起来像:

测试.txt*:

version-2
version-2

有任何想法吗?

4

2 回答 2

10

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

使用带有双引号的 sed 命令,以便 shell 可以扩展变量:

sed -i.bak "s/${old}/${new}/g" test.txt
于 2013-05-06T07:46:46.753 回答
4

你需要双引号你的变量。

以下对我有用:

old="version-1"
new="version-2"
sed -i.bck 's:'"${old}"':'"${new}"':g' test.txt
于 2013-05-06T07:54:18.040 回答