查看gnuwin32 / bin目录,有一个奇怪的程序文件,名为[.exe

我在文档gnuwin32.sourceforge.net或google搜索中找不到它,所以我运行它并获得:

$ [
[: missing `]'
$

所以我把它作为一个参数并得到了

$ [ ]

$

它没有抱怨,所以我认为它是在正确的轨道上。我试过了:

$ [ hello ]
再一次,没有抱怨。所以我尝试了一个算术表达式:

$ [ 1 + 1 ]
[: +: binary operator expected
$

我尝试了一系列不同的组合,包括前缀<!> amp;后缀表示法,但似乎没有任何作用。这件事做了什么?

有帮助吗?

解决方案

它用于评估条件表达式。
它等同于(可能是符号链接?)test可执行文件。
该联机帮助页是此处

你可能会在很多bash脚本中看到这个:

if [ "$LOGNAME" = "scott" ]
then
    echo "Logged in as Scott"
else
     echo "incorrect user"
fi

有趣的是, [ 不是bash语言的一部分,它实际上是一个可执行文件,其返回码由'IF'使用。这就是为什么 ["$LOGNAME" 之后的空格及其第一个参数是必需的 - 如果省略它,脚本会尝试执行 expr 并失败

你不能用它进行算术运算 - 使用 <=> (参见此处)。 但是,您可以测试各种文件属性(它是否存在?它是什么类型?等)以及在字符串和数字上使用比较运算符。

其他提示

test a

==

[ a ]

这只是糖

编辑:为了澄清,这是条件语法,例如[<!>“a <!>”; = <!>“a <!>”; ]

已经提到的另一个答案与test相同。在bash上,它也是内置的,所以你可以通过help内置(help test)获得它的帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top