Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress Bash将带有特殊字符的配置插入wp-config.php_Wordpress_Bash_Replace_Sed_Scripting - Fatal编程技术网

Wordpress Bash将带有特殊字符的配置插入wp-config.php

Wordpress Bash将带有特殊字符的配置插入wp-config.php,wordpress,bash,replace,sed,scripting,Wordpress,Bash,Replace,Sed,Scripting,我试图将一个用于获取(大概是)我们网站访问者真实IP的配置插入到他们各自的wp-config.php中,但我遇到了涉及大量特殊字符的问题 我计划将它添加到一个bash脚本中,以快速启动新的Wordpress安装,但实际上,我必须在每次安装后手动添加该行 这是配置 $_SERVER['REMOTE_ADDR'] = preg_replace('/^([^,]+).*$/', '\1', $_SERVER['HTTP_X_FORWARDED_FOR']); wp-config.php的一个小漏洞:

我试图将一个用于获取(大概是)我们网站访问者真实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. */ 
我原本以为我可以像处理其他类似任务一样,使用sed在“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/"

…但这些特殊角色正在抛弃一切。我尝试过许多不同的引用和逃避方式,但我没有任何运气

使用awk,您可以轻松做到这一点:

awk -vrep="$replace" '{print}/define.*WPLANG/{print RS rep}' wp-config.php
这会无条件地打印每一行。当包含“define”和“WPLANG”的行匹配时,它还会打印shell变量
$replace
的值,前面有一个换行符

为了避免bash中转义字符的问题,可以将
cat
与herdoc一起使用:

replace=$(cat <<'EOF'
$_SERVER['REMOTE_ADDR'] = preg_replace('/^([^,]+).*$/', '\1', $_SERVER['HTTP_X_FORWARDED_FOR']);
EOF
)

replace=$(cat I必须避开括号,但它仍然可以完美工作。谢谢