Linux方括号真假

Linux square brackets true and false

为什么表达式

[ 1 -eq 1 -a 1 -eq 2 ] 

returns 退出代码 1

[ true -a false ] 没有?无论我如何组合 true 和 false,后者总是输出 exitcode 0。我认为 true 和 false 是 return 退出代码 0 或 1 的命令。如果是这样,为什么表达式不输出退出代码 1?我想知道这到底是如何工作的。谢谢你的帮助。我是 linux 的新手,很抱歉这个问题太基础了。谢谢。

[ ... ] 是一个命令,使用您提供的参数调用(这也是为什么需要空格)。如果你现在给它一个参数,那个参数被评估:例如,如果你给它字符串文字 [ test ] 它确定它是一个非空字符串并且 returns 0。如果你给它一个空string [ ] 它将 return 1. True 和 false 在这种情况下也被视为文字字符串,因此它们都是非空的并且 return 0.

有关详细信息,请阅读此 question