Я пытаюсь заменить экземпляры {$pear_root}
в файле конфигурации на переменную $PEAR_ROOT
в сценарии оболочки.
Используя метод из здесь в разделе «Замечание о персонаже Bash Escape» у меня есть:
ESC_PEAR_ROOT="${PEAR_ROOT//\//\\/}"
sed -i "s/{\$pear_root}/${ESC_PEAR_ROOT}/"../.serverconfig/test.txt
Я возвращаюсь 34: Плохая замена , что, я думаю, может означать, что это не поддерживается.
Проблема, похоже, заключается в использовании s/find/replace/
, поскольку я получаю ту же ошибку при выполнении этого с sed
или с perl
.
Какой самый простой способ сделать это:
APP_ROOT=$(php ./scripts/get_realpath.php '../')
PEAR_ROOT="$APP_ROOT/pear"
ESC_PEAR_ROOT="${PEAR_ROOT//\//\\/}"
sed -e "s/{\$pear_root}/${ESC_PEAR_ROOT}/"../.serverconfig/test.txt
И в итоге все экземпляры {$pear_root}
в test.txt
заменяются на путь из PEAR_ROOT
?
Я не привязан к этому методу - подойдет что-нибудь надежное.