我试图插入一个配置,用于获取我们网站的访问者(可能是)真实的IP,进入他们各自的wp-config.php,但我遇到了大量问题涉及的特殊人物。
我打算将这个添加到一个bash脚本中,该脚本可以快速启动新的Wordpress安装,但是我必须在每次安装后手动添加该行。
这是配置......
$_SERVER['REMOTE_ADDR'] = preg_replace('/^([^,]+).*$/', '\1', $_SERVER['HTTP_X_FORWARDED_FOR']);
wp-config.php的片段:
$table_prefix = 'wp_';
define('WPLANG', '');
/* That's all, stop editing! Happy blogging. */
我原本以为我可以在" define(' WPLANG','');"下的空格中插入配置。我已经完成了其他类似的工作......
find="define('WPLANG', '');"
replace="$_SERVER['REMOTE_ADDR'] = preg_replace('/^([^,]+).*$/', '\1', $_SERVER['HTTP_X_FORWARDED_FOR']);"
sed "s/$find\n\n/$find\n$replace/"
...但是特殊角色正在抛弃一切。我尝试了很多不同的引用和逃避方式,但我没有运气。
答案 0 :(得分:1)
您可以使用awk轻松完成此操作:
awk -vrep="$replace" '{print}/define.*WPLANG/{print RS rep}' wp-config.php
无条件打印每一行。当匹配“define”和“WPLANG”的行时,它还会打印shell变量$replace
的值,并在其前面添加换行符。
为了避免在bash中转义字符时出现问题,您可以将cat
与HEREDOC一起使用:
replace=$(cat <<'EOF'
$_SERVER['REMOTE_ADDR'] = preg_replace('/^([^,]+).*$/', '\1', $_SERVER['HTTP_X_FORWARDED_FOR']);
EOF
)
'EOF'
周围的单引号表示字符串中的字符按字面解释。