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

  

posted on 2024-02-02 15:02  dw2nn  阅读(16)  评论(0编辑  收藏  举报