【问题标题】:Linux square brackets true and false [duplicate]Linux方括号真假[重复]
【发布时间】:2020-09-11 23:29:43
【问题描述】:

为什么会这样表达

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

返回退出代码 1

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

【问题讨论】:

  • 因为真假都是非空字符串???
  • 顺便提一下,-athe POSIX standard for test 中被标记为“过时”,不应在新代码中使用。将多个单独的test 调用与&& 组合起来,如[ 1 -eq 1 ] && [ 1 -eq 2 ]

标签: linux shell terminal brackets square


【解决方案1】:

[ ... ] 是一个命令,它使用参数调用,你给它(这也是需要空格的原因)。如果你现在给它一个参数,那个参数会被计算:例如,如果你给它字符串文字[ test ],它会确定它是一个非空字符串并返回0。如果你给它一个空字符串[ ],它将返回1.本例中的真假也被视为文字字符串,所以它们都是非空的,返回0。

更多信息请阅读question

【讨论】:

  • 重复的问题应该被关闭,而不是回答。请参阅How to Answer 的“回答好问题”部分,尤其是其中关于“之前已被多次询问和回答”的问题的要点。
猜你喜欢
  • 1970-01-01
  • 2014-02-17
  • 2014-07-22
  • 2019-12-03
  • 2021-05-28
  • 2017-09-10
  • 2013-04-09
  • 1970-01-01
  • 2017-11-17
相关资源
最近更新 更多