shell用包含特殊字符的变量替换字符串

时间:2020-05-27 06:07:24

标签: string bash shell sed replace

我必须使用外壳程序从URL wp-config-sample.php检索到的秘密密钥中找到并替换Wordpress https://api.wordpress.org/secret-key/1.1/salt/中秘密密钥的默认值。

原始字符串:
define( 'AUTH_KEY', 'put your unique phrase here' );

替换字符串(示例):
define( 'AUTH_KEY', 'CA%c=@+l}j8uV%d6-LolGi~pFX(9Tqi+QwPjod:FRz0h.Hgi:OzG4/>MB,[17Lfd' );

我正面临sed: -e expression #1, char 2: unterminated `s' command,使用sed和以下代码将原始字符串替换为新字符串:

wp_salts=$(curl -s https://api.wordpress.org/secret-key/1.1/salt/)
wp_auth_key_old="define( 'AUTH_KEY',         'put your unique phrase here' );"
wp_auth_key_new=$(echo "${wp_salts}" | grep -w 'AUTH_KEY')
sed -i -e $(printf 's/"${%q}"/"${%q}"/g' "$wp_auth_key_old" "$wp_auth_key_new") /var/www/html/wp-sample-config.php


我尝试了很多方法,但由于替换字符串是动态的并且包含太多特殊字符,因此总是会出错。

此外,此功能也不起作用:
sed -i -e "s/\"$wp_auth_key_old\"/\"$wp_auth_key_new\"/g" /var/www/html/wp-sample-config.php

也不是这个:
sed -i -e "s/${wp_secret_key_old}/${wp_secret_key_new}/g" /var/www/html/wp-sample-config.php

0 个答案:

没有答案
相关问题