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 \n&#‘ $file
sed -i ‘s#exit 0#DDIR=/aa/bb/backup/ \n&#‘ $file
#sed -i ‘s#exit 0#dir=`find $SDIR -name "service-*.sh"|grep $0|awk -F‘/‘ ‘{print $(NF-1)}‘` \n&#‘ $file
#sed -i ‘s#exit 0#cp -a ${SDIR}/$dir ${DDIR}/${dir}`date +%Y%m%d` \n&#‘ $file
#上面这两句加入有问题。。。。
done