背景:项目中批量执行hbase shell无法获取到执行状态
方案:将每一行代码弄成文件,单独执行,获取每次执行的状态码,非0直接退出。
#!/bin/bash
dir=$(cd "$(dirname "$0")" && pwd)
#hbase命令文件,使用参数传入进来,文件为绝对路径,如: /test/hbase_command_list.txt
hbase_command_file=$1
tmp_hbase_file=$dir/tmp_file.txt
if [ ! -f $hbase_command_file ];then
echo "error: hbase command file $hbase_command_file is not exists!"
exit 1
fi
while read line;do
if [ -z "$line" ];then
continue
fi
echo -e "$line\nexit" > $tmp_hbase_file
#echo -e "\nexit" >> $tmp_hbase_file
hbase shell $tmp_hbase_file
exec_status=$?
if [ $exec_status != 0 ];then
echo "exec command: [ "$line" ] is failed"
exit $exec_status
fi
done < $hbase_command_file
rm -f $tmp_hbase_file