記錄一下自己使用sed遇到的問題
阿新 • • 發佈:2019-02-15
由於寫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"
需要把特殊字元進行轉義。