Posez votre question Signaler

Probleme Variable [Résolu]

Edwingb - Dernière réponse le 8 févr. 2012 à 11:58
Bonjour,
Voici mon script "afficher":
#!/bin/ksh
i=1
while [[ $i -lt 2 ]]; do
echo "entrez un nom : "
read nom$i
echo $(nom$i)
((i++))
done
Ensuite dans mon invite de commande :
#chmod 755 afficher
#PATH=$PATH:.
#afficher
entrez un nom :
edwing
./afficher: ligne 6: nom1: non trouvé
entrez un nom :
edwingenerve
./afficher: ligne 6: nom2: non trouvé
Alors que si je met "echo $nom1" a la place de "echo $(nom$i)" cela m'affiche bien "edwing"
Je ne comprend pas !!!
Je vous remercie d'avance pour votre aide
Lire la suite 

Probleme Variable »

20 réponses
Réponse
+1
moins plus
$ cat brol.ksh 
#! /bin/ksh93

i=1
while ((i < 3)) ; do
echo "Entrer un nom : "
read nom
array[${i}]=${nom}
((i++))
done

n=1
for i in ${array[@]}
do
echo "Élément $n = $i"
((n++))
done

$ ./brol.ksh 
Entrer un nom : 
toto
Entrer un nom : 
titi
Élément 1 = toto
Élément 2 = titi

$ 
Edwingb - 8 févr. 2012 à 11:58
Super !! :D
Un grand merci a toi zipe31, ta solution fonctionne très bien :)

Merci aussi a qqchquicommenceparQ et a gnugo pour votre aide :)
Ajouter un commentaire
Réponse
+0
moins plus
up
Ajouter un commentaire
Réponse
+0
moins plus
Heu c'est le $i dans le nom de la variable qui est bizarre
read nom$i OK
par contre echo $(nom$i) est mauvais

ce que tu mets entre $() est une commande


et pourquoi un double [[ ]] pour le while ?
Edwingb - 8 févr. 2012 à 10:23
Cela fonctionne avec ou sans le double "[[ ]]", j'avais lu ça dans un tuto alors je le met tout le temps comme ca maintenant..
Ajouter un commentaire
Réponse
+0
moins plus
salut,

les parenthèses, c'est pour la substitution de commandes.

il est inutile (voire nocif) de numéroter les variables, surtout si tu ne dois pas t'en servir plus tard. Sinon ksh peut utiliser des tableaux
read array[n++]
gnugo - 8 févr. 2012 à 11:36
$noms="";for a in $(seq 1 2); do echo -n "Entrez un nom : ";read nom; noms="$noms$IFS$nom";done; echo "Liste des noms : $noms"
Entrez un nom : Éric
Entrez un nom : Marie-Laure
Liste des noms :
Éric
Marie-Laure
$
qqchquicommenceparQ- 8 févr. 2012 à 11:43
gnugo: ça ne fonctionnera pas si '$nom' est par exemple, ou jean pierre

Edwingb: quelle version de ksh utilises-tu ?

je persiste l'usage d'un tableau est la meilleure solution (normal, c'est moi qui le dit! XD)
Edwingb - 8 févr. 2012 à 11:51
Je suis sous redhat 5.5, après je ne sais pas j'ai juste mis "#!/bin/ksh"
je n'est rien installe

la solution de gnugo fonctionne mais je ne sais si je pourrai réutiliser un noms que je souhaite autre par dans mon script.
mais sinon ça fonctionne et je peux maintenant afficher la liste des noms c'est déjà mieux qu'avant
Ajouter un commentaire
Ce document intitulé « Probleme Variable » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?