在 Bash 中,我希望能够编写如下内容:
tst() {
[ -z "$1" ] && die "No parameters provided!"
# do whatever
}
但我不能die
这样定义:
die() {
echo "$*"
exit 1
}
因为如果我的测试函数正在我当前的 shell 中运行(例如. ./file-with-function
),那么它会中止我当前的会话。我真正想要它做的是更多类似的事情:
tst() {
[ -z "$1" ] && echo "No parameters provided!" && return
}
但我想在单个函数调用中执行 echo 和 return 。有一个聪明的方法来做到这一点吗?
有关技巧的解释,请参阅如何检测是否正在获取脚本
[[ ${BASH_SOURCE[0]} == $0 ]]
。该函数返回在当前上下文中应该调用的内容,因此您必须以特殊的方式调用它: