我需要用存储在变量中的另一个字符串替换文件中的字符串。
现在我知道
sed -i 's|sourceString|destinationString|g' myTextFile.txt
替换一个字符串,但是如果目标字符串是硬编码字符串和变量的组合怎么办?
myString="this/is_an?Example=String"
sed -i 's|sourceString|${myString}destinationString|g' myTextFile.txt
后者不起作用,因为$myString
它没有被解释为变量。
答案1
Bash 不解释单引号字符串中的变量。这就是它不起作用的原因。
myString="this/is_an?Example=String"
sed -i "s|sourceString|${myString}destinationString|g" myTextFile.txt
会工作。
或者,如果由于其他原因需要单引号,那么您可以将字符串连接在一起,它们将被解释为一个:
myString="this/is_an?Example=String"
sed -i 's|sourceString|'"$myString"'destinationString|g' myTextFile.txt