2008-11-18 61 views
3

展望中的GnuWin32/bin目錄中,有一個奇怪的前瞻性程序文件[.exegnuwin32程序是什麼:[.exe是做什麼的?

我找不到它的文檔,gnuwin32.sourceforge.net或在谷歌搜索,所以我跑了它,並得到:

$ [ 
[: missing `]' 
$ 

所以我把它作爲一個參數,並得到了

$ [ ] 

$ 

它並沒有抱怨,所以我認爲這是正確的軌道上。我試過了:

$ [ hello ] 

再次沒有抱怨。所以我想一個算術表達式:

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

我嘗試了很多不同的組合,其中包括前綴&後綴符號,但似乎沒有任何工作。這件事做什麼?

回答

5

它用於評估條件表達式。
它等效於(可能是符號鏈接?)test可執行文件。
聯機幫助頁是here

你可以在很多的bash腳本的看到這一點:

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

有趣的是,在[不是bash的語言的一部分,它實際上是一個可執行文件,其返回代碼使用的'如果'。這就是爲什麼後面的空格及其第一個參數是必需的 - 如果它被省略,腳本會嘗試執行["$LOGNAME"並失敗。

你不能做算術運算用它 - 使用expr爲(見here)。 但是,您可以測試各種文件屬性(它是否存在?它是什麼類型?等)以及在字符串和數字上使用比較運算符。

6
test a 

==

[ a ] 

這只是糖

編輯:爲了澄清,那是有條件的語法,如[「a」=「a」]

0

已經提到的另一個答案與test相同。在bash中,它也是內建的,因此您可以使用內建的helphelp test)獲得幫助。