+ -
当前位置:首页 → 问答吧 → 这个shell脚本怎么写?

这个shell脚本怎么写?

时间:2011-09-14

来源:互联网

每次开机都要读取本机ip,掩码,网关。然后将读取的信息写进下面XML文件对应的位置。
<?xml version="1.0" encoding="utf-8" ?>
<settings>
  <setting name="SERVERIP" type="string" value="10.5.1.7" />
  <setting name="NETMASK" type="string" value="255.255.255.0" />
  <setting name="NETGATE" type="string" value="10.5.1.1" />
  <setting name="CLIENTIP" type="string" value="10.5.1.11" />
  <setting name="SIGNAL_OUTPUT_DISPLAY_MODE" type="enum" value="PAL">
  <values>
  <value name="PAL" />
  <value name="1080i" />
  </values>
  </setting>
  <setting name="SIGNAL_INPUT_DISPLAY_MODE" type="enum" value="PAL">
  <values>
  <value name="PAL" />
  <value name="1080i" />
  </values>
  </setting>
  <setting name="inputmode" type="enum" value="CVBS-XLR">
  <values>
  <value name="CVBS-XLR" />
  <value name="SDI" />
  </values>
  </setting>
</settings>

请问这个shell脚本该如何编写啊?

作者: go_gou   发布时间: 2011-09-14

本机信息用ifconfig输出就好了.
这个xml不大, 其实可以每次获取后,直接重新生成一个全新的覆盖.

倒省得查找又替换的.

作者: zmlovelx   发布时间: 2011-09-14

引用 1 楼 zmlovelx 的回复:

本机信息用ifconfig输出就好了.
这个xml不大, 其实可以每次获取后,直接重新生成一个全新的覆盖.

倒省得查找又替换的.

ip地址倒是容易获取,关键是这个XML不是由我生成的,这个XML文件研发那边给我的配置文件,定期还要更新,所以我没办法。实际上要查找替换的就是这三个地址:
<setting name="SERVERIP" type="string" value="10.5.1.7" />
  <setting name="NETMASK" type="string" value="255.255.255.0" />
  <setting name="NETGATE" type="string" value="10.5.1.1" />


麻烦看看,可有办法,谢谢了

作者: go_gou   发布时间: 2011-09-14

用 sed 替换字符串就行了

sed '/关键字/ c 替换内容'

作者: opps_zhou   发布时间: 2011-09-14

很简单啊,awk,用空格划分,然后
print $1" name=\""name"\" "$2" value=\""IP"\""

作者: qq120848369   发布时间: 2011-09-14

用sed也不错,给你个例子:

cat xml.file | sed -r 's/<(setting name=)".*"( type)/\1"today"\2/g'

这是换第一个,后边都类似的。

作者: qq120848369   发布时间: 2011-09-14

cat xml.file | sed -r 's/(<setting name=)".*"( type)/\1"today"\2/g'

写错了个地方。。

作者: qq120848369   发布时间: 2011-09-14