【问题标题】:What does the gnuwin32 program: [.exe do?gnuwin32 程序:[.exe 有什么作用?
【发布时间】:2008-11-19 18:50:50
【问题描述】:

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

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

$ [
[: missing `]'
$

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

$ [ ]

$

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

$ [ hello ]

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

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

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

【问题讨论】:

    标签: gnu gnuwin32


    【解决方案1】:
    test a
    

    ==

    [ a ]
    

    只是糖

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2011-02-18
          • 2011-04-22
          • 1970-01-01
          • 1970-01-01
          • 2021-07-27
          • 2016-05-22
          • 1970-01-01
          • 1970-01-01
          • 2019-04-09
          相关资源
          最近更新 更多