Comment faire changer une variable en fonction de for
Résolu/Fermé
lsda26
Messages postés
68
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
6 septembre 2013
-
13 mars 2013 à 12:35
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 13 mars 2013 à 16:35
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 13 mars 2013 à 16:35
A voir également:
- Comment faire changer une variable en fonction de for
- Changer dns - Guide
- Fonction si et - Guide
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Changer clavier qwerty en azerty - Guide
- Changer carte graphique - Guide
3 réponses
dubcek
Messages postés
18777
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 mars 2025
5 630
13 mars 2013 à 13:00
13 mars 2013 à 13:00
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
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
13 mars 2013 à 13:10
13 mars 2013 à 13:10
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 $
dubcek
Messages postés
18777
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 mars 2025
5 630
13 mars 2013 à 13:21
13 mars 2013 à 13:21
effectivement, c'est du sh qui ne connait pas ${!var}
lsda26
Messages postés
68
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
6 septembre 2013
13 mars 2013 à 14:07
13 mars 2013 à 14:07
Merci pour l'info, je ne connaissais pas!
Utilisateur anonyme
13 mars 2013 à 15:42
13 mars 2013 à 15:42
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.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
13 mars 2013 à 16:01
13 mars 2013 à 16:01
Salut QQCQCPQ,
il est effectivement mal venu de lui recommander eval
Toi aussi t'as été frappé par les foudres de N_BaH ? ;-DD
il est effectivement mal venu de lui recommander eval
Toi aussi t'as été frappé par les foudres de N_BaH ? ;-DD
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)
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
13 mars 2013 à 16:35
13 mars 2013 à 16:35
Il y a des années que j'ai son site en bookmark, tout comme ces pots de http://bash-hackers.org/wiki/doku.php? ;-)