Я устанавливаю переменную в сценарии оболочки, затем вызываю сценарий sed, а в сценарии sed я использую переменную, которая, похоже, не работает, и мне нужна была помощь в том, как этого добиться.
sed -e "s / text / $ VAR" тестовый файл
test.sh
экспорт VAR = somevar
sed -f sedfile testfile
тестовый файл
Это тестовый файл
файл sed
s / text / $ VAR /
Также пробовал
s / text / $ {VAR} /
Результат
Это файл $ VAR
Ожидаемый результат
Это файл somevar
Мягкие цитаты " в версии командной строки вашего примера разрешить расширение оболочки переменной твоей оболочкой, прежде чем sed выполнит инструкции sed.
Файл sedfile не является сценарием оболочки, это сценарий sed, интерпретируемый sed, поэтому расширение переменной оболочки не может происходить. Это просто не сработает, AFAIK.
вы можете создать файл sed, используя здесь синтаксис документа
cat <<foobar > sedfile
s/text1/${VAR1}/
s/text2/${ANOTHERVAR}/
foobar
foobar
необходимо использовать в начале строкиfoobar
может быть любой строкой, просто используйте ту же строку в <<foobar
затем сделай посев
sed -f sedfile testfile
Я ожидаю, что ваш файл sed немного сложен, для одной или двух замен, возможно, не стоит его использовать.