エラーで終了することはできますか?without using ifステートメントを使用して?
[[ $TRESHOLD =~ ^[0-9]+$ ]] || exit ERRCODE "Threshold must be an integer value!"
もちろん、||
の右側は機能しません。私が達成しようとしていることをよりよく理解するためです。
実際、メッセージを表示するためだけに、どのERRコードで終了するかは気にしません。
[〜#〜] edit [〜#〜]
これが機能することはわかっていますが、カスタムメッセージの後に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 error_exit {
echo "$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]+$ ]] || error_exit "Threshold must be an integer value!"
exit
を直接使用することは、スクリプトが他の場所から供給される可能性があるため、注意が必要です。私は代わりにset -e
でサブシェルを使用することを好みます(さらにエラーはcoutではなくcerrに入るべきです):
set -e
[[ $TRESHOLD =~ ^[0-9]+$ ]] || \
(>&2 echo "Threshold must be an integer value!"; exit $ERRCODE)