使用Sed搜索/插入配置文件时,遇到错误。是什么原因引起的,如何解决?
我要插入的Heredoc可以定义如下:
read -d '' APPLICATION_ENV_STATE <<'EOF'
defined('APPLICATION_ENV') || define('APPLICATION_ENV',(getenv('APPLICATION_ENV')
? getenv('APPLICATION_ENV') : 'production'));
EOF
虽然我的Sed命令使用如下变量:
sed -i "/\/\/ \*\* MySQL settings \*\* \/\//i$APPLICATION_ENV_STATE" wp-config.php
结果是:
sed: -e expression #1, char 1: unknown command: `?'
命令错误后除多余的字符。
但是,以下Heredoc可以工作,但是导致我的文本文件中的格式有些不美观:
read -d '' APPLICATION_ENV_STATE <<'EOF'
defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
EOF
我如何获得第一个示例?
AIUI,不是问题是问题,而是在不同时间了解哪个进程在做什么。
在运行sed
命令的脚本中,Bashsed
甚至在看到变量之前就将其替换。如果是多行字符串,则需要对进行转义sed
。在sed的手册页中,在i
命令下:
i \ Insert text, which has each embedded newline preceded by a back-slash.
就个人而言,我建议您使用cat
或echo(如果可以的话)(或像Python / Ruby / PHP这样的脚本编写语言)将模板分解为原子元素,以便您可以将相关部分简单地连接在一起。
但是,如果您确实希望继续使用当前方法,则至少需要用反斜杠换行符替换换行符,请尝试以下操作:
echo $APPLICATION_ENV_STATE | sed 's/$/\\/'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句