shell脚本,执行时并修改指定目录下文件内容

1.shell脚本目前内容

图片说明

2.要修改的配置文件目录:/opt/FounderETL/batch/etl/config

3.配置文件名称:setting.properties

4.配置文件内容:mqo_queue_name=IN.BS320.LQ

图片说明

5.要求,图1中
执行BS320时,修改配置文件为:IN.BS320.LQ
执行BS366时,修改配置文件为:IN.BS366.LQ
执行BS368时,修改配置文件为:IN.BS368.LQ

6.疑问,是否可在一个脚本中实现,如不可以,拆分为三个脚本?
请各位大佬附上代码,留下邮箱,方便沟通啊?

已自行解决,谢谢各位大神的热心帮助

在你这个shell中,加上这么一句,把$0传入的参数当做值,写入setting.properties里面。

sed -i "s/\(mqo_queue_name=\)\S*/\1$0/" /opt/FounderETL/batch/etl/config/setting.properties

然后调用shell的时候,./aa.sh IN.BS320.LQ 最后这个参数按照你的需要执行的时候变化着传,不知道能满足你不

你把&&用if的形式替换,
$?可以判断程序是否正常执行,如果非0,则执行下一个命令。
每个命令执行前用楼上的方法修改一下文件。
也可以试着封装一下替换命令和你的执行命令 并传递一个参数。

sed -i 's/(mqo_queue_name=).*/\1IN.BS320.LQ/g' /opt/FounderETL/batch/etl/config/setting.properties
cmd1
if [ $? -ne 0 ];then
sed -i 's/(mqo_queue_name=).*/\1IN.BS366.LQ/g' /opt/FounderETL/batch/etl/config/setting.properties
cmd2
if [ $? -ne 0 ];then
sed -i 's/(mqo_queue_name=).*/\1IN.BS368.LQ/g' /opt/FounderETL/batch/etl/config/setting.properties
cmd3
fi
...
fi