gpt4 book ai didi

shell - 使用 Set -e ,如何为一个命令设置异常

转载 作者:行者123 更新时间:2023-12-05 02:14:12 25 4
gpt4 key购买 nike

在shell脚本中使用set -e可以让进程如果其中一个命令以非零状态退出,则立即退出

但是,如果我想排除一个命令,那么如果该特定命令以非零值退出,该过程将继续。

最佳答案

第一条规则,不要使用set -e。第二条规则,参见规则 1。 set -e 的实现在边缘情况下有奇怪的行为,并且在不同版本的 shell 中发生了变化。不使用它是最安全的。但是,您可以通过使您的命令成为复合命令的一部分来简单地抑制它。也就是说,而不是

cmd_which_may_fail

你可以简单地做:

cmd_which_may_fail ||真

现在,如果 cmd_which_may_fail 确实失败,脚本将不会退出。

请注意,有时很想(您经常会看到执行此操作的代码)执行类似 cmd_which_may_fail || 的操作echo '命令失败! >&2,但你真的不应该那样做。相反,允许 cmd_which_may_fail 发出合理的错误消息(最常见的命令会这样做,如果你有一个命令不会发出好的错误消息,你可能想要重新考虑使用它),因为那进程将具有上下文并且可以编写有用的错误消息。 Command failed 通常被认为是无用的错误消息。

关于shell - 使用 Set -e ,如何为一个命令设置异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53860229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com