Ich mache einige Übungsübungen.
Schreiben Sie ein Skript, das eine Monatszahl als Argument erhält und diese Zahl in einen Monatsnamen übersetzt. Das Ergebnis wird auf Standard gedruckt.
Ich habe eine Lösung gefunden:
#test for number of argument
if [ "$#" -eq 0 ] ;
then
echo -e "No argument."
echo -e "Write a number between 1 and 12."
exit 1
elif [ "$#" -gt 1 ] ;
then
echo -e "More than 1 argument."
echo -e "Write a number between 1 and 12."
exit 1
else
numb=$1
case "$numb" in
1) echo "Month: January";;
2) echo "Month: February";;
3) echo "Month: March";;
4) echo "Month: April";;
5) echo "Month: May";;
6) echo "Month: June";;
7) echo "Month: July";;
8) echo "Month: August";;
9) echo "Month: September";;
10) echo "Month: October";;
11) echo "Month: November";;
12) echo "Month: December";;
*) echo -e "You wrote a wrong number. Try again with writing number between 1 and 12.";;
esac
fi
exit 2
exit 0
Was tun exit 1, exit 0
und exit 2
bedeuten, und warum sie verwenden wir?
Antworten:
Hier ist eine gute Referenz für Shell-Exit-Codes :
Vorsichtsmaßnahme: Die Verwendung des richtigen Beendigungscodes ist nicht erforderlich und wird von der Shell nicht erzwungen. Entwickler können die Anleitung ignorieren, wenn sie dies für sinnvoll halten.
quelle
Die Verwendung von
exit
und einer Zahl ist eine praktische Möglichkeit, das Ergebnis Ihres Skripts anzuzeigen. Es ahmt die Art und Weise nach, wie Bash-Befehle einen Rückkehrcode ausgeben. Bei bash-Befehlen bedeutet der Rückgabewert 0 in der Regel, dass alles fehlerfrei ausgeführt wurde.exit
Außerdem stoppt Ihr Skript die Ausführung an diesem Punkt und kehrt zur Befehlszeile zurück.Jeder Rückkehrcode, der größer als 0 ist, zeigt eine Art Fehler an, obwohl der Fehler manchmal nicht kritisch ist. Für jeden Befehl sollte es möglich sein, eine Dokumentation zu finden, die Ihnen sagt, was jeder Rückkehrcode bedeutet.
Sie können den Rückkehrcode des letzten Bash-Befehls erhalten, indem Sie die Shell-Variable
$?
wie folgt verwenden:Wenn Sie dies in einem Skript verwenden, können Sie den Rückkehrcode auf die gleiche Weise abfragen, wenn die Ausführung abgeschlossen ist. So werden Sie sehen, dass mit:
Ist irgendwie sinnlos, da man das
exit 0
Teil nie erreichen kann .quelle
Alleine
exit
impliziert dies einen Exit-Wert von Null oder den erfolgreichen Abschluss Ihres Skripts. Sie müssen das Null-Argument nicht zum Exit-Befehl hinzufügen, um den erfolgreichen Abschluss anzuzeigen. Ihr Skript wird möglicherweise (oder wahrscheinlich) erfolgreich beendet, obwohl es auf eine fehlerhafte Bedingung hin überprüft wird. In diesem Fall soll das Programm mit der Fehlerbedingung (oder 1) beendet werden.Der
exit
Befehl in der letzten Zeile muss überhaupt nicht vorhanden sein. Es könnte mit der Null oder gar nicht aufgerufen werden. Ohne Angabe des 1-Arguments für den Befehl exit wäre die Antwort in all diesen Fällenecho $?
Null.echo $?
Wenn Sie jedoch das Argument 1 für den Befehl exit angeben, lautet die Antwort auf 1. Verwenden Sie also das Argument 1 für den Befehl exit, wenn Sie angeben möchten, dass das Skript mit einer Fehlerbedingung beendet wurde.quelle