Usando Códigos de Status de Saída
Os códigos de status de saída são valores numéricos retornados por um comando ou script para indicar se ele foi concluído com sucesso. Em sistemas Linux e semelhantes ao Unix:
- Um status de saída de
0 indica sucesso
- Um status de saída diferente de zero (1-255) indica um erro ou outra condição excepcional
Vamos criar um script que usa diferentes códigos de status de saída com base em certas condições.
Primeiro, crie um novo arquivo de script:
cd ~/project
touch status_codes.sh
Abra o arquivo com nano:
nano status_codes.sh
Adicione o seguinte conteúdo:
#!/bin/bash
## Demonstrating exit status codes
## Check if a filename was provided as an argument
if [ $## -eq 0 ]; then
echo "Error: No filename provided"
echo "Usage: $0 <filename>"
## Exit with status 1 (general error)
exit 1
fi
filename=$1
## Check if the file exists
if [ ! -f "$filename" ]; then
echo "Error: File '$filename' not found"
## Exit with status 2 (file not found)
exit 2
fi
## Check if the file is readable
if [ ! -r "$filename" ]; then
echo "Error: File '$filename' is not readable"
## Exit with status 3 (permission denied)
exit 3
fi
## If we get here, everything is fine
echo "File '$filename' exists and is readable"
## Exit with status 0 (success)
exit 0
Salve o arquivo (Ctrl+O, Enter) e saia do nano (Ctrl+X).
Torne o script executável:
chmod +x status_codes.sh
Agora, vamos testar este script com diferentes cenários.
Primeiro, execute o script sem nenhum argumento:
./status_codes.sh
Você deve ver:
Error: No filename provided
Usage: ./status_codes.sh <filename>
O script saiu com o código de status 1. Você pode verificar o status de saída do último comando usando a variável especial $?:
echo $?
Você deve ver:
1
Agora, vamos criar um arquivo de teste e executar o script novamente:
echo "This is a test file" > testfile.txt
./status_codes.sh testfile.txt
Você deve ver:
File 'testfile.txt' exists and is readable
Verifique o status de saída:
echo $?
Você deve ver:
0
Isso indica que o script foi concluído com sucesso.
Finalmente, tente com um arquivo inexistente:
./status_codes.sh nonexistent_file.txt
Você deve ver:
Error: File 'nonexistent_file.txt' not found
Verifique o status de saída:
echo $?
Você deve ver:
2
Isso demonstra como você pode usar diferentes códigos de status de saída para indicar diferentes tipos de erros.