PHP的preg_quote等价于Bash?

时间:2011-06-03 19:29:38

标签: php bash sed

我很难尝试使用sed工作来应用下面的替换操作。

SALT=$(curl -L https://api.wordpress.org/secret-key/1.1/salt/)
#SALT='test' #this of course works fine
#echo $SALT
sed -i "s/salt_here/$SALT/g" wp-config.php

在文件“wp-config.php”中有一行带有“salt_here”(没有引号)。但是,$ SALT变量有很多垃圾,所以我收到了这个错误:

sed: -e expression #1, char 78: unknown option to `s'

有没有办法逃脱变量中的所有垃圾(就像php的http://php.net/preg_quote

更新

这是我能得到的最好的:

SALT=$(curl -L https://api.wordpress.org/secret-key/1.1/salt/ | sed 's/\(\/\|\\\|&\)/\\&/g')
SALT1=`/usr/bin/php << EOF
<?php echo preg_quote("$SALT"); ?>
EOF`
#echo "$SALT1"
cp '/home/public_html/zz_f/wp-config.php' '/home/public_html/zz_f/wp-config_t.php'
sed -i "s/salt_here/$SALT1/g" wp-config.php

但仍有错误:

PHP Parse error:  syntax error, unexpected '>', expecting T_VARIABLE or '$' in - on line 3
sed: -e expression #1, char 12: unterminated `s' command

2 个答案:

答案 0 :(得分:0)

使用sed引用它。

SALT=$(curl -L https://api.wordpress.org/secret-key/1.1/salt/ | sed 's/\(\/\|\\\|&\)/\\&/g' )

答案 1 :(得分:0)

我正在编写一个bash脚本来自动化wp installs&amp;&amp;我也坚持这个问题。

我注意到的一件事是你可能想尝试这个:

sed -i 's/salt_here/'$SALT'/g' wp-config.php

我也遇到了传递变量的问题,但是在变量周围添加引号似乎可以消除该问题[注意:不是sed或bash专家,所以不确定这将如何翻译w /双引号.. ]