2
respostas

sobre o arquivo de erro

Olá! O arquivo de erro gerado em converter_imagem 2 > erro.txt é gerado mesmo que o script tenha sucesso. Como faria para gerar APENAS se realmente der erro? E como faria para gerar o arquivo de erro em um diretório específico que ainda não existe?

Consegui fazer isso por meio de gambiarra, removendo o arquivo de erro gerado, caso tenha sucesso, ou criando um novo diretório e então movendo o arquivo para este, caso dê erro. Mas acredito que existam formas mais elegantes. Segue meu código:

Obs: A lógica do meu script seria rodar ele dentro de um subdiretório de onde deverá ser feita a conversão.

#!/bin/bash

convertImage(){
cd ../
if [ ! -d converted-png ] 
then
    mkdir converted-png
fi

for image in *.jpg
do
    local img_name=$(ls $image | awk -F. '{ print $1 }')
    convert $img_name.jpg converted-png/$img_name.png
done
}

convertImage 2>../log.txt
if [ $? -eq 0 ] 
then
    echo "Conversion success"
    rm log.txt
else    
    mkdir error
    mv log.txt error
    echo "Conversion error. Created log file in /error"
fi
2 respostas

obrigado pela resposta!

Oi Daniel, acho que esse tipo de estratégia não tem uma solução simples, eu não consigo pensar em uma, por que, até onde estudei, o parsing dos parâmetros da função acontece antes da execução dela, então, primeiro o arquivo é criado para depois ele executar a função em si.

Por isso, acredito que a estratégia comum seja criar o log de erros em um diretório temporário (/tmp) e mover, caso haja erros, do contrário, o próprio sistema operacional descarta o arquivo.

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