使用Bash用变量值替换文件中的文本

时间:2019-02-27 09:32:45

标签: bash

我有带有/* TEST */等标志的php文件。

在脚本中,我有带有此标志的变量和要替换的值:

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

我的代码未返回任何错误,但未替换标志:

find . -name "*.php" -exec sed -i -e 's/"$testPattern"/"$test"/g' {} \;

2 个答案:

答案 0 :(得分:3)

您的sed字符串用单引号引起来。在那里不发生变量扩展。切换到双引号:

find . -name "*.php" -exec sed -i -e "s/$testPattern/$test/g" {} \;

答案 1 :(得分:0)

用单引号引起来的字符将保留引号中每个字符的字面值。

尝试这个:

sed -i '' "s~$testPattern~$test~g" $(find . -name '*.php')