fbpx
Desenvolvimento

Como saber se comando do script foi executado com sucesso?

Não muito raramente precisamos saber se um determinado script foi executado com sucesso ou não? Para isso, vamos usar a váriável $? ela retorna “0” se o ultimo comando foi executado com sucesso, e retorna “1” se houve erro neste comando.

Abaixo segue uma tabela com essas variáveis especiais que estão disponíveis no shell:

Variável Descrição:

  • $1 Parâmetro número 1 (da linha de comando ou função)
  • … Parâmetro número N da linha de comando ou função)
  • $9 Parâmetro número 9 (da linha de comando ou função)
  • ${10} Parâmetro número 10 (da linha de comando ou função)
  • $# Número total de parâmetros da linha de comando ou função
  • $* Todos os parâmetros, como uma string única
  • $@ Todos os parâmetros, como várias strings protegidas
  • $$ PID do processo atual (do próprio script)
  • $! PID do último processo em segundo plano
  • $_ Último argumento do último comando executado
  • $? Valor de retorno do último comando executado

Veja este exemplo do comando cat em meu terminal:

cat meuprograma.py
cat meuprograma.py

O comando cat foi executado com sucesso, então vamos verificar o que ficou salvo na variável $?:

Como o comando foi executado com sucesso, na variável ficou registrado o o valor 0 que aqui podemos interpretar como sendo True ou Verdadeiro.

Então vamos testar um comando que irá falhar para vermos o que ficará salvo na variável $? neste caso:

Podemos então entender que quando o comando não é executado com êxito, o valor 1 é salvo na variável $?, ou seja: False ou Falso.

No exemplo abaixo só coloquei o resultado de “sucesso” porque em meus testes, quando tentei compactar um arquivo inexistente ou mesmo colocando argumentos errados para compactar, simplesmente o comando não era executado, ‘quebrando’ assim o script:

#!/bin/bash

tar -zcf escrever.tar.gz escrever.py

if [ $? -eq 0 ]
then
    echo "sucesso"
fi

Esta dica foi retirada de uma resposta minha à uma dúvida publicada no StackOverflow em Português

Felix

Residindo atualmente na cidade de Cascavel, no oeste do Paraná. Já dei aulas de informática, trabalhei com Hardware, redes, fui analista de suporte, aprendi SEO e mídias sociais e também programação. Faço um pouco de tudo, mas não sou especialista em nada, por isso estou sempre estudando e tentando evoluir. Com isso vou compartilhando aqui um pouco do que vou aprendendo no dia a dia.

Verified by MonsterInsights