Sed用双引号替换变量

Ken*_*n J 6 regex bash sed

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

variable=$1
echo $variable
sed -i -e 's/name="master"/name="$variable"/g' test
Run Code Online (Sandbox Code Playgroud)

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

<host name=""$variable"" xmlns="urn:jboss:domain:3:0:>
Run Code Online (Sandbox Code Playgroud)

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

Sve*_*ach 13

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

sed -i -e 's/name="master"/name="'"$variable"'"/g' test
Run Code Online (Sandbox Code Playgroud)

  • 但要注意,你需要在`variable`的值中转义由`sed`特别解释的字符(例如`/`). (2认同)