Utilisation des codes de statut de sortie
Les codes de statut de sortie sont des valeurs numériques retournées par une commande ou un script pour indiquer si l'exécution s'est terminée avec succès. Dans les systèmes Linux et Unix-like :
- Un code de statut de sortie
0 indique un succès
- Un code de statut de sortie non nul (de 1 à 255) indique une erreur ou une autre condition exceptionnelle
Créons un script qui utilise différents codes de statut de sortie en fonction de certaines conditions.
Tout d'abord, créez un nouveau fichier de script :
cd ~/project
touch status_codes.sh
Ouvrez le fichier avec nano :
nano status_codes.sh
Ajoutez le contenu suivant :
#!/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
Enregistrez le fichier (Ctrl+O, Entrée) et quittez nano (Ctrl+X).
Rendez le script exécutable :
chmod +x status_codes.sh
Maintenant, testons ce script dans différents scénarios.
Tout d'abord, exécutez le script sans aucun argument :
./status_codes.sh
Vous devriez voir :
Error: No filename provided
Usage: ./status_codes.sh <filename>
Le script s'est terminé avec le code de statut 1. Vous pouvez vérifier le code de statut de sortie de la dernière commande en utilisant la variable spéciale $? :
echo $?
Vous devriez voir :
1
Maintenant, créons un fichier de test et exécutons le script à nouveau :
echo "This is a test file" > testfile.txt
./status_codes.sh testfile.txt
Vous devriez voir :
File 'testfile.txt' exists and is readable
Vérifiez le code de statut de sortie :
echo $?
Vous devriez voir :
0
Cela indique que le script s'est terminé avec succès.
Enfin, essayons avec un fichier qui n'existe pas :
./status_codes.sh nonexistent_file.txt
Vous devriez voir :
Error: File 'nonexistent_file.txt' not found
Vérifiez le code de statut de sortie :
echo $?
Vous devriez voir :
2
Cela montre comment vous pouvez utiliser différents codes de statut de sortie pour indiquer différents types d'erreurs.