Сценарий оболочки: неожиданный токен «if» - PullRequest
0 голосов
/ 11 июня 2019

Отказ от ответственности: я просто парень, который погуглил большую часть своих знаний, когда это было необходимо, и сплоченности не могло быть вообще.Заранее извините за это.

Я пишу небольшой скрипт на моем 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" ]'

1 Ответ

2 голосов
/ 12 июня 2019

Используя ifne util и некоторые рекомендации от Charles Duffy , это должно соответствовать спецификации:

find /var/www/vhosts/XXXXXX/* -name "*.h264" -print0 |
ifne -n echo "No new h264-files found. Exiting." |
while IFS= read -r -d ''  file ; do
    # ... more code goes here...
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...