Verwendung von Exit-Status-Codes
Exit-Statuscodes sind numerische Werte, die von einem Befehl oder Skript zurückgegeben werden, um anzuzeigen, ob die Ausführung erfolgreich abgeschlossen wurde. In Linux- und Unix-ähnlichen Systemen gilt:
- Ein Exit-Status von
0 zeigt Erfolg an.
- Ein Exit-Status ungleich Null (1 - 255) zeigt einen Fehler oder eine andere Ausnahmesituation an.
Erstellen wir nun ein Skript, das verschiedene Exit-Statuscodes basierend auf bestimmten Bedingungen verwendet.
Zunächst erstellen wir eine neue Skriptdatei:
cd ~/project
touch status_codes.sh
Öffnen Sie die Datei mit Nano:
nano status_codes.sh
Fügen Sie folgenden Inhalt hinzu:
#!/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
Speichern Sie die Datei (Strg+O, Enter) und verlassen Sie Nano (Strg+X).
Machen Sie das Skript ausführbar:
chmod +x status_codes.sh
Testen wir nun dieses Skript in verschiedenen Szenarien.
Zunächst führen Sie das Skript ohne Argumente aus:
./status_codes.sh
Sie sollten Folgendes sehen:
Error: No filename provided
Usage: ./status_codes.sh <filename>
Das Skript ist mit dem Statuscode 1 beendet. Sie können den Exit-Status des letzten Befehls mithilfe der speziellen Variable $? überprüfen:
echo $?
Sie sollten Folgendes sehen:
1
Erstellen wir nun eine Testdatei und führen das Skript erneut aus:
echo "This is a test file" > testfile.txt
./status_codes.sh testfile.txt
Sie sollten Folgendes sehen:
File 'testfile.txt' exists and is readable
Überprüfen Sie den Exit-Status:
echo $?
Sie sollten Folgendes sehen:
0
Dies zeigt an, dass das Skript erfolgreich abgeschlossen wurde.
Versuchen Sie schließlich ein nicht vorhandenes File:
./status_codes.sh nonexistent_file.txt
Sie sollten Folgendes sehen:
Error: File 'nonexistent_file.txt' not found
Überprüfen Sie den Exit-Status:
echo $?
Sie sollten Folgendes sehen:
2
Dies zeigt, wie Sie verschiedene Exit-Statuscodes verwenden können, um verschiedene Arten von Fehlern anzuzeigen.