【发布时间】:2011-09-08 01:45:07
【问题描述】:
我很难让 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
【问题讨论】:
-
这不可能与 sed 表达式周围的单引号一起使用。 Bash 不会替换 $SALT 的值。
-
我的错误:它现在在双引号内。