ich einen Bash-Skript, das ich erstellt Videos aus einem Ordner zu verarbeiten und es ist Unterordner:Bash while-Schleife warten, bis Aufgabe abgeschlossen
find . -type f -name '*.mkv' | while read file;
do
ffmpeg -i $file ...
done
Das Problem: Statt der while-Schleife ffmpeg warten zu vervollständigen, es läuft weiter durch die Schleife. Das Endergebnis ist, Dateien werden nicht verarbeitet. Ich brauche einen Weg, um die aktuelle while-Schleife Iteration zu warten, bis ffmpeg abgeschlossen ist, bevor Sie mit der nächsten fortfahren. Oder alternativ eine Möglichkeit, diese Elemente in eine Warteschlange zu stellen.
Edit: So ist die Lösung, wenn sie über eine Reihe von Dateien iterieren ist der -nostdin param passieren ffmpeg. Hoffe, das hilft jedem anderen, der ein ähnliches Problem haben könnte.
Auch Datei -> $ file war ein copy/paste Tippfehler.
Vielleicht halten den Prozess im Hintergrund der '&' am Ende des 'ffmpeg' Befehl? – squiguy
Was Sie haben, sollten warten bis ffmpeg fertig ist. Sind Sie sicher, dass Sie von ffmpeg keinen Fehler bekommen (wie ungültige Parameter)? – Mat
Die Schleife, wie Sie sie haben, sollte warten, bis jeder der inneren Befehle ausgeführt wird, außer Sie haben ein '&' am Ende der Zeile gesetzt. Erhalten Sie Fehlermeldungen? Versuchen Sie, den inneren Befehl mit "echo" vorzugeben und fügen Sie danach einen Schlaf 1 hinzu, um zu überprüfen, dass die Schleife selbst keine Probleme hat. Zum Beispiel, in der Befehlszeile, die Sie geben, verwenden Sie 'file' anstelle von' $ file' – user295691