Я пытаюсь использовать sed для выполнения встроенного поиска и замены, но я думаю, что странные символы вызывают проблемы.Использование переменных с sed, но имеющих проблемы с экранированием
Мой файл config.inc содержит 2 строки:
$GLOBALS['industry_id'] = '1';
yyyy
что-то простое, как это работает, и заменяет гггг с ZZZZ:
x="yyyy"
y="zzzz"
sed -i "s/${x}/${y}/" config.inc
Но что-то вроде этого не работает:
x="$GLOBALS['industry_id'] = '1';"
y="$GLOBALS['industry_id'] = '3';"
sed -i "s/${x}/${y}/g" config.inc
Нужно ли мне избегать символов типа $ [] '; (хотя это также не работает):
x="\$GLOBALS\[\'industry_id\'\] = \'1\'\;"
y="\$GLOBALS\[\'industry_id\'\] = \'3\'\;"
sed -i "s/${x}/${y}/g" config.inc
Что мне не хватает?
Благодаря Chris
UPDATE: Ok благодаря pfnuesel следующие работы:
x="\\\$GLOBALS\\['industry_id'\\] = '1';"
y="$GLOBALS['industry_id'] = '3';"
sed -i "s/${x}/${y}/g" config.inc
Отсутствует символ escape: 'y =" \ $ GLOBALS ['industry_id'] = '3'; "' (так как '' 'должен быть экранирован в bash). – pfnuesel