1
resposta

Efetuados alguns acréscimos no script - comportamento não esperado

Olá!

Tentei fazer o script adicionando uma verificação - se a extensão do arquivo é jpg. Coloquei as fotos em uma pasta chamada "Teste" no Desktop.

O script converte uma parte dos arquivos, e outra não. Deixa a seguinte mensagem de erro:

conversao-novos-livros.sh: linha 20: [: /home/home/Desktop/Teste/01.jpg: esperava operador binário

#!/bin/bash

converte_imagem(){
    local caminho_imagem=$1
        local imagem_sem_extensao=$(ls $caminho_imagem | awk -F. '{ print $1 }')
        local extensao=$(ls $caminho_imagem | awk -F. '{ print $2 }')
    if [ $extensao == "jpg" ]
    then
        echo "Trabalhando no arquivo" $imagem_sem_extensao
        convert $imagem_sem_extensao.jpg $imagem_sem_extensao.png
    fi
}

varrer_diretorio(){

    cd $1
    for arquivo in *
    do
        local caminho_arquivo=$(find ~/Desktop/Teste -name $arquivo)
        if [ -d $caminho_arquivo ]
        then
            varrer_diretorio $caminho_arquivo
        else
            converte_imagem $caminho_arquivo
        fi
done
}

varrer_diretorio ~/Desktop/Teste

Por fim - se tenho arquivos com ponto no nome (12.02.2004 - 01.jpg), o programa não deve funcionar, certo? Há algum modo de contornar esta questão?

1 resposta

Olá! Parte da questão foi sanada - aparentemente alguns arquivos jpg que eu tinha possuíam algum problema. Persiste a questão de trabalhar com arquivos que tem mais de um ponto no nome. Para outros trabalhos semelhantes, arquivos com espaços no nome também atrapalham. Por fim - se vierem arquivos JPG (extensão com letras maiúsculas), o script não funciona. O terminal é case sensitive. Algum modo de contornar esta questão?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software