Синтаксическая ошибка: неожиданный конец файла. удар
Я хочу настроить бота 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
,