Détails
Valeur de retour dans une fonction Bash
Je travaille avec un script bash et je veux exécuter une fonction pour imprimer une valeur de retour :
function fun1(){
return 34
}
function fun2(){
local res=$(fun1)
echo $res
}
Lorsque j'exécute fun2
, il n'imprime pas "34" ;. Pourquoi est-ce le cas ?
265
3
Bien que bash ait une instruction
return
, la seule chose que vous pouvez spécifier avec elle est le statutexit
de la fonction elle-même (une valeur entre0
et255
, 0 signifiant "succès" ;). Doncreturn
n'est pas ce que vous voulez.Vous pourriez vouloir convertir votre instruction
return
en instructionecho
- de cette façon, la sortie de votre fonction pourrait être capturée en utilisant des accolades$()
, ce qui semble être exactement ce que vous voulez.Voici un exemple :
Une autre façon d'obtenir la valeur de retour (si vous voulez juste retourner un entier de 0 à 255) est
$?
.Notez également que vous pouvez utiliser la valeur de retour pour utiliser la logique booléenne comme
fun1 || fun2
qui ne lancerafun2
que sifun1
retourne une valeur0
. La valeur de retour par défaut est la valeur de sortie de la dernière instruction exécutée dans la fonction.$(...)
capture le texte envoyé à stdout par la commande qu'il contient.return
n'envoie pas de texte vers stdout.$?
contient le code de résultat de la dernière commande.L'instruction
return
définit le code de sortie de la fonction, de la même manière queexit
le fera pour le script entier.Le code de sortie de la dernière commande est toujours disponible dans la variable
$?
.