for i in `cat ${WORKPATH}list` do FILENAME=`echo $i|awk -F- '{print $3"-"$4}'|awk -F. '{print $1}'` APM=`echo $i|awk -F- '{print $1}'` cp ${WORKPATH}${FILENAME}".log" ${BACKPATH}${FILENAME}"_"${DATE}"_"${APM}.log done
#echo END========
经过反复测试发现ls -l *.log|awk '{print $7"-"$8}'|awk -F: '{if($1 <= 12) {print"AM-" $2} else {print "PM-" $2}}'>${WORKPATH}list在这里倒进来的list文件里面的东西不符合,和预期的不一样,继续研究吧
后来单独执行了一个脚本为(这里把路径改成了绝对路径): ls -l /beaprj/dailyreport/log/*.log | awk -F"/" '{print $1"-"$5}'>/beaprj/dailyreport/log/list 执行结果list里面为-rwxrwxrwx 1 root root 1314 11-18 08:57 -EMIS-APP1.log 但是这个脚本在crontab里面执行结果为: -rwxrwxrwx 1 root root 1314 Nov 18 08:57 -EMIS-APP1.log 仔细看红色部分,这样执行完的后如果加上awk '{print $7"-"$8}那样显示的结果就不一样了,我也没弄明白为什么crontab与外面不一样,请高手指点,但是把上面的awk改成awk '{print $8"-"$9},crontab就会正常运行了,但是正常情况下就会有报错。 到此问题解决
问题总结:这里应该不是绝对路径的问题,问题出在用ll看文件属性的时候外界显示11-18但是crontab里面执行就会显示Nov 18 就这么简单
本文出自 “summit” 博客,请务必保留此出处http://786678398.blog.51cto.com/2082557/720201