`[ EXPRESSION ], [ ] 和 [OPTION` 在 `man test` 中是什么意思?

Shu*_*eng 9 test

检查man test,我看到在概要下test是可能性test EXPRESSION和test。

[ EXPRESSION ], [ ] and [OPTION下面是什么意思?

为什么括号是空的,为什么没有[OPTION括号?有人可以为我解释一下吗?

NAME
       test - check file types and compare values

SYNOPSIS
       test EXPRESSION
       test

       [ EXPRESSION ]
       [ ]
       [ OPTION
Run Code Online (Sandbox Code Playgroud)

Mic*_*mer 11

[是另一个名字的test。所有这三行都是test带有一些选项的命令行。

在第一行,这是标准测试:[ 5 -gt 4 ]与test 5 -gt 4.

第二种是省略表达式,表示退出false( 0 arguments: Exit false (1))。

对于第三种情况,我猜您使用的是 GNU coreutils。在 GNU 中test,帮助文本包含以下注释:

NOTE: [ honors the --help and --version options, but test does not.
test treats each of those as it treats any other nonempty STRING.
Run Code Online (Sandbox Code Playgroud)

这是一个非 POSIX 扩展;动机似乎test是需要将这些参数视为其他任何字符串。[能够通过右]括号的存在区分选项案例和字符串案例。

请注意,您的 shell 可能会提供自己的[,因此您必须/bin/\[使用此版本。


dr_*_*dr_ 0

[ OPTION并不是真的缺少括号。

事实上,也许令人惊讶的是,[有一个命令(位于/usr/bin/[)相当于test。因此(至少理论上)允许仅使用左括号,而右括号仅用作语法糖。然而,较新的 shell 版本需要它。