Я пытаюсь создать скрипт, который просматривает папку и автоматически кодирует файлы, которые попадают в эту папку, с помощью ручного тормоза. Я хочу сделать это, отслеживая папку с помощью inotify, помещая новые дополнения в папку в список, а затем используя задание cron для их кодирования в одночасье. Однако при использовании цикла while для перебора списка ручной тормоз кодирует только первый файл, а затем сценарии продолжаются после цикла, не выполняя каждый файл в списке. Вот скрипт, который вызывает ручной тормоз:
#!/bin/bash
while IFS= read -r line
do
echo "$(basename "$line")"
HandBrakeCLI -Z "Very Fast 1080p30" -i "$line" -o "$line.m4v"
rm "$line"
done < list.txt
> list.txt
При тестировании цикла с помощью простого эха вместо HandBrakeCLI он работает нормально и распечатывает каждый файл, поэтому я понятия не имею, что не так.
Вот сценарии, которые отслеживают папку, если проблема в этом:
#!/bin/bash
if ! [ -f list.txt ]
then
touch list.txt
fi
inotifywait -m -e create --format "%w%f" tv-shows | while read FILE
do
echo "$FILE" >> list.txt
done
Любая помощь будет здорово, спасибо
РЕДАКТИРОВАТЬ: Чтобы быть более конкретным, скрипт отлично работает для первого файла в list.txt, он без проблем кодирует его и удаляет старую версию, но тогда он не делает ничего из других в списке.
bash -xv YourHandbrakeScriptName
, чтобы увидеть все переменные по мере выполнения каждой строки. - person Mark Setchell   schedule 11.04.2020< /dev/null
, в конец строки, начинающейся сHandbrakeCLI
, на случай, если она захватитstdin
. - person Mark Setchell   schedule 11.04.2020HandbrakeCLI
? - person Mark Setchell   schedule 11.04.2020stdin
... github.com/HandBrake/HandBrake/issues/1316 что означает, что он можетeat
использовать другие ваши входные файлы. - person Mark Setchell   schedule 11.04.2020echo "" | ...
не должно работать, когда... < /dev/null
не работает. Не могли бы вы перепроверить? - person that other guy   schedule 11.04.2020