2013-05-31 5 views
0

У меня скрипт:Bash: ошибка синтаксиса: неожиданный конец файла

#!/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 

Это выполняет проверку синтаксиса обнаружения таких проблем без запуска сценария. Вы также можете исправить это с помощью elif вместо else if комбинации:

#!/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" 

Не оболочка прохладный зверь?

Смежные вопросы