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


Descubra mais sobre Alexsandro Felix

Assine para receber nossas notícias mais recentes por e-mail.

Felix

Apaixonado por fotografia, Software Livre, OpenSource, quadrinhos, livros, filmes, séries e claro, por Python.

Verified by MonsterInsights