2013-05-31 46 views
0

意外結束我有一個腳本:擊:語法錯誤:文件

#!/bin/bash 
if [ "$JAR_FILE" = "NewTekkit.jar" ]; then 
cd "$SERVER_DIR" 
unzip -nu "$JAR_DIR/NewTekkit.zip" 
else 
if [ "$JAR_FILE" = "TekkitLite.jar" ]; then 
cd "$SERVER_DIR" 
unzip -nu "$JAR_DIR/TekkitLite.zip" 
fi 
exit 0 

而我得到的錯誤:2013-05-31 18:00:44,817 DEBUG server 120: Server Prepare: Error: /home/minecraft/multicraft/scripts/startup.sh: line 11: syntax error: unexpected end of file

請幫助。

謝謝。

+1

你的第一個如果沒有關閉 – kfaerber

回答

4

你缺少fi

#!/bin/bash 
if [ "$JAR_FILE" = "NewTekkit.jar" ]; then 
    cd "$SERVER_DIR" 
    unzip -nu "$JAR_DIR/NewTekkit.zip" 
else 
    if [ "$JAR_FILE" = "TekkitLite.jar" ]; then 
    cd "$SERVER_DIR" 
    unzip -nu "$JAR_DIR/TekkitLite.zip" 
    fi 
fi 
exit 0 

正確縮進你的代碼,也是在殼,有助於避免這種問題。

3

您的if/else/fi語法不完整(缺少fi)。

要檢測之前運行腳本這樣的錯誤,你應該總是使用

bash -n scriptname 

此進行語法檢查檢測這樣的問題,而無需實際運行該腳本。

#!/bin/bash 
cd "$SERVER_DIR" 
if [ "$JAR_FILE" = "NewTekkit.jar" ]; then 
    unzip -nu "$JAR_DIR/NewTekkit.zip" 
elif [ "$JAR_FILE" = "TekkitLite.jar" ]; then 
    unzip -nu "$JAR_DIR/TekkitLite.zip" 
fi 
exit 0 

使用炮彈字符串操作語法它甚至有可能瓦解整個腳本只是

cd "$SERVER_DIR" 
unzip -nu "$JAR_DIR/${JAR_FILE%jar}zip" 

是不是殼:您還可以用elif,而不是一個else if組合解決這個問題一個很酷的野獸?