我正在编写一个脚本,用于将文件从一个目录下的文件夹复制到一个公共位置。为此,我需要遍历目录中的文件夹。文件夹是日期的,所以我使用的是小于和大于。但我无法进入循环。能告诉我我的代码有什么问题吗。
#!/usr/bin/ksh
SCRIPT_DIRECTORY='/abc/script'
DATA_DIRECTORY='/a/inbox'
TARGET_DIRECTORY='/abc/final'
START_DATE=$2
END_DATE=$3
if [ $1 == 'a' ]
then
while [[ $2 -gt 20151201 ]] && [[ $3 -lt 20151231 ]]
do
for file in `ls $DATA_DIRECTORY`
do
cp name* $TARGET_DIRECTORY
done
done
fi
此处/ / inbox目录下的文件夹是从20151201到20151231开始的日期。所以我需要从name开始获取所有文件到公共目标目录 我也试图把它作为一个脚本,如果我传递像a,b,c这样的参数,它将转到相应的数据目录并从那里获取文件
答案 0 :(得分:0)
您的while
声明错误。写得像这样:
while (($2 > 20151201 && $3 < 20151231))
请同时验证,$ 1,$ 2和$ 3确实包含您期望的值。
答案 1 :(得分:0)
尝试这个(我已经尝试了它并且有效)
if [ $1 == 'a' ]
then
# use ls $DATA_DIRECTORY as mentioned by you; i could not bring it here
for file in
ls $ DATA_DIRECTORY
do
if [ $file -ge 20151201 -a $file -le 20151231 ]; then
cp $DATA_DIRECTORY/$file/* $TARGET_DIRECTORY
fi
done
fi
您只需要一个循环进行迭代,并在循环中移动了日期检查(如果条件)。我使用-ge
代替-gt
,因为它看起来像是一些月度数据。也许你可以适应你的需要。希望它有所帮助。