在bash (online)中显示错误消息退出



是否有可能在错误时退出,并伴有消息而不使用if语句 ?

[[ $TRESHOLD =~ ^[0-9]+$ ]] || exit ERRCODE "Threshold must be an integer value!"

当然,||的右边不起作用,只是为了让你更好地了解我想要完成的任务。

实际上,我甚至不介意它退出哪个ERR码,只是为了显示消息。

编辑

我知道这将工作,但如何抑制numeric arg required显示在我的自定义消息之后?

[[ $TRESHOLD =~ ^[0-9]+$ ]] || exit "Threshold must be an integer value!"

exit不接受多于一个参数。要打印任何您想要的消息,您可以使用echo,然后退出。

    [[ $TRESHOLD =~ ^[0-9]+$ ]] || 
     { echo "Threshold must be an integer value!"; exit $ERRCODE; }

您可以使用辅助函数:

function fail {
    printf '%sn' "$1" >&2 ## Send message to stderr.
    exit "${2-1}" ## Return a code specified by $2, or 1 by default.
}
[[ $TRESHOLD =~ ^[0-9]+$ ]] || fail "Threshold must be an integer value!"

函数名可以不同

直接使用exit可能会很棘手,因为脚本可能来自其他地方。我更喜欢使用set -e的subshell(加上错误应该进入cerr,而不是cout):

set -e
[[ $TRESHOLD =~ ^[0-9]+$ ]] || 
     (>&2 echo "Threshold must be an integer value!"; exit $ERRCODE)

如果只是回显文本,然后退出:

echo "No Such File" && exit

相关内容

  • 没有找到相关文章

最新更新