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

No 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.

Status de saída: como funciona

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.

– 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.

Verificando 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 $?.

#Exemplo básico

#!/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

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=”/meu_diretorio”

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, você pode verificar o status do script com $? no terminal. Se o diretório existir, $? terá valor 0; se não existir, $? terá valor 1.

Utilizando 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.

#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 a internet estabelecida.”
else
echo “Erro: sem conexão com a internet.”
exit 1
fi

Neste exemplo:
– O comando ping tenta se conectar ao google.com.
– Se o status de saída for 0, o script informa que a conexão está estabelecida.
– Se o status de saída for diferente de 0, exibe uma mensagem de erro e finaliza o script com exit 1.

Trabalhando com operadores && e ||

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

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

#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.”

Exemplos práticos

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

Exercícios práticos

1. Verificar a existência de um diretório
Crie um script que receba o nome de um diretório como argumento. O script deve verificar se o diretório existe. Se existir, exiba “Diretório encontrado” e finalize com exit 0; caso contrário, exiba “Diretório não encontrado” e finalize com exit 1.

2. Verificar se um número é positivo ou negativo
Crie 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.

3. Conexão com a internet
Crie um script que verifique a conexão com a internet usando o comando ping para google.com. Se a conexão for bem-sucedida, exiba “Conexão ativa” e finalize com exit 0. Caso contrário, exiba “Erro: sem conexão” e finalize com exit 1.

4. Verificar permissões de leitura de um arquivo
Crie um script que receba o caminho de um arquivo como argumento e verifique se o usuário tem permissão de leitura. Se tiver, exiba “Permissão de leitura confirmada” e finalize com exit 0; caso contrário, exiba “Permissão negada” e finalize com exit 3.

5. Executar um comando condicionalmente
Crie um script que tente criar um diretório chamado /tmp/teste_condicional. Se o diretório for criado com sucesso, exiba “Diretório criado”; caso contrário, exiba “Falha ao criar o diretório”.

Resolução dos exercícios

#Exercício 1: Verificar a existência de um diretório

#!/bin/bash
diretorio=$1
if [ -d “$diretorio” ]; then
echo “Diretório encontrado.”
exit 0
else
echo “Diretório não encontrado.”
exit 1
fi

#Exercício 2: Verificar se um número é positivo ou negativo

#!/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

#Exercício 3: Conexão com a internet

#!/bin/bash
ping -c 1 google.com > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo “Conexão ativa”
exit 0
else
echo “Erro: sem conexão”
exit 1
fi

#Exercício 4: Verificar permissões de leitura de um arquivo

#!/bin/bash
arquivo=$1
if [ -r “$arquivo” ]; then
echo “Permissão de leitura confirmada”
exit 0
else
echo “Permissão negada”
exit 3
fi

#Exercício 5: Executar um comando condicionalmente

#!/bin/bash
mkdir /tmp/teste_condicional && echo “Diretório criado” || echo “Falha ao criar o diretório”

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 (1212 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


*