【问题标题】:Sed replace variable in double quotessed用双引号替换变量
【发布时间】:2015-07-29 18:03:43
【问题描述】:

我创建了一个带有参数的 bash 脚本。我想将该参数传递给 sed 以将现有字符串替换为由变量组成的另一个字符串:

variable=$1
echo $variable
sed -i -e 's/name="master"/name="$variable"/g' test

问题是脚本没有用参数替换$variable,它只是用“$variable”替换字符串:

<host name=""$variable"" xmlns="urn:jboss:domain:3:0:>

如何用变量替换引号中的字符串?

【问题讨论】:

    标签: regex bash sed


    【解决方案1】:

    单引号内不会发生变量扩展。用双引号做:

    sed -i -e 's/name="master"/name="'"$variable"'"/g' test
    

    【讨论】:

    • 但请注意,您需要在variable 的值中转义由sed(例如/)专门解释的字符。
    【解决方案2】:

    像他一样改变你的代码,

    sed -i -e 's/name="master"/name="'"$variable"'"/g' test
    

    【讨论】:

      【解决方案3】:

      就这样吧:

      var=apple
      sed -i "s/pineapple/$"
      

      【讨论】:

      • 我可以假设您实际上已经尝试过该代码吗?我们是否要忽略您没有提供 -i 的文件名或语法上有效的 sed 命令这一事实?
      猜你喜欢
      • 2021-01-21
      • 1970-01-01
      • 2019-11-29
      • 2022-01-27
      • 2016-08-10
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多