【发布时间】:2012-09-13 11:44:25
【问题描述】:
我有一个名为 config.xml 的 xml 配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<server-ip>192.168.1.45</server-ip>
<server-port>1209</server-port>
<repository-temp-path>/home/john</repository-temp-path>
</config>
我有一个 shell 脚本,用 $1,$2,$3 配置“server-ip”、“server-port”和“import-path”的值:
#!/bin/sh
if [ $# -ne 3 ];then
echo "usage: argument 1:IP_Address 2:Server_PORT 3:Temp_PATH"
exit 1
fi
IP=$1
PORT=$2
DIRT=$3
echo "Change values in config.xml..."
sed "s/<server-ip>.*<\/server-ip>/<server-ip>$IP<\/server-ip>/;s/<server-port>.*<\/server-port>/<server-port>$PORT<\/server-port>/;s/<repository-temp-path>.*<\/repository-temp-path>/<repository-temp-path>$DIRT<\/repository-temp-path>/" config.xml > config2.xml
echo "Done."
但它只适用于“$ ./abc.sh abc”,不适用于“$ ./abc.sh 192.168.1.6 9909 /home/bbb"....你能帮忙让它工作并最终得到一个更好的解决方案吗?
【问题讨论】:
-
XSLT 将是一个更好的方法。像 xsltproc 这样的东西不可用吗?
-
我发现它适用于两个反斜杠:“$ ./abc.sh 192.168.1.6 9909 \\/home\\/bbb”,但仍然不适用于:“$ ./abc. sh 192.168.1.6 9909 $HOME\\/bbb"
-
@ziesemer,是的,但我不熟悉它。你能提供.xsl吗?谢谢。
标签: xml shell scripting sed awk