Синтаксическая ошибка: неожиданный конец файла. удар

Я хочу настроить бота teampeak, и у меня есть этот скрипт, чтобы начать это.

    #!/bin/bash
    if [ $1 = 'stop' ] 
      then 
        echo stop >> /root/ts3bot/tmp/log.txt
      date >>/root/ts3bot/tmp/log.txt
        echo ======================
        screen -S bot -X quit
      fi

    if [ $1 = 'start' ] 
      then 
      echo start >> /root/ts3bot/tmp/log.txt
      date >> /root/ts3bot/tmp/log.txt
      echo ======================
        screen -dmS bot php core.php
        ps ax | grep -v grep | grep -v -i SCREEN | grep links >> /root/ts3bot/tmp/log.txt
    fi
     <here is an extra blank line>

но когда я печатаю bash bot.sh это говорит syntax error: unexpected end of fileЯ не знаю, что я сделал не так:/ chmod установлен 755

Спасибо!

1 ответ

Я подозреваю, что вы, возможно, скопировали этот сценарий оболочки из коробки Microsoft Windows на сервер Linux или Unix. Если это так, проблема может заключаться в том, что у вас есть окончания строк DOS/Windows, что может привести к непредсказуемым результатам в сценариях.

Чтобы проверить сценарий на наличие неправильных окончаний строк на сервере Linux или Unix, вы можете вывести файл (вроде шестнадцатеричного дампа), введя в командной строке следующую команду:

$ od -c bot.sh | less

И искать \n или же \r или же \r\n, Если линии, кажется, имеют \r в конце концов, вы нашли проблему.

Чтобы исправить эту проблему с окончанием строки, вы можете использовать такой инструмент, как dos2unix если он установлен в вашей системе. Если у вас нет dos2unix но вы находитесь на сервере Linux, вы можете сделать это вместо этого:

$ sed -i 's/\r//' bot.sh

конвертировать файл.

Наконец... см. Первую строку сценария, #!/bin/bash? Из-за этого вам не нужно запускать это с bash bot.sh, вы можете просто выполнить это непосредственно с ./bot.sh,

Другие вопросы по тегам