Olá, fiz um script para converter alguns arquivos mp3 para que tenham um tamanho menor, segue o script:
#!/bin/bash
#Pergunta pelos arquivos a converter
arquivos=$(zenity --file-selection --multiple --title "Selecione os arquivos que quer converter: " | tr '|' '\n')
#Pergunta pela pasta para por os arquivos convertidos
pasta=$(zenity --file-selection --directory --title "Selecione a pasta onde os arquivos deverão ser salvos: ")
#Conta o total de arquivos a converter
numarq=$(echo "$arquivos" | wc -l)
#Seta o numero base para a contagem
base=1
#Inicia o loop e converte os arquivos
for linha in "$arquivos" ; do
#Obtém o nome do arquivo a ser convertido
nome=$(echo "$linha" | rev | cut -d/ -f1 | rev)
echo "Convertendo arquivo "$base" de "$numarq": "$nome""
case $1 in
f) #Usa o ffmpeg para converter
ffmpeg -i "$linha" -acodec libmp3lame -ac 1 -ab 64k -y -ar 44100 "$pasta"/"$nome" &>> /dev/null
;;
l) #Usa o lame para converter
lame -m m -f -b 64 --cbr "$linha" "$pasta"/"$nome" &>> /dev/null
;;
*) echo "Encoder inválido!"
exit
;;
esac
#Muda o número do arquivo a converter
base=$(($base+1))
done
#Finaliza o programa
echo "Conversão completa!"
#Sai
exit
Ele devia funcionar assim:
1° Pelo terminal eu rodo: bash script.sh (l para o lame ou f para ffmpeg)
2º pede para selecionar os mp3 a converter
3° pede para escolher a pasta de saída
4° converte os arquivos selecionados e manda um output no terminal
O problema é que o laço for não está mandando os arquivos linha por linha para o encoder, ele está mandando tudo de uma vez só:
bash Dropbox/Scripts/mp3.sh l
Convertendo arquivo 1 de 2: musicaa 1.mp3 musica 2.mp3
Conversão completa!
Se eu selecionar só um arquivo, tudo funciona. Alguém tem alguma idéia?