注意:这不是In bash的副本,是否有 die "error msg" 的等价物,如本文末尾所示。
考虑shell函数
foo () {
echo "testing..." 1>&2
return 1
echo "should never reach this point" 1>&2
}
下面显示了foo
的预期行为:
% foo || echo $?
testing...
1
我想将前两行中显示的功能封装foo
在一个函数die
中,以便可以将定义foo
简化为
foo () {
die 1 "testing..."
echo "should never reach this point" 1>&2
}
...同时仍保留其原始行为。
我的兴趣主要是zsh
,但也会对适合bash
和/或/bin/sh
脚本的答案感兴趣,如果它们不同的话。
顺便说一句,这不起作用:
die () {
local exit_code=$1
shift
echo "$*" 1>&2
exit $exit_code
}
如果从命令行运行一个foo
使用 this的版本die
,结果将是杀死一个人当前的 shell(至少这是我尝试类似的东西时得到的结果)。这就是为什么这个问题不是In bash, is there an equivalent of die "error msg"的重复。无论如何,其他问题的答案不会满足我在这里的要求。