Variable et boucle for .. [RESOLU] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 16-10-2008 à 13:25:32
Single quote et double quote. 
Pas de quoi ![[:prodigy] [:prodigy]](https://forum-images.hardware.fr/images/perso/prodigy.gif) 
 
Marsh Posté le 16-10-2008 à 13:31:11
Oui je m'en doutait un peu mais je ne trouve pas la bonne "combinaison" à utiliser !
Marsh Posté le 16-10-2008 à 13:38:05
PWET="Yooplaboom" 
echo '$PWET' --> Affichage de $PWET 
echo "$PWET" --> Affichage de Yooplaboom
Marsh Posté le 16-10-2008 à 14:44:08
Merci, mais cela ne focntionne pas : 
[preappl11i@rexfraappt001 drp]$ echo  $APPL_TOP $COMMON_TOP 
/preprod/preprodappl /preprod/preprodcomn 
[preappl11i@rexfraappt001 drp]$ 
[preappl11i@rexfraappt001 drp]$ for REP in $APPL_TOP $COMMON_TOP  ; do echo $REP '$REP' "$REP" ; done 
/preprod/preprodappl $REP /preprod/preprodappl 
/preprod/preprodcomn $REP /preprod/preprodcomn 
[preappl11i@rexfraappt001 drp]$ for REP in APPL_TOP COMMON_TOP  ; do echo $REP '$REP' "$REP" ; done 
APPL_TOP $REP APPL_TOP 
COMMON_TOP $REP COMMON_TOP 
[preappl11i@rexfraappt001 drp]$ 
  
 
Marsh Posté le 16-10-2008 à 14:46:57
tu veux pas mettre des balise "code" ou "fixed" des fois, histoire que ça soit lisible ? ![[:toukc] [:toukc]](https://forum-images.hardware.fr/images/perso/toukc.gif)
Marsh Posté le 16-10-2008 à 15:02:43
Yep !    
  
 
preappl11i@rexfraappt001 drp]$ echo  $APPL_TOP $COMMON_TOP 
| /preprod/preprodappl /preprod/preprodcomn | 
 
 
[preappl11i@rexfraappt001 drp]$ 
[preappl11i@rexfraappt001 drp]$ 
[preappl11i@rexfraappt001 drp]$ for REP in $APPL_TOP $COMMON_TOP  ; do echo $REP  '$REP'  "$REP" ; done 
| /preprod/preprodappl $REP /preprod/preprodappl | 
 
| /preprod/preprodcomn $REP /preprod/preprodcomn | 
 
 
preappl11i@rexfraappt001 drp]$ 
preappl11i@rexfraappt001 drp]$ 
[preappl11i@rexfraappt001 drp]$ for REP in APPL_TOP COMMON_TOP  ; do echo $REP   '$REP'   "$REP" ; done 
| APPL_TOP $REP APPL_TOP | 
 
| COMMON_TOP $REP COMMON_TOP | 
 
 
[preappl11i@rexfraappt001 drp]$ 
 
C'est mieux comme ça ?  
  
Marsh Posté le 16-10-2008 à 15:11:32
oui 
sinon pour répondre à ta question ... c'est pas possible 
à partir du moment ou tu écris 
| Code : 
 | 
tes variables $toto et $tata sont automatiquement traduites avant que la boucle ne soit lancée et que les valeurs soient affectées à $i 
Marsh Posté le 16-10-2008 à 15:20:02
OK merci pour lma réponse. 
Et si je pars sur un truc comme ça :  
 
| Code : 
 | 
 
 
Est ce possible d'afficher le contenu de $toto ou $tata ?
Marsh Posté le 16-10-2008 à 15:21:51
| Code : 
 | 
à essayer, sans garantie 
Marsh Posté le 16-10-2008 à 15:29:54
Déja testé , il aime pas du tout ... :  
line 19: ${$REP}: bad substitution   
  
Marsh Posté le 16-10-2008 à 15:30:50
Déja testé , il aime pas du tout ... :  
line 19: ${$REP}: bad substitution   
   
Mais merci quand même   
 
Marsh Posté le 16-10-2008 à 15:31:29
ben sinon y'a la méthode Conan ![[:prodigy] [:prodigy]](https://forum-images.hardware.fr/images/perso/prodigy.gif)
| Code : 
 | 
![[:wark0] [:wark0]](https://forum-images.hardware.fr/images/perso/wark0.gif)
edit: quoi que, j'ai un doute en fait ![[:transparency] [:transparency]](https://forum-images.hardware.fr/images/perso/transparency.gif)
edit²: ah sinon, voir avec les fonctions "env" ou "getenv" ... ![[:icon3] [:icon3]](https://forum-images.hardware.fr/images/perso/icon3.gif)
Marsh Posté le 16-10-2008 à 15:37:35
OK merci je vais regarder ça (eval et get env) 
J'update le topic quand cela sera OK ! 
Marsh Posté le 16-10-2008 à 16:20:11
Ben ... pas mieux !! 
eval sert à évaluer une commande je ne vois pas trop à quoi cela va me servir 
Marsh Posté le 16-10-2008 à 17:05:12
Exemple : 
| #!/bin/sh  | 
 
Explication : la chaine qui suit le "eval" est evaluée par le shell, qui va remplacer les deux $i par leur valeur. Le eval va évaluer le résultat, c'est à dire par exemple pour la première boucle, la chaine "echo TOTO = $TOTO".
Marsh Posté le 16-10-2008 à 17:14:51
Merci beaucoup !
Ca fonctionne ...
J'ai pas trop bien compris ce que fait concrètement eval, j'y reflechirais à tête reposé ...
Merci encore !
Marsh Posté le 16-10-2008 à 17:25:50
Il evalue l'expression formée par la concaténation de ce que tu lui passe en argument (ici on lui passe un seul argument, qui est une chaine).
Marsh Posté le 17-10-2008 à 15:42:45
En plus clair   , eval force le shell à interpreter une chaine de caractère comme une commande :
 , eval force le shell à interpreter une chaine de caractère comme une commande :  
| [preappl11i@rexfraappt001 drp]$ echo Bonjour à tous  | 
Marsh Posté le 06-11-2008 à 21:25:17
Hop, ma contribution  
 
 
 
| Code : 
 | 
 
Marsh Posté le 16-10-2008 à 13:23:37
Bonjour à tous,
Il y a quelque chose que je n'arrive pas à réaliser avec un shell script.Je m'explique.
Je passe comme arguments à une boucle for une série de variable d'environnements qui contiennent des chemins :
[preappl11i@rexfraappt001 drp]$ echo $APPL_TOP
/preprod/preprodappl
[preappl11i@rexfraappt001 drp]$ echo $COMMON_TOP
/preprod/preprodcomn
[preappl11i@rexfraappt001 drp]$
J'aimerais, dans la boucle for afficher le nom de la variable et le contenu.
Si je fais ça, le contenue de la variable s'affcihe
for REP in $APPL_TOP $COMMON_TOP ; do
echo -e " $REP : "
done
si je fais ça, le nom de la variable s'affiche :
for REP in APPL_TOP COMMON_TOP ; do
echo -e "$REP : "
done
La question est : comment réussir à afficher le nom et le contenu des variables dans la même boucle ?
Si quelqu'un à une idée ....
Message édité par Drix75 le 16-10-2008 à 17:15:32