【问题标题】:Shell script - sed doesn't workShell 脚本 - sed 不起作用
【发布时间】:2013-04-29 22:37:53
【问题描述】:

我有: 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

有什么想法吗?

【问题讨论】:

    标签: regex bash shell unix sed


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      你需要双引号你的变量。

      以下对我有用:

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

      【讨论】:

        最近更新 更多