#1 Le 20/04/2021, à 21:48
- Tawal
Parser une donnée dans plusieurs noms de variable
Hello,
Je me demande comment affecter les champs d'une variable (ou d'un retour de commande) dans différents noms de variables.
Par exemple :
Soit une variable contenant :
nom | adresse | tel | mail
La méthode que j'utilise est :
nom="$(awk -F "|" '{print $1}')"
adresse= ...
J'ai bien pensé à utiliser un tableau mais Tab[0]=nom Tab[1]=adresse ... n'est pas très lisible dans le script.
Comment feriez-vous ?
En vous remerciant.
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#2 Le 20/04/2021, à 23:58
- beuguissime
Re : Parser une donnée dans plusieurs noms de variable
Bonsoir,
Parser… tssk… Analyser syntaxiquement, c'est pas plus clair ?
Blague à part, est-ce que la fonction primitive mapfile de bash te conviendrait ?
$ help mapfile
mapfile: mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
Read lines from the standard input into an indexed array variable.
Read lines from the standard input into the indexed array variable ARRAY, or
from file descriptor FD if the -u option is supplied. The variable MAPFILE
is the default ARRAY.
Options:
-d delim Use DELIM to terminate lines, instead of newline
-n count Copy at most COUNT lines. If COUNT is 0, all lines are copied
-O origin Begin assigning to ARRAY at index ORIGIN. The default index is 0
-s count Discard the first COUNT lines read
-t Remove a trailing DELIM from each line read (default newline)
-u fd Read lines from file descriptor FD instead of the standard input
-C callback Evaluate CALLBACK each time QUANTUM lines are read
-c quantum Specify the number of lines read between each call to
CALLBACK
Arguments:
ARRAY Array variable name to use for file data
If -C is supplied without -c, the default quantum is 5000. When
CALLBACK is evaluated, it is supplied the index of the next array
element to be assigned and the line to be assigned to that element
as additional arguments.
If not supplied with an explicit origin, mapfile will clear ARRAY before
assigning to it.
Exit Status:
Returns success unless an invalid option is given or ARRAY is readonly or
not an indexed array.
Dernière modification par beuguissime (Le 20/04/2021, à 23:58)
Hors ligne
#3 Le 21/04/2021, à 00:44
- Watael
Re : Parser une donnée dans plusieurs noms de variable
tableau associatif :
$ var="nom | adresse | tel | mail"
$ declare -A tabloAsso
$ IFS='|' read tabloASso[nom] tabloAsso[adresse] tabloASso[tel] tabloASso[mail] <<<"$var"
/!\ttention : les tableaux associatifs étant hashés ils ne sont pas triés.
donc, un for i in "${tabloAsso[@]}" est imprédictible.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#4 Le 21/04/2021, à 09:53
- Tawal
Re : Parser une donnée dans plusieurs noms de variable
Désolé pour mon anglicisme.
Je pensais bien à mapfile/readarray quand je parlais de tableau.
Je crois que la solution de Watael me convient mieux.
Même si elle renferme quelques pièges.
Merci de l'avertissement quand à quant à l'ordre dans les tableaux associatifs.
Au plaisir.
Dernière modification par Tawal (Le 21/04/2021, à 13:37)
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#5 Le 21/04/2021, à 11:38
- Watael
Re : Parser une donnée dans plusieurs noms de variable
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#6 Le 21/04/2021, à 12:29
- diesel
Re : Parser une donnée dans plusieurs noms de variable
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
#7 Le 21/04/2021, à 13:36
- Tawal
Re : Parser une donnée dans plusieurs noms de variable
Oups corrigé, merci
Bertrand ? Non, un quanta de perfection
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#8 Le 21/04/2021, à 13:57
- beuguissime
Re : Parser une donnée dans plusieurs noms de variable
Un quantum, des quanta.
Hors ligne