Probleme Variable

Résolu
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

4 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    $ 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
    1. Edwingb
       
      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
  2. gnugo
     
    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
    1. Edwingb
       
      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
  3. Utilisateur anonyme
     
    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
    1. Edwingb
       
      Je ne sais absolument pas utiliser "read array[n++]" :/
      0
    2. Utilisateur anonyme
       
      la question implicite reste ouverte: pourquoi numéroter des variables, au lieu de les nommer tout simplement ?
      0
    3. Edwingb
       
      C'est pour pouvoir récupérer les noms et les mettre dans un tableaux
      0
    4. Utilisateur anonyme
       
      ??? voir #3
      0
    5. Edwingb
       
      Enfaite j'aimerai récupérer un des nom saisi et pouvoir l'utiliser n'importe où dans mon script.
      0