由于写shell脚本使用sed替换某些配置文件,所以使用到了sed命令:(下面是整行替换,只是头部一样所以看起来像替换‘=’后面的值)
sed -i "s/^mir.sdk.jdbc.url=.*/mir.sdk.jdbc.url=$MYSQL_CONNECTION_URL/g" /usr/local/tomcat/webapps/mir-pack/WEB-INF/mir-pack.conf
初步看这命令没有毛病,但是仔细一看$MYSQL_CONNECTION_URL 这个值里面如果存在sed 保留字符,问题就来了。如果MYSQL_CONNECTION_URL是定义为如下:
MYSQL_CONNECTION_URL="jdbc:mysql://$MYSQL_IP_ADDRESS:3306/mir-pack?useUnicode=yes&&characterEncoding=utf8&autoReconnect=true"
执行之后就有问题了。如果要运行正常的话 MYSQL_CONNECTION_URL的值应该这样:
MYSQL_CONNECTION_URL="jdbc\:mysql\:\/\/$MYSQL_IP_ADDRESS:3306\/mir-pack\?useUnicode\=yes\&\&characterEncoding\=utf8\&autoReconnect\=true"
需要把特殊字符进行转义。
转载请注明原文地址: https://ju.6miu.com/read-300136.html