bash – 如果脚本有出口陷阱发生shell错误,则将退出代码传播给调
发布时间:2020-12-15 21:51:45 所属栏目:安全 来源:网络整理
导读:如果带有EXIT陷阱的 Bash脚本中出现语法错误,是否可以将退出代码传播给调用者?例如,如果我有: #! /bin/bashset -eutrap "echo dying!!" EXITecho yeahecho $UNBOUND_VARIABLEecho boo 然后,即使脚本没有真正成功结束,运行它也会提供退出代码0: $bash test
如果带有EXIT陷阱的
Bash脚本中出现语法错误,是否可以将退出代码传播给调用者?例如,如果我有:
#! /bin/bash set -eu trap "echo dying!!" EXIT echo yeah echo $UNBOUND_VARIABLE echo boo 然后,即使脚本没有真正成功结束,运行它也会提供退出代码0: $bash test.sh yeah test.sh: line 8: UNBOUND_VARIABLE: unbound variable dying!! $echo $? 0 但是如果我注释掉退出陷阱,脚本将返回1.或者,如果我使用返回非零的命令(例如/ bin / false)替换未绑定变量的行,则该退出值将按照我希望的方式传播. 解决方法
shell以最后执行的命令的结果退出.在你的陷阱案例中,那是回声,通常会成功返回.
要传播您的值,只需退出即可. #!/bin/bash set -eu die() { echo "Dying!!" exit "$1" } trap 'die $?' EXIT echo yeah echo $unbound echo boo 另请注意,set -e被认为是有害的 – 它会让您认为如果命令失败,脚本将会退出,而这并不总是如此. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读