bash-set -e和短期测试
当我是新的shell脚本,我使用了很多简短的测试,而不是if语句,如false&&真正。
后来我学会了使用set -e,发现我的脚本由于某种原因而死亡,如果我用完整的if语句替换了短测试,它们会工作。现在,时间已经过去了,我仍然使用完整的if语句。 最有趣的是,如果我打开一个交互式shell并执行以下操作: set -e false && true echo $? 它返回1但是shell不会死! 我看到我一直在浪费太多的代码行。任何人都可以向我解释如何安全地使用set -e与短测试,例如。没有脚本死吗?
Single UNIX Specification描述了set -e的效果:
如您所见,AND列表中的失败命令不会使shell退出。 使用set -e 使用set -e启动shell脚本被认为是最佳实践,因为如果出现某些错误,通常会更安全地中止脚本。如果一个命令可能无害化,我通常会追加||真的 这是一个简单的例子: #!/bin/sh set -e # [...] # remove old backup files; do not fail if none exist rm *~ *.bak || true (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |