如何让Shell脚本以exit 0成功退出(即使HQL脚本执行失败)
让Shell脚本在HQL执行失败时仍成功退出的方法
当然可行啦!有几种简单的方法可以实现这个需求,让你的Shell脚本即便HQL执行失败也能成功退出:
方法一:使用
|| true忽略HQL命令的失败
直接在hive命令后面加上|| true,当HQL脚本执行失败返回非零退出码时,true命令会被执行(它的退出码始终是0),这样整个命令行的退出码就会变为0,Shell脚本也就会成功退出。修改后的脚本如下:#!/bin/bash cd /path/ hive -f hive_script.hql || true方法二:强制脚本返回0退出码
如果不管前面的命令(包括cd或者hive)是否失败,都想让脚本最终成功退出,可以在脚本末尾直接加上exit 0:#!/bin/bash cd /path/ hive -f hive_script.hql exit 0不过这种方法会忽略所有前面命令的失败,如果你只想针对HQL执行失败的情况,方法一更精准。
进阶:记录错误信息同时保证脚本成功退出
要是你还想在HQL执行失败时记录错误提示,又不影响脚本的成功退出,可以用花括号把错误处理逻辑包起来:#!/bin/bash cd /path/ hive -f hive_script.hql || { echo "注意:hive_script.hql执行失败了,但Shell脚本将正常退出" >&2 true }这里
>&2是把错误提示输出到标准错误流,方便后续排查问题时区分正常日志和错误信息。
内容的提问来源于stack exchange,提问作者Santhosh Chakka
相关产品推荐
相关产品推荐

