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 retorno0significa execução bem-sucedida sem erros, enquanto qualquer valor entre1e255sinaliza 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&¶ 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 comandoexit N(ex:exit 1para erro genérico). - Modo Estrito no Bash (
set -e): Adicionarset -eno início do script instrui o Bash a interromper a execução imediatamente caso qualquer comando intermediário retorne um código diferente de0.
