`return -1 || exit -1` 的意思是什么?

7

我对别人写的以下bash命令行感到困惑:

return -1 || exit -1

这是什么意思?我理解||构造意味着如果第一部分(在这种情况下,return -1)失败(即返回非零代码),那么第二部分(exit -1)将得到执行。另外奇怪的是,这个语句不是任何函数的一部分,而是在脚本的主体中。
感谢有人能向我解释这个。
1个回答

9
在这里,return是一个技巧,用于在脚本被source执行时退出,而exit通常会退出shell。
因此,以上条件实质上是为了从脚本的执行循环中退出,无论它是被source执行还是直接执行。
另外请注意,在bash中不支持负的返回值。在两种情况下,你都会得到退出状态码255,而不是-1。

3
可能还需要注意的是,负面状态码通常不正确或不受支持。 - tripleee
退出状态为“-1”只是未定义的;实现不必将其视为8位值或清除任何高位。 - chepner
这是符合POSIX标准的行为(参见return - 包括在Bash中被“.”点化(也称为sourced)时的行为。另请参见exit - Jonathan Leffler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接