我创建了一个shell脚本来遍历目录中的一些文件,解压缩它们,添加日期字段,将它们拉回来,然后将它们移动到hadoop文件系统。但是,当我运行脚本时,它似乎直接到下一行而不等待gunzip完成。如何告诉它在移动到下一行之前等待它完成?
FILENAME="/datatst/toproc/*"
for i in $FILENAME
do
echo "file name is: " $i
FILENAMEv2=$(basename "${i}" .gz )
echo "Stripped file name is: " $FILENAMEv2
DATEPART=$(echo $i| cut -d"." -f1| cut -d"-" -f2-)
echo "Datepart is: " $DATEPART
FileDir="/datatst/unzip/$FILENAMEv2"
echo "unzip directory file is: " $FileDir
echo "unzipping file..."
gunzip $i > -c $FileDir && trash $i
echo "unzipping done..."
echo "sed operation begin..."
sed -i 's/^/'$DATEPART' /g' $FileDir
echo "sed operation done..."
echo "zip operation begin..."
gzip $FileDir -c > /datatst/tomove/$i && trash $FileDir
su hadoop fs -put /datatst/tomove/$i /user/hdfs/
done
答案 0 :(得分:0)
我认为你应该尝试改变......
gunzip $i > -c $FileDir && trash $i
...到......
gunzip $i -c > $FileDir && trash $i
......我不确定trash
是什么。
根据用户*
的评论进行了更新