Wie würden Sie eine Funktion verlassen, wenn eine Bedingung erfüllt ist, ohne das gesamte Skript zu beenden? Kehren Sie einfach zurück, bevor Sie die Funktion aufgerufen haben.
Beispiel
# Start script
Do scripty stuff here
Ok now lets call FUNCT
FUNCT
Here is A to come back to
function FUNCT {
if [ blah is false ]; then
exit the function and go up to A
else
keep running the function
fi
}
set -e
oben in Ihrem Skript und Ihrereturn 1
oder eine andere Zahl außer 0 festgelegt haben.||
ist es möglich, einen Code ungleich Null zurückzugeben und das Skript weiterhin auszuführen.set -e
und Werte ungleich Null zurückgegeben werden müssen, da mich das in der Vergangenheit überrascht hat.Verwenden
return
Betreiber:quelle
Wenn Sie mit einem Fehler von einer äußeren Funktion zurückkehren möchten, ohne
exit
ing, können Sie diesen Trick verwenden:Probieren Sie es aus:
Dies hat den zusätzlichen Vor- und Nachteil, dass Sie diese Funktion optional deaktivieren können :
__fail_fast=x do-something-complex
.Beachten Sie, dass dadurch die äußerste Funktion 1 zurückgibt.
quelle
fail
, was macht der Doppelpunkt hier?:
ist ein eingebauter Bash-Operator, der ein "No-Op" ist. Es wertet den Ausdruck aus, macht aber nichts damit. Ich verwende es, um eine Variablensubstitution durchzuführen, die fehlschlägt, wenn die Variable nicht definiert ist, was offensichtlich nicht der Fall ist.do-something-complex
? <code> checkPara () {if [$ 1 -lt $ 2]; dann echo $ 3; fi; } do-Something-Complex () {checkPara $ # 1 "Hier eine Meldung, die den Benutzer vor der Verwendung der Funktion warnt." echo "yes"} </ code> Ich würde demdo-something-complex
Benutzer eine Nachricht anzeigen und sofort zurückkehren, wenn der Funktion kein Parameter zugeführt wird.checkPara
meinefail
Funktion verwenden würden, um den gesamten Funktionsstapel zu verlassen.code
Block funktioniert nicht im Kommentar zum Stackoverflow). Es läuft weitercheckPara
.