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
为什么表达式
[ 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