1
resposta

Loop em shell script

O exercício passado na aula funcionou tranquilo, mas decidi tentar adicionar ao script uma funcionalidade que movesse todas as imagens convertidas para .png em um diretório separado.

Ele consegue fazer isso, mas o log de erro mostra que ele tenta mover 2x as imagens para o diretório criado.

Segue o script:

#!/bin/bash

converte(){
local caminho_imagem=$1
local imagem_sem_extensao=$(ls $caminho_imagem | awk -F. '{ print $1 }')
convert $imagem_sem_extensao.jpg $imagem_sem_extensao.png
mv $imagem_sem_extensao.png ~/alura/imagens-novos-livros/PNG
}

verifica_dir(){
cd $1
for arquivo in *
do
    caminho_arquivo=$(find ~/alura/imagens-novos-livros -name $arquivo)
    if [ $caminho_arquivo == PNG/ ]
    then
        :
    elif [ -d $caminho_arquivo ]
    then
        verifica_dir $caminho_arquivo
    else
        converte $caminho_arquivo
    fi
done
}

cd ~/alura/imagens-novos-livros
mkdir PNG

verifica_dir ~/alura/imagens-novos-livros
if [ $? -eq 0 ]
then
    echo "Conversão realizada com sucesso"
else
    echo "Falha na conversão"
fi

Segue o log de "erro" (lembrando que a finalidade é cumprida): https://docs.google.com/document/d/1Vj5xN2px9mIXlyUT_iXrjOC0uX7P6kJl8xUowI2tj2I/edit

Obrigado.

1 resposta

Oi Thiago, pelo log eu entendi que ele está entrando na pasta PNG e tentando converter arquivos lá dentro. Acredito que o problema está nesse if que não entendi bem qual era a ideia dele:

if [ $caminho_arquivo == PNG/ ]
    then
        :