Comment faire changer une variable en fonction de for [Résolu/Fermé]
Signaler
lsda26
zipe31
- Messages postés
- 68
- Date d'inscription
- mardi 3 avril 2007
- Statut
- Membre
- Dernière intervention
- 6 septembre 2013
zipe31
- Messages postés
- 36299
- Date d'inscription
- dimanche 7 novembre 2010
- Statut
- Contributeur
- Dernière intervention
- 27 janvier 2021
A voir également:
- Comment faire changer une variable en fonction de for
- Comment faire changer une variable en fonction de for ✓ - Forum - Shell
- Changer valeur variable n fonction d'une list ✓ - Forum - Webmaster
- Excel changer valeur cellule en fonction d'une autre ✓ - Forum - Excel
- Excel changement de couleur en fonction de la date ✓ - Forum - Excel
- Bague qui change de couleur en fonction de l'humeur - Forum - Loisirs / Divertissements
3 réponses
dubcek
- Messages postés
- 18240
- Date d'inscription
- lundi 15 janvier 2007
- Statut
- Contributeur
- Dernière intervention
- 30 novembre 2020
hello
il manque un eval
il manque un eval
$ cat f1 #!/bin/bash MAC='a4:ba:db:01:01:01' MACWIFI='1c:af:f7:02:02:02' for j in MAC MACWIFI do MACTest=$(eval echo \$$j) echo $MACTest done; $ ./f1 a4:ba:db:01:01:01 1c:af:f7:02:02:02 $
zipe31
- Messages postés
- 36299
- Date d'inscription
- dimanche 7 novembre 2010
- Statut
- Contributeur
- Dernière intervention
- 27 janvier 2021
Salut,
Mieux vaut faire avec l'indirection des variables, "eval" étant assez mal considéré ;-(
Mieux vaut faire avec l'indirection des variables, "eval" étant assez mal considéré ;-(
$ cat foo.sh #!/bin/bash MAC='a4:ba:db:01:01:01' MACWIFI='1c:af:f7:02:02:02' for j in MAC MACWIFI do MACTest="$j" echo "${!MACTest}" done $ ./foo.sh a4:ba:db:01:01:01 1c:af:f7:02:02:02 $
Utilisateur anonyme
salut,
lsda26 utilise bash, alors il est effectivement mal venu de lui recommander eval.
En sh, pour ne pas recourir à eval, on peut passer par un sous-shell
Et en bash, on peut utiliser un tableau associatif.
enfin, n'importe quoi plutôt que de préconiser eval.
lsda26 utilise bash, alors il est effectivement mal venu de lui recommander eval.
En sh, pour ne pas recourir à eval, on peut passer par un sous-shell
#!/bin/sh MAC='a4:ba:db:01:01:01' MACWIFI='1c:af:f7:02:02:02' (set -- "$MAC" "$MACWIFI"; for i do echo "$i"; done)
Et en bash, on peut utiliser un tableau associatif.
#!/bin/bash declare -A MACwi=( [re]='a4:ba:db:01:01:01' [fi]='1c:af:f7:02:02:02' ) for i in "${!MACwi[@]}"; do echo "$i = ${MACwi[$i]}"; done
enfin, n'importe quoi plutôt que de préconiser eval.
Utilisateur anonyme
c'est qu'on a probablement eu le même degré de lecture du wiki de Greg Wooledge (page, qui, d'ailleurs, vient d'être mise à jour par Chris Johnson; dans mon souvenir elle était (la page ;)) plus stricte)