Bash-Skripting: Mein Skript löscht einen Arbeitsordner vorzeitig. Wie behebe ich das?

Bash-Skripting: Mein Skript löscht einen Arbeitsordner vorzeitig. Wie behebe ich das?

mein Skript funktioniert für eine einzelne Datei einwandfrei, aber wenn ich mehrere Dateien verarbeite, löscht es meinen Arbeitsordner zu früh und es wird nur eine Datei verarbeitet. Wenn ich den Arbeitsordner nicht lösche, funktioniert das Skript mit mehreren Dateien. Hier ist mein Skript:

#!/bin/bash
cd /storage/sort_tv/
mkdir workingfolder
for i in *.mp4;
  do name=`echo "$i" | cut -d'.' -f1`
  echo "$name"
sudo ffmpeg -i "$i" -map_metadata -1 -c:v copy -c:a copy -map 0:a -map 0:v "workingfolder/${i%.*}.mp4" &&
mv -f workingfolder/* /storage/sort_tv
rm -rf workingfolder
done

Wie kann ich erreichen, dass alle Dateien verarbeitet UND verschoben werden, bevor der Arbeitsordner entfernt wird?

Antwort1

Sie können versuchen, die rm-Befehle aus der Schleife zu entfernen. So:

#!/bin/bash
cd /storage/sort_tv/
mkdir workingfolder
for i in *.mp4;
  do name=`echo "$i" | cut -d'.' -f1`
  echo "$name"
sudo ffmpeg -i "$i" -map_metadata -1 -c:v copy -c:a copy -map 0:a -map 0:v "workingfolder/${i%.*}.mp4" &&
done
mv -f workingfolder/* /storage/sort_tv
rm -rf workingfolder

verwandte Informationen