Заменить текст в файлах значениями переменных, используя Bash

У меня есть php-файлы с таким флагом, как /* TEST */.

В этом скрипте у меня есть переменные с этим флагом и значением для замены:

test="defined('_TEST') or die('Test test');"
testPattern="/* TEST */"

Мой код не возвращает ошибок, но флаги не заменяются:

find . -name "*.php" -exec sed -i -e 's/"$testPattern"/"$test"/g' {} \;
1
задан Emma 27 February 2019 в 11:41
поделиться

2 ответа

Заключение символов в одинарные кавычки сохраняет буквальное значение каждого символа в кавычках.

Попробуйте это:

sed -i '' "s~$testPattern~$test~g" $(find . -name '*.php')
0
ответ дан gromi08 27 February 2019 в 11:41
поделиться

Ваша строка sed находится в одинарных кавычках. Расширения переменных там не происходит. Переключиться на двойные кавычки:

find . -name "*.php" -exec sed -i -e "s/$testPattern/$test/g" {} \;
0
ответ дан Poshi 27 February 2019 в 11:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: