Controle de Fluxo no Terminal: Validando a Execução com o Código de Retorno ($?)

Controle de Fluxo no Terminal: Validando a Execução com o Código de Retorno ($?)

No Linux, todo comando executado no terminal retorna um status de saída (exit code) numérico para indicar se a operação foi concluída corretamente ou se ocorreu algum erro. A variável especial $? captura exatamente esse código do último comando executado, permitindo criar rotinas de tratamento de erros e tomadas de decisão seguras dentro de scripts automáticos.

Bash

#!/bin/bash
# Script para verificação do status de retorno do último comando

# 1. Executa um comando válido e verifica o retorno
ls /etc/hosts > /dev/null 2>&1
STATUS_COMANDO=$? # Armazena imediatamente o retorno do comando acima

if [ $STATUS_COMANDO -eq 0 ]; then
    echo "[SUCESSO] O arquivo existe e o comando foi executado com exito (Exit Code: $STATUS_COMANDO)."
else
    echo "[FALHA] Ocorreu um erro na execução do comando (Exit Code: $STATUS_COMANDO)."
fi

# 2. Executa um comando inválido para testar a captura de erro
ls /diretorio_inexistente_123 > /dev/null 2>&1
if [ $? -ne 0 ]; then
    echo "[FALHA DETECTADA] O diretorio nao foi encontrado! Codigo de erro capturado: $?"
fi

Exemplo de uso e verificação no terminal:

Bash

# Executando um comando e checando o código de retorno na sequência
ping -c 1 8.8.8.8 > /dev/null 2>&1
echo "Status do ping: $?"
# Retorno 0 indica que o host respondeu; valores maiores que 0 indicam falha na rede

Pontos-chave

  • Valor Padrão de Sucesso (0): No ecossistema Unix, o retorno 0 significa execução bem-sucedida sem erros, enquanto qualquer valor entre 1 e 255 sinaliza um tipo específico de falha.
  • Volatilidade da Variável: A variável $? é sobrescrita a cada novo comando executado; se precisar usar o resultado mais de uma vez, salve-o em uma variável (ex: STATUS=$?) imediatamente após a chamada.
  • Operador Lógico Simplificado: É possível encadear ações baseadas no retorno sem usar if, utilizando && para sucesso e || para falha (ex: comando && echo "Ok" || echo "Erro").
  • Definindo Retornos Próprios (exit): Você pode encerrar seus próprios scripts retornando códigos customizados para outros processos usando o comando exit N (ex: exit 1 para erro genérico).
  • Modo Estrito no Bash (set -e): Adicionar set -e no início do script instrui o Bash a interromper a execução imediatamente caso qualquer comando intermediário retorne um código diferente de 0.

Thales de Oliveira Gomes

Thales de Oliveira Gomes é gestor de Tecnologia da Informação, especialista em infraestrutura de redes, computação em nuvem e operações de TI hospitalar, com mais de 18 anos de experiência na área. Graduado em Gestão de TI e pós-graduado em Engenharia de Redes e Telecomunicações, Cloud Computing, Redes de Computadores e Gestão Hospitalar, construiu uma trajetória sólida liderando projetos de alta complexidade, como a implementação e migração para nuvem de sistemas ERP de grande porte. Sua atuação no setor o levou a ser indicado ao prêmio IT Leaders Brasil na categoria Rising Leaders. Além da carreira corporativa e da paixão por tecnologia, Thales é autor independente com mais de 70 obras publicadas sobre redes, segurança da informação, Linux e física, além de criador de conteúdo no blog Vetor Tech e na plataforma CiberDicas. No universo das artes e do entretenimento, atua como produtor de música eletrônica sob o projeto Yknex, cria ilustrações digitais e compartilha walkthroughs de games no YouTube.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *