我有: 的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
有什么想法吗?
答案 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