从bash更改xml文件中的引号内的值

时间:2014-08-29 07:20:16

标签: xml bash sed

我正在编写一个bash脚本来简化安装。

我想用新值替换xml文件中的旧数据库设置。 但我没有设法做到这一点。

原始字符串:url =" jdbc:oracle:thin:@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:oracle:thin:@localhost:1521:$ ORACLE_SID_VALUE"

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

虽然没有经过测试,但应该有效。