Comment sortiriez-vous d'une fonction si une condition est vraie sans tuer tout le script, revenez simplement à avant d'appeler la fonction.
Exemple
# 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
défini en haut de votre script et votrereturn 1
ou tout autre nombre en plus de 0, tout votre script se fermera.||
il est possible de renvoyer un code différent de zéro et de continuer à exécuter le script.set -e
et renvoyer des valeurs non nulles, car cela m'a surpris dans le passé.Utiliser l'
return
opérateur:la source
Si vous voulez revenir d'une fonction externe avec une erreur sans
exit
ing, vous pouvez utiliser cette astuce:Essayer:
Ceci a l'avantage / inconvénient supplémentaire que vous pouvez éventuellement désactiver cette fonction:
__fail_fast=x do-something-complex
.Notez que cela fait que la fonction la plus externe renvoie 1.
la source
fail
, que fait le colon ici?:
est un opérateur bash intégré qui est un "no-op". Il évalue l'expression mais ne fait rien avec. Je l'utilise pour faire une substitution de variable qui échouera si la variable n'est pas définie, ce qui n'est évidemment pas le cas.do-something-complex
? <code> checkPara () {if [$ 1 -lt $ 2]; puis echo $ 3; Fi; } do-something-complex () {checkPara $ # 1 "Un message ici pour avertir l'utilisateur comment utiliser la fonction." echo "yes"} </code> Jedo-something-complex
montrerais à l'utilisateur un message et je reviendrais immédiatement s'il n'y a pas de paramètre fourni à la fonction.checkPara
utiliser mafail
fonction pour quitter toute la pile de fonctions.code
bloc ne fonctionne pas en commentaire sur stackoverflow). Il continue de courir aprèscheckPara
.