Not every command is being for in a while loop

67 Views Asked by At

I am trying to make a script what looks at a folder and will automatically encode files that go into that folder using hand brake. I want to do this doing monitoring the folder using inotify putting the new additions to the folder into a list then using a cron job to encode them overnight. However when using a while loop to loop over the list handbrake only encodes the first file exists then the scripts carrys on to after the loop without doing every file in the list. Here is the script that is calling handbrake:

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

When testing the loop with a simple echo instead of the HandBrakeCLI it works fine and prints out every file so I have no idea what is wrong.

Here is the scripts that is monitoring the folder incase that is the problem:

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

Any help would be great, thanks

EDIT: Just to be more specific, the script works fine for the first file in the list.txt, it encodes it no problem and removes the old version, but then it doesn't do any of the others in the list

1

There are 1 best solutions below

0
Thomas Briggs On

Taken from here

To solve the problem simply

echo "" | HandBrakeCLI ......

or

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