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
- Piratage facebook changer mot de passe - Guide
- Changer clavier qwerty en azerty - Guide
- Fonction si et - Guide
- Comment changer de compte facebook - Guide
3 réponses
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
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 407
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
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
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 407
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 407
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? ;-)