在shell脚本

时间:2016-08-10 10:15:03

标签: bash shell sh embedded-linux busybox

我必须在shell脚本中处理两个信号,即EXITSIGTERM, 现在我在我的剧本中按照以下方式处理它 它工作正常,但我想知道是否有更好的方法吗? 不知怎的,我觉得trap '' EXIT如果elif不正确,这样可以吗?

此脚本将在具有busybox shell(ash)而非bash shell

#!/bin/sh -eu ERROR_MESSAGE="" SIGNAL_TYPE="" handle_error() { if [ "${SIGNAL_TYPE}" = "EXIT" ];then if [ ! -z "${ERROR_MESSAGE}" ];then echo "Inside handle_error():${ERROR_MESSAGE}" exit 1 fi echo "Normal exit" elif [ "${SIGNAL_TYPE}" = "SIGTERM" ];then echo "Aborted by SIGTERM signal" trap '' EXIT exit 1 fi } trap 'SIGNAL_TYPE="EXIT";handle_error' EXIT trap 'SIGNAL_TYPE="SIGTERM";handle_error' SIGTERM ERROR_MESSAGE="Error inside whileloop" count=1000 while [ true ];do count=$(( count - 1 )) echo "Inside while count=${count}" [ "${count}" -eq 0 ] && break sleep 2 done ERROR_MESSAGE="" exit 0

任何建议/指针都会帮助我解决这个问题。

0 个答案:

没有答案