2014-08-29 25 views
0

我正在編寫一個bash腳本來簡化安裝。更改bash中xml文件中引號的值

我想用新值替換xml文件中的舊數據庫設置。 但我無法做到正確。

原始字符串:URL = 「的jdbc:神諭:薄:@localhost:1521:XE」

腳本:

read -e -p "Enter the ORACLE SID: " -i "orcl" ORACLE_SID_VALUE 
sed -i '/url="jdbc:oracle:thin:@localhost:1521:xe"/c\url="jdbc:oracle:thin:@localhost:1521:$ORACLE_SID_VALUE"' /home/server/tomcat/conf/Catalina/localhost/server.xml 

結果XML文件:URL =「的jdbc:神諭:薄: @localhost:1521:$ ORACLE_SID_VALUE「

任何人都可以幫我嗎?

+2

在這種情況下,sed可能適合您,但您應該考慮使用XML工具來執行此操作。如果你顯示你的XML的結構,有人可以告訴你如何做到這一點。 – 2014-08-29 07:28:02

+0

我願意提供建議。但主要的是它必須自動化。 – 2014-08-29 07:38:21

回答

1

單引號內的變量不讀爲變量。例如,echo '$a'將在終端上打印$a。但echo "$a"將在終端中輸出$a的值。

在這裏,我把你變單引號

sed -i '/url="jdbc:oracle:thin:@localhost:1521:xe"/c\url="jdbc:oracle:thin:@localhost:1521:'${ORACLE_SID_VALUE}'"' /home/server/tomcat/conf/Catalina/localhost/server.xml 

應該在外面工作,雖然沒有測試。

+0

感謝您的快速響應。但它不起作用。 – 2014-08-29 07:38:55

+0

你能告訴我,它給出了什麼結果? – nisargjhaveri 2014-08-29 07:43:52

+0

對不起,我錯了,它工作。非常感謝你。 – 2014-08-29 07:46:39

1

變量未在單引號中擴展。使用雙引號的變量:

sed -i '/url="jdbc:oracle:thin:@localhost:1521:xe"/c\url="jdbc:oracle:thin:@localhost:1521:'"$ORACLE_SID_VALUE"'"' \ 
    /home/server/tomcat/conf/Catalina/localhost/server.xml 
+0

感謝您的快速響應。但它不起作用。 – 2014-08-29 07:39:39

+0

@LarsGrotell:適合我。你確定你是否正確複製並粘貼了代碼? – choroba 2014-08-29 08:06:27

+0

對不起,我錯了,它的工作。非常感謝你。 – 2014-08-29 08:15:33