Не каждая команда находится в цикле - PullRequest
1 голос
/ 11 апреля 2020

Я пытаюсь создать сценарий, который просматривает папку и автоматически кодирует файлы, которые go, в эту папку с помощью ручного тормоза. Я хочу сделать это, выполняя мониторинг папки с помощью inotify, помещая новые дополнения в папку в список, а затем используя задание cron для их кодирования в одночасье. Однако при использовании в течение времени от l oop до l oop по списку ручник только кодирует первый файл, который существует, тогда сценарии переходят к l oop, не обрабатывая каждый файл в списке. Вот скрипт, который вызывает ручной тормоз:

#!/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

При тестировании l oop с простым эхом вместо 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

Любая помощь будет отличной, спасибо

РЕДАКТИРОВАТЬ: Просто чтобы быть более конкретным c, скрипт отлично работает для первого файла в list.txt, без проблем кодирует его и удаляет старую версию, но затем не выполняет никаких других в списке

1 Ответ

0 голосов
/ 11 апреля 2020

Взято из здесь

Для решения проблемы просто

echo "" | HandBrakeCLI ......

или

HandBrakeCLI ...... < /dev/null
...