2
respostas

Retorno da operação sempre com valor zero

Mesmo forçando um erro no meu código (colocando diretório inválido, está me retornando o código zero e consequentemente retornando a mensagem de sucesso. O que pode ser isto?

#!/bin/bash

converte_imagem() {
cd /Users/admin/Documents/Linux/imagens-livros222
if [ ! -d png ]
then
    mkdir png
fi

for imagem in *.jpg
do
    local imagem_sem_extensao=$(ls $imagem | awk -F. '{ print $1}')
    sips -s format png $imagem_sem_extensao.jpg --out png/$imagem_sem_extensao.png 
done
}

converte_imagem 2>erros_conversao.txt
echo $?
if [ $? -eq 0 ]
then
    echo "Conversão realizada com sucesso"
else
    echo "Houve uma falha no processo"
fi
2 respostas

Olá, Marcelo. Tudo bem?

Repare que quando você usa o echo $? ele pega o valor do status do último comando executado. Mas como o echo também é um comando, quando o if é executado, o valor que está no $? e o status da execução do comando echo , que foi sucesso.

Testa retirar o echoantes do if e diz se deu certo?

Espero ter ajudado.

Olá Vitor, obrigado pela resposta.

Eu realizei a remoção do echo, conforme você sugeriu (eu havia colocado para tentar obter o resultado e printar na tela) porém o resultado ainda é de sucesso. Ele até escreve no arquivo erros_conversao.txt, que não consegiu achar este diretório:

conversao-jpg-png.sh: line 4: cd: /Users/admin/Documents/Linux/imagens-livros1: No such file or directory ls: *.jpg: No such file or directory Warning: .jpg not a valid file - skipping