2012-08-07 60 views
0

這是我的代碼:爲什麼我的shell在-a條件下工作良好?

echo $1 $2 
    if [ "Release"!="$2" -a "Debug"!="{$2}" ]; then 
     echo "error! the arg of -c must be \"Release\" or \"Debug\" !" 
     exit 1 
    fi 
    XCODECONFIG="$2"; 

當我輸入

./build.sh a Release 

輸出是:「錯誤-c的ARG必須是 「

a Release 
    error! the arg of -c must be "Release" or "Debug" ! 

它打印版本」或「調試」!「爲什麼不繼續使用XCODECONFIG =「$ 2」?

回答

2

必須有空格周圍!=

[ "Release" != "$2" -a "Debug" != "{$2}" ] 

當你寫你的表達沒有空格,它是syntaticaly正確的,但這意味着其他的事情。它看起來像:

[ STR1 -a STR2 ] 

在你的情況,有!=裏面,但這並不意味着什麼;無論如何,這只是字符串;每個字符串評估爲true,並且True -a True也將評估爲true。在shell腳本

2

空間問題,請嘗試:

if [ "Release" != "$2" -a "Debug" != "{$2}" ]; then

否則你的表情也只是評估串兩個大塊其中既有truthy值,因此如果執行

相關問題