Окончание sh скрипта, ошибка fi" unexpected (expecting "then")

Рейтинг: 0Ответов: 2Опубликовано: 31.07.2023

Изначально код был такой. Все работало.

#!/bin/bash
FILEPATH=/home/a/amigoalex/check.log
find /home/a/amigoalex/ -iname '*php' -cmin -120 -not -path '*/cache/*' -not -path '*/cron.php' > $FILEPATH
if [ -s $FILEPATH ]
then
mail -s 'Timeweb Amigoalex - files has been changed' mymail@yandex.ru < $FILEPATH
fi

Потом он перестал работать, в логах мне пишется: /home/a/amigoalex/check.sh: 7: /home/a/amigoalex/check.sh: Syntax error: "fi" unexpected (expecting "then")

Ну я заменил fi на then, но файл все равно не хочет работать, а в логах теперь пишет просто: /home/a/amigoalex/check.sh: 7: /home/a/amigoalex/check.sh: Syntax error: end of file unexpected

Я погуглил, нашел вариант, что это может быть из-за лишнего символа /r

Я просто переписал код руками с нуля, в новый файл, и мне все равно выдает ошибку.

Также советуют выполнить $ dos2unix /home/pi/sh/test.sh, но я не могу этого сделать, такой команды нет, у меня просто хостинг.

Ответы

▲ 0

Эта команда помогла:

perl -pi.bak -e 's/\r$//' check.sh
▲ 0

Для удаления символа возврата каретки \r можно воспользоваться программой sed:

sed -i 's/\r//' /home/pi/sh/test.sh

Синтаксис: 's/что меняем/на что меняем/модификатор'
Ключ -i это пересоздать файл с изменениями, без него содержимое файла с изменениями будет распечатано в stdout