2014-06-17 65 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