4
respostas

Esta apresentando erro ao rodar o Script

Aula 3 https://cursos.alura.com.br/course/shellscripting/task/28949 (Chamando a função dentrodela mesma) Rodei o Script


converte_imagem(){
    local caminho_imagem=$1
    local imagem_sem_extensao=$(ls $caminho_imagem | awk -F. '{ print $1 }')
    convert $imagem_sem_extensao.jpg $imagem_sem_extensao.png
}

varrer_diretorio(){
    cd $1
    for arquivo in *
    do
        caminho_arquivo=$(find ~/Downloads/imagens-novos-livros -name $arquivo)
        if [ -d $caminho_arquivo ]
        then
            varrer_diretorio $caminho_arquivo
        else
            converte_imagem $caminho_arquivo
        fi
    done
}
varrer_diretorio ~/Downloads/imagens-novos-livros
if [ $? -eq 0 ]
then
    echo "Conversão realizada com sucesso"
else
    echo "Houve um problema na conversão"
fi

Porem recebo o erro de: ***convert-im6.q16: unable to open image /home/user.jpg': Arquivo ou diretório inexistente @ error/blob.c/OpenBlob/2874. convert-im6.q16: no images defined/home/user.png' @ error/convert.c/ConvertImageCommand/3258. convert-im6.q16: unable to open image /home/user.jpg': Arquivo ou diretório inexistente @ error/blob.c/OpenBlob/2874. convert-im6.q16: no images defined/home/user.png' @ error/convert.c/ConvertImageCommand/3258. *

O que pode ser? tanto o que fiz na mao quanto ao que copiei do Alura, apresemtam o mesmo erro. (Baixei a pasta e coloquei dentro da pasta de Downloads)

4 respostas

Boa tarde, Lucas. O erro está acontecendo porque o programa "convert-im6.q16" não consegue abrir a imagem "/home/user.jpg". Aprentemente o arquivo ou o caminho de diretórios está incorreto, não o script.

Possíveis soluções:

  • Veja se o caminho e o arquivo realmente estão corretos pelo comando ls;
  • Veja se há permissão de leitura na imagem pelo comando ls -l. Se realmente não houver a permissão, use o comando chmod;

Sem chance, não deu Bom hahahaha... depois vou depurar mais...Obrigado man

Oi, Lucas

O problema dever ser que o nome do seu usuário tem um ponto ( . )

Quando usa o "awk" para cortar no ponto ( . )

o resultado é que "$imagem_sem_extensao" fica igual a "/home/user"

Uma opção é usar:

converte_imagem(){
    local caminho_imagem=$1
    local imagem_sem_extensao=${caminho_imagem%.*}
    convert $imagem_sem_extensao.jpg $imagem_sem_extensao.png
}
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!