Linux

test[ - 不同的二進製文件,有什麼區別嗎?

  • May 5, 2012

我在回答另一個問題時注意到testand[是不同的二進製文件,但是[聯機幫助頁顯示了test’s. 除了結尾的要求],還有什麼不同嗎?如果不是,為什麼它們是分開的二進製文件而不是符號連結的?(它們也是bash內置的,bash也沒有顯示出區別。)

原始碼解釋了不同之處在於它如何處理選項--help

  /* Recognize --help or --version, but only when invoked in the
     "[" form, when the last argument is not "]".  Use direct
     parsing, rather than parse_long_options, to avoid accepting
     abbreviations.  POSIX allows "[ --help" and "[ --version" to
     have the usual GNU behavior, but it requires "test --help"
     and "test --version" to exit silently with status 0.  */

展示

$ /usr/bin/test --help
$
$ /usr/bin/[ --help
Usage: test EXPRESSION
 or:  test
 or:  [ EXPRESSION ]
 or:  [ ]
 or:  [ OPTION
Exit with the status determined by EXPRESSION.
[...]

正如您所說,在bash內置版本中,唯一的區別是最後[需要]

引用自:https://unix.stackexchange.com/questions/28682