2017-08-17 2 views
0

Exportez la variable en fonctionQuel est le meilleur dans les scripts shell, que ce soit pour exporter une variable dans un appel de fonction ou retourner en utilisant echo dans l'appel de fonction?

func() { 
    export $1=10 
} 
func param 
echo $param 

Echo la variable en fonction

func() { 
    var=$1 
    var=10 
    echo "$var" 
} 

var=$(func param ) 
echo $var 
+0

Si vous utilisez des fonctions réelles, vous pouvez aussi bien utiliser la valeur de retour de leur part, ce qui est hautement contextuelle et peut même être fondée sur l'opinion. Je ne suis pas sûr que cela soit réellement responsable dans le formulaire actuel. – jdv

Répondre

0

Le premier est préférable, car il ne comporte pas à partir d'un processus distinct pour produire la valeur. Cela dit, vous n'avez pas besoin d'utiliser export, car vous n'avez pas besoin d'exporter la valeur. Vous avez juste besoin d'une variable globale. Utilisez printf pour affecter à une variable dont le nom est passé en argument.

func() { 
    printf -v "$1" '10' 
} 

Notez que dans votre deuxième tentative, l'argument n'est pas réellement utilisé. Qu'est-ce que vous avez écrit est équivalent à

func() { 
    echo 10 
} 

var=$(func)