bra*_*ito 47 bash message exit
是否可以使用消息退出错误,而不使用if语句?
[[ $TRESHOLD =~ ^[0-9]+$ ]] || exit ERRCODE "Threshold must be an integer value!"
Run Code Online (Sandbox Code Playgroud)
当然,右侧||
不起作用,只是为了让您更好地了解我想要完成的任务.
实际上,我甚至不介意它将退出哪个ERR代码,只是为了显示消息.
编辑
我知道这会有效,但如何numeric arg required
在我的自定义消息后抑制显示?
[[ $TRESHOLD =~ ^[0-9]+$ ]] || exit "Threshold must be an integer value!"
Run Code Online (Sandbox Code Playgroud)
P.P*_*.P. 54
exit
不会超过一个论点.要打印任何所需的消息,您可以使用echo
然后退出.
[[ $TRESHOLD =~ ^[0-9]+$ ]] || \
{ echo "Threshold must be an integer value!"; exit $ERRCODE; }
Run Code Online (Sandbox Code Playgroud)
kon*_*box 24
为方便起见,您可以使用一个功能:
function fail {
printf '%s\n' "$1" >&2 ## Send message to stderr. Exclude >&2 if you don't want it that way.
exit "${2-1}" ## Return a code specified by $2 or 1 by default.
}
[[ $TRESHOLD =~ ^[0-9]+$ ]] || fail "Threshold must be an integer value!"
Run Code Online (Sandbox Code Playgroud)
直接使用exit
可能会很棘手,因为脚本可能来自其他地方。我更喜欢使用 subshell set -e
(加上错误应该进入 cerr,而不是 cout):
set -e
[[ $TRESHOLD =~ ^[0-9]+$ ]] || \
(>&2 echo "Threshold must be an integer value!"; exit $ERRCODE)
Run Code Online (Sandbox Code Playgroud)