Script Bash: meu script exclui uma pasta de trabalho prematuramente. Como faço para corrigir?

Script Bash: meu script exclui uma pasta de trabalho prematuramente. Como faço para corrigir?

meu script funciona perfeitamente para um único arquivo, mas se eu processar vários arquivos, ele excluirá minha pasta de trabalho muito cedo e apenas um arquivo será processado. Se eu não excluir a pasta de trabalho, o script funcionará com vários arquivos. Aqui está meu roteiro:

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

Como posso fazer com que todos os arquivos sejam processados ​​E movidos antes que a pasta de trabalho seja removida?

Responder1

Você pode tentar mover os comandos rm para fora do loop. Assim:

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

informação relacionada