bash中的“ -ne”是什么意思?


70

bash脚本中的命令“ -ne”是什么意思?

例如,bash脚本的以下行做什么?

[ $RESULT -ne 0 ] 


2
它检查是否$RESULT“等于”0
潜伏

8
这是数字不等式;!=是字符串不等式。
基思·汤普森

6
这并不意味着“ b”。[运行名为的命令test-netest命令的参数,而不是bash,您可以在中找到其文档man test
查尔斯·达菲

2
顺便说一句,这是有问题的,因为您没有使用引号。它必须[ "$RESULT" -ne 0 ]至少是-或更好(( RESULT != 0 ))。(更好的是-如果要从中获取此信息$?,则可以直接在直接运行的命令的退出状态上分支,而不是运行它,而是将其退出状态捕获到变量中,然后替换该变量的值变成test命令)。
查尔斯·达菲

Answers:


98

如果您不知道在哪里看,这是很难搜索的事情之一。

[实际上是一个命令,而不是您期望的bash shell语法的一部分。它恰好是Bash内置命令,因此已在Bash手册中进行了说明。

还有一个外部命令可以执行相同的操作。在许多系统上,它是由GNU Coreutils软件包提供的。

[等效于test命令,除了[需要]作为最后一个参数,而test并非如此。

假设bash文档已安装在您的系统上,如果键入info bash并搜索'test''['(撇号是搜索的一部分),您将找到该[命令(也称为命令)的文档test。如果使用man bash而不是info bash,请搜索^ *testtest行开头的单词,后跟一些空格)。

在引用“ Bash条件表达式”之后,将带您到的描述-ne,它是数字不等式运算符(“ ne”代表“不等于”。相反,!=字符串不等式运算符)。

您也可以在网上找到bash文档。

该命令的正式定义test是POSIX标准(bash实现应相当好地遵循它,也许还会有一些扩展)。


我倾向于建议POSIX文档而不是coreutils文档。test毕竟是POSIX命令。
Charles Duffy 2013年

53

“不等于”因此在这种情况下,$RESULT被测试为不等于零。

但是,测试是按数字进行的,而不是按字母顺序进行的:

n1 -ne n2     True if the integers n1 and n2 are not algebraically equal.

相比:

s1 != s2      True if the strings s1 and s2 are not identical.

1
指出数字比较和字符串比较之间的区别的好处...这很容易忽略
dreftymac
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.