查看gnuwin32/bin目录,有一个名为[.exe的奇怪的程序文件
我在文档、gnuwin32.sourceforge.net或谷歌搜索中都找不到它,所以我运行它并得到:
$ [
[: missing `]'
$所以我给了它]作为参数,并得到了
$ [ ]
$它没有抱怨,所以我认为它在正确的轨道上。我试过了:
$ [ hello ]再说一次,没有抱怨。所以我尝试了一个算术表达式:
$ [ 1 + 1 ]
[: +: binary operator expected
$我尝试了一堆不同的组合,包括前缀和后缀表示法,但似乎都不起作用。这玩意儿是做什么的?
发布于 2008-11-18 23:12:39
它用于计算条件表达式。
它等同于(可能是指向?的符号链接?)test可执行文件。
手册页是here。
您可能会在很多bash脚本中看到这一点:
if [ "$LOGNAME" = "scott" ]
then
echo "Logged in as Scott"
else
echo "incorrect user"
fi有趣的是,[不是bash语言的一部分,它实际上是一个可执行文件,其返回代码由“IF”使用。这就是为什么[及其第一个参数后面的空格是必需的-如果省略它,脚本将尝试执行["$LOGNAME"并失败。
你不能用它做算术运算--使用expr (参见here)。但是,您可以测试广泛的文件属性(它是否存在?它是什么类型的?等)以及对字符串和数字使用比较运算符。
发布于 2008-11-18 23:00:03
test a==
[ a ]只是糖而已
编辑:为了澄清,这是条件语法,例如"a“= "a”
发布于 2008-11-19 10:50:51
另一个答案已经提到,它与test相同。在bash上,它也是一个内置组件,因此您可以通过help内置组件(help test)获得有关它的帮助。
https://stackoverflow.com/questions/300472
复制相似问题