3

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

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

$ [
[: missing `]'
$

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

$ [ ]

$

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

$ [ hello ]

再次,没有投诉。所以我尝试了一个算术表达式:

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

我尝试了一堆不同的组合,包括前缀和后缀表示法,但似乎没有任何效果。这东西有什么作用?

4

3 回答 3

6
test a

==

[ a ]

这只是糖

编辑:为了澄清,这是条件语法,例如 [ "a" = "a" ]

于 2008-11-18T23:00:02.580 回答
5

它用于评估条件表达式。
它相当于(可能是符号链接?)test可执行文件。
手册页在这里

您可能会在很多 bash 脚本中看到这一点:

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

有趣的是,[它不是 bash 语言的一部分,它实际上是一个可执行文件,它的返回码被 'IF' 使用。这就是为什么 the 后面的空格[和它的第一个参数是强制性的 - 如果它被省略,脚本将尝试执行["$LOGNAME"并失败。

你不能用它做算术运算——用它来做expr(见这里)。但是,您可以测试各种文件属性(它是否存在?它是什么类型?等等)以及对字符串和数字使用比较运算符。

于 2008-11-18T23:12:38.700 回答
0

已经提到的另一个答案与 相同test。在 bash 上,它也是一个内置函数,因此您可以使用内置函数help( help test) 获得帮助。

于 2008-11-19T10:50:50.710 回答