Probleme Variable
Résolu
Edwingb
-
Edwingb -
Edwingb -
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
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
-
$ 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 $ -
-
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 ? -
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 tableauxread array[n++]