• 这个问题有没有什么简单的方法呢?


    ls /xx/yy/zz/
    account   bank   cost   fee   limit    payrule    rcms   remit    txq   user  ........
    bank    boss    cust    fin     notify    pos        ation    port     sett    trade   .........
    需求:
    执行这些目录下 service-*.sh 脚本(脚本最后一行是exit 0)时 自动拷贝执行脚本的脚本的父目录的全部内容到/aa/bb/backup/目录名+日期
    eg:sh /xx/yy/zz/account/service-account.sh ==> 拷贝 account 到 /aa/bb/backup/account`date +%Y%m%d`

    一种很low的办法就是每个脚本手动加入语句(并且每个脚本中加入的语句多不同)

    把下面语句加入所有的service-*.sh 语句中(所有脚本只需要加入同样的语句):

    SDIR=/xx/yy/zz
    DDIR=/aa/bb/backup
    dir=`find $SDIR -name "service-*.sh"|grep $0|awk -F'/' '{print $(NF-1)}'`
    #原本dir=`pwd|awk -F '/' '{print $NF}'`来取dir的,但是执行脚本的路径变了就不行了
    cp -a ${SDIR}/$dir ${DDIR}/${dir}`date +%Y%m%d`


    怎么循环把上面语句加入文件中呢?

    for file in `find /aa/bb/backup -name "service-*.sh"`
    do
    sed -i 's#exit 0#SDIR=/xx/yy/zz &#' $file
    sed -i 's#exit 0#DDIR=/aa/bb/backup/ &#' $file
    #sed -i 's#exit 0#dir=`find $SDIR -name "service-*.sh"|grep $0|awk -F'/' '{print $(NF-1)}'` &#' $file
    #sed -i 's#exit 0#cp -a ${SDIR}/$dir ${DDIR}/${dir}`date +%Y%m%d` &#' $file
    #上面这两句加入有问题。。。。

    #还是使用echo  'xxxx' >>$file  靠谱 (先用sed找到exit 0并注释,最后在加入exit 0)(sed -i 's%echo $0%#echo $0%g' $file)
    done

  • 相关阅读:
    jquery
    gulp 入门
    bower 教程
    webstrom管理git
    修改页面浏览器自动刷新
    兼容IE低版本
    js之触屏事件篇
    js之日期篇
    设置浏览器默认样式
    Listview四种视图VIEW
  • 原文地址:https://www.cnblogs.com/fanxuanhui-linux/p/5835981.html
Copyright © 2020-2023  润新知