【发布时间】:2012-12-16 14:13:16
【问题描述】:
我正在使用下面的脚本将超过一天的文件移动到其他目录,我只是用echo 语句检查它是否工作正常。
for i in `ls -lhrt | grep TRACK`
do
for j in `$i | awk '{print $7}'`
do
if [[ $j -lt $((`date | awk '{print $3}'` - 1)) ]];
then echo $j less than $((`date | awk '{print $3}'` - 1))
fi
done
done
但是我看到了一些错误并且脚本运行不正常。如果我执行ls -lhrt | grep TRACK | awk '{print $7}',它可以正常工作并返回日期(数字字段)。
如果我像这样修改脚本:
for i in `ls -lhrt | grep TRACK | awk '{print $7}'`
do
if [[ $i -lt $((`date | awk '{print $3}'` - 1)) ]];
then echo $i less than $((`date | awk '{print $3}'` - 1))
fi
done
虽然效果很好。
我在原始脚本中遗漏的确切逻辑是什么?
【问题讨论】:
-
我很确定您可以使用
find和-mtime +1或-ctime +1选项来做到这一点。 -
@paul:没错。但我只是想知道这个特定脚本可能有什么问题。谢谢
-
我不确定您要完成什么,但您的
for j行正在尝试执行 $i 中的任何内容,并将其输出传递给 awk。我怀疑你打算回显 $i 并将其传递给 awk。
标签: linux shell unix scripting