Я реализую средство визуализации шаблона в сценарии оболочки. Переменные шаблона представлены в шаблоне @ VAR_NAME @, а их значения определены в отдельном сценарии оболочки.Создание команды sed через скрипт оболочки - цитаты и sed
кодПример:
# template variables values
CONTACT_EMAIL="myemail"
CONTACT_NAME="myname"
VARS="CONTACT_EMAIL CONTACT_NAME"
TEMPLATE_FILEPATH="mytemplate.txt"
# template renderer
set -x
SEDARGS=
for VAR in $VARS; do
SEDARGS+=" -e \"s,@[email protected],${!VAR},\""
done
sed -r $SEDARGS $TEMPLATE_FILEPATH
СЕПГ команда, выполняемая оболочкой и распечатаны ею из-за "установить -x":
+ sed -r -e '"s,@[email protected],myemail,"' -e '"s,@[email protected],myname,"' mytemplate.txt
СЕПГ выход:
sed: -e expression #1, char 1: unknown command: `"'
Я знаю, одиночные кавычки вокруг каждого выражения sed вызывают это неинтуитивное сообщение об ошибке, но я не знаю, почему они adde д.
Что не так?
Возможный дубликат [возможно ли избежать метасимволов регулярных выражений с помощью sed] (http://stackoverflow.com/questions/29613304/is-it-possible-to-escape-regex-metacharacters-reliably-with-sed) ... Я имею в виду * возможный *, и надеюсь, что эта ссылка поможет. – hek2mgl
'SEDARGS + =" -e ', @ $ VAR @, $ {! VAR},' "' может работать. Интересная идея! удачи. – shellter