フォルダーを見て、ハンドブレーキを使用してそのフォルダーに入るファイルを自動的にエンコードするスクリプトを作成しようとしています。これを行うには、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 の最初のファイルに対して正常に動作し、問題なくエンコードされ、古いバージョンが削除されますが、リスト内の他のファイルは実行されません。