Script Bash ne continue pas à lire la ligne suivante du fichier

J'ai un script shell qui enregistre la sortie d'une commande qui est exécutée dans un fichier CSV. Il lit la commande qu'il a à exécuter à partir d'un script shell qui est dans ce format:

ffmpeg -i /home/test/videos/avi/418kb.avi /home/test/videos/done/418kb.flv
ffmpeg -i /home/test/videos/avi/1253kb.avi /home/test/videos/done/1253kb.flv
ffmpeg -i /home/test/videos/avi/2093kb.avi /home/test/videos/done/2093kb.flv

Vous pouvez voir chaque ligne de commande ffmpeg. Cependant, le script ne s'exécute la première ligne. Seulement il y a une minute, il faisait près de toutes les commandes. Il manquait la moitié pour une raison quelconque. J'ai édité le fichier texte contenant les commandes et maintenant elle ne peut le faire la première ligne. Voici mon script bash:

#!/bin/bash
# Shell script utility to read a file line line.
# Once line is read it will run processLine() function

#Function processLine
processLine(){
line="$@"

START=$(date +%s.%N)

eval $line > /dev/null 2>&1 

END=$(date +%s.%N)
DIFF=$(echo "$END - $START" | bc)

echo "$line, $START, $END, $DIFF" >> file.csv 2>&1
echo "It took $DIFF seconds"
echo $line
}

# Store file name
FILE=""

# get file name as command line argument
# Else read it from standard input device
if [ "$1" == "" ]; then
   FILE="/dev/stdin"
else
   FILE="$1"
   # make sure file exist and readable
   if [ ! -f $FILE ]; then
    echo "$FILE : does not exists"
    exit 1
   elif [ ! -r $FILE ]; then
    echo "$FILE: can not read"
    exit 2
   fi
fi
# read $FILE using the file descriptors

# Set loop separator to end of line
BAKIFS=$IFS
IFS=$(echo -en "\n\b")
exec 3<&0
exec 0<$FILE
while read line
do
    # use $line variable to process line in processLine() function
    processLine $line
done
exec 0<&3

# restore $IFS which was used to determine what the field separators are
BAKIFS=$ORIGIFS
exit 0

Merci pour toute aide.

Mise à JOUR 2

Son le ffmpeg commandes plutôt que le shell script qui ne fonctionne pas. Mais je dois d'été en utilisant simplement "\b", comme Paul l'a souligné. Je suis également faire usage de Johannes plus courte du script.

N'a pas de réglage FI "\n\b" signifie la rupture de l'espace?
J'ai juste essayé "\n" et toujours il ne lit que la première ligne. Je ne suis pas très bon dans les scripts shell.
Et mettre un peu d'échos dans processLine pour voir ce qui se passait et quand c'est fait, le traitement. C'est peut-être ffmpeg qui n'est pas de retour.
Je pense que vous avez raison. Je vais vérifier ce que ffmpeg est fait manuellement par l'exécution de quelques commandes.
Maintenant, vous savez pourquoi vous mettez des trucs sous CM de contrôle immédiatement, de sorte que vous pouvez revenir à des versions de travail!

OriginalL'auteur Abs | 2009-02-17