我有: test.txt:
version-1
version-1ori.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有什么想法吗?
发布于 2013-05-06 15:46:47
单引号是问题所在。bash (或其他shell)不会在单引号中展开变量。
使用带有双引号的sed命令,以便shell可以展开变量:
sed -i.bak "s/${old}/${new}/g" test.txt发布于 2013-05-06 15:54:18
你需要用双引号引用你的变量。
下面的方法对我很有效:
old="version-1"
new="version-2"
sed -i.bck 's:'"${old}"':'"${new}"':g' test.txthttps://stackoverflow.com/questions/16394248
复制相似问题