我在工作中遇到这样一个需求:运行于glassfish中的某个ear需要一个system property(对应于domain.xml中的配置),该property的值是当前机器的ip地址。由于我的机器每次重新启动被分配的ip是不同的,而我不想每次都手动先ifconfig取得ip地址再手工替换配置文件的内容,所以就想用shell脚本来实现该功能。
先看最终脚本的样子:
1 | cd /home/me/java/glassfish/domains/domain1/config |
依次解释:
第一行:就是切换目录,没什么说的;
第二行:取得当前时间的格式化字符串,如“20100722-122409”;
第三行:备份当前的domain.xml文件;
第四行(技术含量较高):从执行ifconfig命令的结果中取得当前ip地址,赋值给ip变量(我使用的是中文ubuntu所以ifconfig结果中也是中文:-));
第五行(技术含量最高):用sed命令,在domain.xml中查找之前已经有ip的内容,替换为当前ip的内容(由于在我机器上ip再变也只是最后一节的变化,所以正则表达式中前三节的内容都是固定的)。