代码之家  ›  专栏  ›  技术社区  ›  Ferruccio

gnuwin32程序[.exe的作用是什么?

  •  3
  • Ferruccio  · 技术社区  · 17 年前

    在gnuwin32/bin目录中,有一个外观奇怪的程序文件,名为 [.exe

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

    $ [
    [: missing `]'
    $
    

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

    $ [ ]
    
    $
    

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

    $ [ hello ]
    

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

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

    我尝试了很多不同的组合,包括前缀和;后缀符号,但似乎什么都不起作用。这个东西是干什么的?

    3 回复  |  直到 17 年前
        1
  •  6
  •   tusho    17 年前
    test a
    

    ==

    [ a ]
    

    这只是糖

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

        2
  •  5
  •   Cristian Diaconescu    17 年前

    它用于评估 有条件的 表达。
    它相当于(可能是一个符号链接?) test 可执行。
    手册页是 here .

    你可以在很多bash脚本中看到这一点:

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

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

    你不能用它做算术运算-使用 expr 为此(参见 here ). 但是,您可以测试各种文件属性(它存在吗?它是什么类型?等等),以及对字符串和数字使用比较运算符。

        3
  •  0
  •   CesarB    17 年前

    另一个已经提到的答案与 test 在bash上,它也是一个内置的,所以你可以通过 help 内置( help test ).

    推荐文章