Отказ от ответственности: я просто парень, который погуглил большую часть своих знаний, когда это было необходимо, и сплоченности не могло быть вообще.Заранее извините за это.
Я пишу небольшой скрипт на моем Ubuntu 18.04 сервере, который должен запустить цикл для кодирования необработанных DVR-файлов в простой в управлении mp4.Эта «трудная» часть уже работает нормально, я просто пытаюсь получить чистый скрипт, чтобы он работал целый час.К сожалению, по какой-то причине Bash не принимает мое заявление if.
Я пробовал dos2unix
, точки с запятой, интервалы, табуляции, намерения до и после оператора if, но ничего не получалось.Я удалил почти все результаты Google и сообщения stackoverflow, но ничего не получалось.Я проверил наличие скрытых символов, которые могут сломать сценарий.Все еще ошибка.
В следующем сценарии XXX являются заполнителями для личных вещей.Эти строки уже работают.
#!/bin/bash
for file in $(find /var/www/vhosts/XXXXXX/* -name "*.h264");
if [ -z "$file" ]
then
echo "No new h264-files found. Exiting."; break
fi
do
echo "H264-files found. Calling ffmpeg for conversion to mp4."
ffmpeg -y -i "$file" -c:v libx264 -preset veryfast -crf 26 -an -sn "${file/h264/mp4}"
echo "Ffmpeg is finished."
#rm "$file" disabled until scripts works perfectly and is callable from plesk.
echo "All new files converted. Refreshing XXXXXcloud files."
sudo -u XXXX php /var/www/vhosts/XXXXX
echo "Script done."
done
Я получаю следующее:
ffmpeg_transcode_h264tomp4.sh: line 3: syntax error near unexpected token `if'
ffmpeg_transcode_h264tomp4.sh: line 3: `if [ -z "$file" ]'