为什么在双与号(&&)退出且值为非零的命令中,ERR陷阱不能用于命令

时间:2019-11-07 10:46:22

标签: bash shell

我知道您可以使用set -etrap 'exit' ERR捕获失败命令,但是当我尝试

trap 'exit' ERR

true && echo "from true"
false && echo "from false"
echo "end"

我明白了

#result
from true
end

#what I want
from true

我知道我可以做这样的事情

true && echo "from true" || exit 1
false && echo "from false" || exit 1

但是我必须使用&&

的每一行来做

1 个答案:

答案 0 :(得分:1)

通过退出的函数在脚本中重新定义echo

echo () {
    builtin echo "$@"
    exit 1
}

如果您需要echo,而某处没有exit,则将该函数重命名为echexit或其他名称,然后在适当的地方使用它。