2014-09-05 53 views
0

我的工作,雖然這裏的例子http://tldp.org/LDP/abs/html/debugging.html,想一些幫助解釋爲什麼這個腳本引發錯誤的內部[37:找不到命令命令未找到錯誤的,如果[-gt] comparsion

#!/bin/bash 
# ex74.sh 

# This is a buggy script. 
# Where, oh where is the error? 

a=37 

if [$a -gt 27 ] 
then 
    echo $a 
fi 

exit $? # 0! Why? 
+2

'[$ a' - >'[$ a'。 ''''之前''''' – ymonad 2014-09-05 08:49:33

+0

之前需要空格謝謝,爲什麼我需要一個空間,bash解釋器認爲[$ a是什麼? – Dave 2014-09-05 08:54:53

+2

在過去''''是'test'具有相同功能的命令。它目前是一個內建命令,但''/'/ usr/bin/['中的殘差''。所以'test $ a -gt 27]'是好的,但'test $ a -gt 27]'是不好的。與'[$ a'相同 – ymonad 2014-09-05 09:05:05

回答

1
if [ $a -gt 27 ] 
    ^
    | 
    add space here 

[之後的空格的原因是因爲[也不是語法。這是一個簡單的命令。通常是殼的內建物。 shell執行命令[,其餘爲參數,包括]作爲強制性的最後一個參數。如果在[之後沒有放置空格,shell將嘗試執行[whatever作爲命令並失敗。

之前的空間的原因是類似的。因爲否則它將不被認爲是它自己的參數。

相關問題