linux - Linux方括号真假
问题描述
为什么表达
[ 1 -eq 1 -a 1 -eq 2 ]
返回退出代码 1
虽然[ true -a false ]
没有?无论我如何结合真假,后者总是输出退出代码 0。我认为 true 和 false 是返回退出代码 0 或 1 的命令。如果是这样,为什么表达式不输出退出代码 1?我想知道这到底是如何工作的。谢谢你的帮助。我是 linux 新手,如果问题太基本,我很抱歉。谢谢。
解决方案
[ ... ] 是一个命令,它使用参数调用,你给它(这也是需要空格的原因)。如果你现在给它一个参数,它就会被评估:例如,如果你给它一个字符串文字[ test ]
,它会确定它是一个非空字符串并返回 0。如果你给它一个空字符串[ ]
,它将返回 1。真假这种情况也被视为文字字符串,因此它们都是非空的并返回 0。
有关更多信息,请阅读此问题
推荐阅读
- node.js - 节点 - gcm 发送静默通知
- javascript - jQuery 自动完成列表设置为 display:none;
- vb.net - 查询中的 LINQ 相等运算符错误
- php - 在 codeigniter 错误中切换语言
- node.js - Typescript 在运行时动态加载模块
- ably-realtime - ConnectionManager.onChannelMessage() 接收到的消息具有不同的connectionSerial,但与之前的消息ID 相同;丢弃
- xamarin.forms - CrossCurrentActivity.Current.Activity 为 NULL,尽管初始化和设置了活动
- python - 从 Matplotlib 集合中检索标记
- mysql - mysql脚本将查询输出作为输入添加到另一个查询
- javascript - 从网站在主机服务器上创建文本文件