Probleme Variable

Résolu/Fermé
Edwingb - 7 févr. 2012 à 16:47
 Edwingb - 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

4 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
8 févr. 2012 à 11:44
$ 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

$ 
1
Super !! :D
Un grand merci a toi zipe31, ta solution fonctionne très bien :)

Merci aussi a qqchquicommenceparQ et a gnugo pour votre aide :)
0
up
0
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 ?
0
Cela fonctionne avec ou sans le double "[[ ]]", j'avais lu ça dans un tuto alors je le met tout le temps comme ca maintenant..
0
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++]
0
Je ne sais absolument pas utiliser "read array[n++]" :/
0
Utilisateur anonyme
8 févr. 2012 à 10:34
la question implicite reste ouverte: pourquoi numéroter des variables, au lieu de les nommer tout simplement ?
0
C'est pour pouvoir récupérer les noms et les mettre dans un tableaux
0
Utilisateur anonyme
8 févr. 2012 à 10:40
??? voir #3
0
Enfaite j'aimerai récupérer un des nom saisi et pouvoir l'utiliser n'importe où dans mon script.
0