2013-10-25 36 views
0

下面是我的簡單,如果沒有找到它拋出命令的命令,但任何它打印else部分價值...IF在UNIX命令狀態下投擲的錯誤提示

-bash-3.00$ if ["$a"="10"]; then echo "hello"; else echo "hi"; fi; 

輸出:

-bash: [10=10]: command not found 
hi 

可以在任何請讓我知道是什麼問題?

+0

友情提醒有被自動[掉毛和分析工具(http://www.shellcheck.net)爲這些事情。 –

回答

3

添加[/]和謂詞表達式之間的空間:

if [ "$a" = "10" ]; then echo "hello"; else echo "hi"; fi; 
# ^  ^

[是一個程序:

$ which [ 
/usr/bin/[ 

沒有空間,[10=10]被識別爲節目名,執行的代替[


$ a=10 
$ if [ "$a" = "10" ]; then echo "hello"; else echo "hi"; fi; 
hello 
$ a=20 
$ if [ "$a" = "10" ]; then echo "hello"; else echo "hi"; fi; 
hi 
+0

我以爲他也需要使用-eq而不是=。是對的嗎 ? – Priyatham51

+3

@ Priyatham51因爲兩個參數都被引用,=很好 – SheetJS

+0

@Nirk謝謝你澄清這一點。 – Priyatham51