#1 Le 01/02/2020, à 14:37
- diesel
[RESOLU] Affecter la sortie d'une commande à plusieurs variables
Bonjour,
Dans un script bash, j'ai une commande (dont le temps d'exécution est non négligeable) qui me donne une sortie sous la forme de 3 lignes, chacune contenant un nombre ; par exemple
1
2
14
et je voudrais stocker chacun des nombres dans une variable (pour des raisons de lisibilité du code, je ne veux pas avoir ces valeurs, qui ont chacune une signification très différente des deux autres, dans un tableau indexé).
Alors, il y a bien la solution
toto=$(commande)
première_variable_avec_un_nom_explicite=${toto[0]}
deuxième_variable_avec_un_nom_explicite=${toto[1]}
troisième_variable_avec_un_nom_explicite=${toto[2]}
mais est-ce qu'il y aurait une solution pour affecter directement la sortie de ma commande aux trois variables ?
Merci d'avance.
Amicalement.
Jean-Marie
Dernière modification par diesel (Le 01/02/2020, à 14:57)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#2 Le 01/02/2020, à 14:53
- Watael
Re : [RESOLU] Affecter la sortie d'une commande à plusieurs variables
salut,
read -r varUn varDeux varTrois < <(commande)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 01/02/2020, à 14:57
- diesel
Re : [RESOLU] Affecter la sortie d'une commande à plusieurs variables
Quand tu le dis, ça paraît si évident.
Merci beaucoup.
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#4 Le 01/02/2020, à 20:26
- kamaris
Re : [RESOLU] Affecter la sortie d'une commande à plusieurs variables
C'est un peu bizarre cette affaire : si commande renvoie bien le résultat sur trois lignes, alors
read -r varUn varDeux varTrois < <(commande)
ne devrait renseigner que varUn. Il faudrait plutôt faire
read -d'' -r varUn varDeux varTrois < <(commande)
Par ailleurs, toto=$(commande) ne génèrera pas un tableau, il faudrait faire toto=($(commande)).
Hors ligne
#5 Le 01/02/2020, à 20:41
- diesel
Re : [RESOLU] Affecter la sortie d'une commande à plusieurs variables
Bonsoir Kamaris,
Très juste. J'ai effectivement adapté ce que m'a proposé Watael en ajoutant un "-d ' '".
Très juste aussi l'erreur de syntaxe dans mon premier post.
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#6 Le 02/02/2020, à 02:00
- Watael
Re : [RESOLU] Affecter la sortie d'une commande à plusieurs variables
$ mapfile -t toto < <(commande)
$ echo "${toto[0]}"
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne