2014-06-17 87 views
1

四處錯誤:的Unix ELIF語法錯誤

syntax error near unexpected token `elif' 
`elif [ "$PROJECT_DIR" = "Automation" ] then' 

我在Unix行格式保存在Textpad ++所以我不知道是什麼問題...

#!/bin/bash 

.... 

if [ "$PROJECT_DIR" = "Utility" ] then 

    echo "$PROJECT_DIR: Compiling..." 
    javac -sourcepath $SOURCE -classpath $CLASSPATH -d $OUTPUT $SOURCE/*.java -deprecation 

    echo "$PROJECT_DIR: Compiling..." 
    javac -sourcepath $SOURCE -classpath $CLASSPATH -d $OUTPUT $SOURCE/*.java -deprecation 

elif [ "$PROJECT_DIR" = "Automation" ] then 

    echo "$PROJECT_NAME: Compiling..." 
    javac -sourcepath $SOURCE -classpath $CLASSPATH -d $OUTPUT $SOURCE/*.java 

elif [ "$PROJECT_DIR" = "Sync" ] then 

    echo "$PROJECT_DIR: Compiling..." 
    javac -sourcepath $SOURCE -classpath $CLASSPATH -d $OUTPUT $SOURCE/*.java -deprecation 
    echo "$PROJECT_DIR: Compiling..." 
    javac -sourcepath $SOURCE -classpath $CLASSPATH -d $OUTPUT $SOURCE/*.java -deprecation 
    echo "$PROJECT_DIR: Compiling..." 
    javac -sourcepath $SOURCE -classpath $CLASSPATH -d $OUTPUT $SOURCE/*.java -deprecation 

fi 

回答

1

的問題是,你需要的]then之間用分號(或換行)。

[不是shell的語法的一部分。這是一個內置命令,相當於test命令(但[需要]作爲其最後一個參數,而test則不需要)。

(在另一方面,關鍵字iftheneliffi以及分號,是shell的語法一部分。)

所以,如果你寫:

if [ "$PROJECT_DIR" = "Utility" ] then 

單詞then只是[命令的另一個參數。

] then的每次出現更改爲] ; then應該可以解決問題。

+0

好吧我其實試​​過了;之後],但我只是在第一次之後]並非全部。所以我把一個;落後所有]發生,現在它工作。謝謝。 – dave111

0

嘗試這樣相反(刪除大部分代碼行以保持答案的簡短)。不需要最後的elif條件elif [ "$PROJECT_DIR" = "Sync" ]。它應該是一個else部分,如下所示。

if [ "$PROJECT_DIR" = "Utility" ] 
then 
    echo "$PROJECT_DIR: Compiling..."  
elif [ "$PROJECT_DIR" = "Automation" ] 
then 
    echo "$PROJECT_NAME: Compiling..."  
else 
    echo "$PROJECT_DIR: Compiling..." 
fi