泡le沫
2018-12-20 12:04
采纳率: 90.9%
浏览 4.9k

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 泡le沫 2018-12-28 02:12
    已采纳

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

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 三阶魔方 2018-12-20 09:11

    在你这个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 最后这个参数按照你的需要执行的时候变化着传,不知道能满足你不

    评论
    解决 无用
    打赏 举报
  • eagle1024 2018-12-20 13:42

    你把&&用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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题