我正在努力使sed工作來應用替代操作以下波紋管。PHP的preg_quote等價於Bash?
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)
UPDATE內所有的垃圾:
這是最好的,我可以得到:
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的價值。 – 2011-06-03 19:43:01
也許這有助於:http://stackoverflow.com/questions/407523/bash-escape-a-string-for-sed-search-pattern – hakre 2011-06-03 19:46:48
我的錯誤:它現在在雙引號內。 – Roger 2011-06-03 20:04:44