Shell Scripting – Status de saída dos comandos e o comando exit – 12

Status de saída dos comandos e o comando exit em Shell Scripting

Em Shell Scripting, o status de saída de um comando indica se ele foi executado com sucesso ou se ocorreu algum erro. Esse status é representado por um código numérico onde 0 indica sucesso, e qualquer outro número indica uma falha.

O comando exit é usado para finalizar um script e pode retornar um status de saída específico para indicar ao sistema o sucesso ou erro da execução.

Como funciona o status de saída

Cada comando ou script em execução no terminal retorna um status de saída. Esse status pode ser acessado através da variável especial $?, que armazena o status do último comando executado. Os status disponíveis são:

  • Status de saída 0: indica que o comando foi executado com sucesso.
  • Status de saída diferente de 0: indica que houve um erro.

Como verificar o status de saída de um comando

Para verificar o status de saída de um comando, podemos executar o comando e logo em seguida verificar o valor da variável $?. Vejamos um exemplo no script a seguir.

#!/bin/bash
ls /etc
echo "Status de saída do comando ls: $?"
ls /diretorio_que_nao_existe
echo "Status de saída do comando ls: $?"

Neste exemplo:

1. O primeiro comando ls /etc deve listar o conteúdo de /etc, e o status de saída será 0 (sucesso).
2. O segundo comando tenta listar um diretório inexistente (/diretorio_que_nao_existe), e o status de saída será diferente de 0 (erro).

O comando exit no Linux

O comando exit é utilizado para terminar a execução de um script e retornar um status de saída. Esse status pode ser qualquer número que você queira definir para indicar se o script foi bem-sucedido ou se houve um erro.

  • exit 0: Indica que o script foi executado com sucesso.
  • exit 1, exit 2, etc.: Indica que houve um erro ou situação específica no script. Os números de erro podem ser usados de acordo com a sua lógica para representar diferentes tipos de problemas.

Exemplo de uso do exit

O exemplo abaixo verifica se um diretório existe. Se o diretório existir, o script termina com exit 0; se não existir, termina com exit 1.

#!/bin/bash
diretorio="/bin"

if [ -d "$diretorio" ]; then
  echo "O diretório $diretorio existe."
  exit 0
else
  echo "O diretório $diretorio não existe."
  exit 1
fi

Após a execução, podemos verificar o status do script com echo $? no terminal. Se o diretório existir, $? terá valor 0; se não existir, $? terá valor 1.

Como utilizar o status de saída para controle de fluxo

O status de saída de um comando pode ser usado para controlar o fluxo do script com condicionais. Vejamos um exemplo com if e status de saída.

#!/bin/bash
ping -c 1 google.com > /dev/null 2>&1

if [ $? -eq 0 ]; then
  echo "Conexão com o site está OK."
else
  echo "Erro: servidor não respondeu."
  exit 1
fi

Neste exemplo:

  • O comando ping tenta se conectar ao servidor de endereço google.com.
  • Se o status de saída for 0, o script informa que a conexão está OK.
  • Se o status de saída for diferente de 0, exibe uma mensagem de erro e finaliza o script com exit 1. Para testar esse erro, altere o endereço do site no script para “google.con” (com n) e rode o script novamente.

Finalmente, verificamos no terminal o status de saída retornado pelo script:

$ echo $?

Trabalhando com operadores && e ||

Os operadores && (AND) e || (OR) permitem executar comandos baseados no status de saída do comando anterior, conforme segue:

  • Comando1 && Comando2: Executa o Comando2 somente se o Comando1 for bem-sucedido.
  • Comando1 || Comando2: Executa o Comando2 somente se o Comando1 falhar.

A seguir temos um exemplo com && e ||.

#!/bin/bash
mkdir /tmp/novo_diretorio && echo "Diretório criado com sucesso." || echo "Falha ao criar o diretório."

Neste exemplo:

  • Se o diretório /tmp/novo_diretorio for criado com sucesso, a mensagem “Diretório criado com sucesso.” será exibida.
  • Caso o diretório já exista ou ocorra um erro, exibe “Falha ao criar o diretório.”

Mais exemplos de status de saída no Linux

Vejamos mais alguns exemplos do emprego de status de saída em scripts do shell.

1. Verificar um arquivo específico

O exemplo abaixo verifica se o arquivo /etc/passwd existe. Se existir, o script exibe “Arquivo encontrado” e sai com exit 0. Caso contrário, exibe “Arquivo não encontrado” e sai com exit 1.

#!/bin/bash
if [ -e /etc/passwd ]; then
  echo "Arquivo encontrado."
  exit 0
else
  echo "Arquivo não encontrado."
  exit 1
fi

2. Usar exit para verificar permissões de execução

Neste exemplo, verificamos se o usuário tem permissão para executar um arquivo. Se tiver, o script exibe “Você tem permissão de execução”; caso contrário, exibe uma mensagem de erro e finaliza com exit 1.

#!/bin/bash
arquivo="/usr/bin/nano"
if [ -x "$arquivo" ]; then
  echo "Você tem permissão de execução para $arquivo."
  exit 0
else
  echo "Erro: sem permissão de execução para $arquivo."
  exit 1
fi

3. Verificar se um número é positivo ou negativo

Vamos criar um script que receba um número como argumento. Se o número for positivo, exiba “Número positivo” e finalize com exit 0; se for negativo, exiba “Número negativo” e finalize com exit 2.

#!/bin/bash
numero=$1
if [ $numero -gt 0 ]; then
  echo "Número positivo"
  exit 0
elif [ $numero -lt 0 ]; then
  echo "Número negativo"
  exit 2
else
  echo "O número é zero"
  exit 3
fi

Para testar, executamos o script passando um número a ele como argumento:

$ script.sh 5

Conclusão

O uso do status de saída dos comandos e do comando exit permite que scripts de Shell verifiquem se as operações foram bem-sucedidas ou se houve erros, controlando assim o fluxo e a resposta do script.

Isso é muito útil em automação e monitoramento, onde cada comando pode afetar os passos seguintes e onde é importante comunicar o resultado da execução ao sistema e aos usuários.

Sobre Fábio dos Reis (1226 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

1 Comentário em Shell Scripting – Status de saída dos comandos e o comando exit – 12

  1. Osvaldo Lemos // 10/06/2020 em 15:20 // Responder

    Gosto muito das suas aulas, quero parabeniza-lo pelos excelentes conteúdos, estou tentando aprender linux e gostaria saber se ha curso online. Vi também que não ha todas as aulas no site.

Escreva um comentário

Seu e-mail não será divulgado


*