На этот вопрос уже есть ответ:
Мне нужно для замены строки в файле другой строкой, которая хранится в переменной.
Теперь я знаю, что
sed -i 's|sourceString|destinationString|g' myTextFile.txt
заменяет строку, но что, если строка назначения была комбинацией жестко закодированной строки и переменной?
myString="this/is_an?Example=String"
sed -i 's|sourceString|${myString}destinationString|g' myTextFile.txt
Последнее не работает, поскольку $ myString
не интерпретируется как переменная.
Bash не интерпретирует переменные в строках одинарной кавычки. Вот почему это не работает.
myString="this/is_an?Example=String"
sed -i "s|sourceString|${myString}destinationString|g" myTextFile.txt
работал бы.
Или если Вам нужна одинарная кавычка по другой причине, можно просто бодать строки вместе, и они будут intepreted как один:
myString="this/is_an?Example=String"
sed -i 's|sourceString|'"$myString"'destinationString|g' myTextFile.txt