我必须创建一个脚本来替换 apachehttpd.conf
文件中的几行。我有2个问题。首先,如何将多行保存到一个变量中?我试过这个,但它没有用
replace="#ErrorLog "logs/error_log" '\n' ErrorLog "|<apache_location>/bin/rotatelogs <apache_location>/logs/error.%Y.%m.%d.log 86400"
'\n'
无法添加换行符。然后我的想法是像这样使用sed (1) :
sed -i "s#ErrorLog "logs/error_log"#$replace#g" $apache_httpd
我不知道这是否会奏效。
我能够用几行创建变量:
VAR="#ErrorLog \"logs/error_log\""
VAR="$VAR"$'\n'"ErrorLog \"|<apache_location>/bin/rotatelogs <apache_location>/logs/error.%Y.%m.%d.log 86400\""
replace="ErrorLog \"logs/error_log\""
现在问题出现在 sed 上,我不得不使用不同的分隔符(http://backreference.org/2010/02/20/using-different-delimiters-in-sed/)。但它一直失败。
sed -i "s;$replace;$VAR;g" /root/daniel/scripts/test3/httpd.conf
sed: -e 表达式 #1, char 54: 未终止的 `s' 命令