shell脚本开头加上set -e命令后,在运行过程中如果出现返回值为非零,整个脚本就可以立刻退出。
假如脚本中有if判断, 很可能if条件的返回值是不为0的。一开始我是把hadoop fs -test -d $hdfs_folder单独写一行的,由于folder不存在,所以脚本直接退出。所以遇到这种情况,需要把有可能是结果返回非0的命令,作为if的条件语句来判断,从而避免和set -e冲突的情况发生。
#!/bin/bash
filename=file.txt
set -e
while read table_row
do
if (hadoop fs -test -d $hdfs_folder)
then
echo "folder $hdfs_folder to be deleted."
hadoop fs -rm -r -skipTrash $hdfs_folder
if [ $? -ne 0 ]
then
echo "$path unable to be deleted."
exit 1
fi
else
echo "folder $hdfs_folder not exist."
fi
done < $filename
浙公网安备 33010602011771号