使用sed用变量替换文件中的文本

mcE*_*nge 2 command-line bash sed

我需要用存储在变量中的另一个字符串替换文件中的字符串。
现在我知道了

sed -i 's|sourceString|destinationString|g' myTextFile.txt
Run Code Online (Sandbox Code Playgroud)

替换字符串但是如果目标字符串是硬编码字符串和变量的组合呢?

myString="this/is_an?Example=String"
sed -i 's|sourceString|${myString}destinationString|g' myTextFile.txt
Run Code Online (Sandbox Code Playgroud)

后者不起作用,因为$myString它不被解释为变量。

Oli*_*Oli 5

Bash 不解释单引号字符串中的变量。这就是为什么这不起作用。

myString="this/is_an?Example=String"
sed -i "s|sourceString|${myString}destinationString|g" myTextFile.txt
Run Code Online (Sandbox Code Playgroud)

会工作。

或者,如果您出于其他原因需要单引号,您可以将字符串连接在一起,它们将被解释为一个:

myString="this/is_an?Example=String"
sed -i 's|sourceString|'"$myString"'destinationString|g' myTextFile.txt
Run Code Online (Sandbox Code Playgroud)