1. 程式人生 > >記錄一下自己使用sed遇到的問題

記錄一下自己使用sed遇到的問題

由於寫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&amp&characterEncoding=utf8&autoReconnect=true"

執行之後就有問題了。如果要執行正常的話 MYSQL_CONNECTION_URL的值應該這樣:

MYSQL_CONNECTION_URL="jdbc\:mysql\:\/\/$MYSQL_IP_ADDRESS:3306\/mir-pack\?useUnicode\=yes\&amp\&characterEncoding\=utf8\&autoReconnect\=true"

需要把特殊字元進行轉義。