Boucle la variable qui ne s'affiche pas correctement ?

Résolu
Bonjour,

Je n'arrive pas a comprendre pourquoi la variable dans ma boucle for "$P$n" ne s'affiche pas correctement, uniquement le nombre s'affiche ??
Pourquoi ?
Comment puis je faire ?
Merci.

nombre=10
device=/dev/sda

P0="$device" 
P1="/" 
P2="Swap"
P3="/var"
P4="/var/www"
P5="/opt"
P6="/tmp"
P7="/usr"
P8="/home"
P9="/media/travvail"
P10="/media/sauvegarde"


  echo ""
  echo " $device ($P0)"
  echo "     |"
 
for n in 'seq 1 $nombre';
 do
  echo "     +- $device$n ($P$n)"
 done

 


7 réponses

  1. pourquoi ne pas utiliser un tableau ? ça serait plus simple dans ton cas
    (sinon j'essais de retrouver comment on fait en shell)
    0
    1. Contributeur
      Salut,

      Un seul mot "INDIRECTION" :

      #!/bin/bash
      
      nombre=5
      device=/dev/sda
      
      P0="$device" 
      P1="/" 
      P2="Swap"
      P3="/var"
      P4="/var/www"
      P5="/opt"
      P6="/tmp"
      P7="/usr"
      P8="/home"
      P9="/media/travvail"
      P10="/media/sauvegarde"
      
      
        echo ""
        echo " ${device} (${P0})"
        echo "     |"
       
      for n in $(seq ${nombre});
       do
        P="P${n}"
        echo "     +- ${device}${n} ( ${!P})"
       done

      0
      1. J'ai trouvé.
        Je te montre un exemple simple après t'as juste à adapter ;)
        #!/bin/bash
        var1="contenu_de_ma_variable"
        un=1
        echo $var1
        eval echo \$var${un}

        les deux dermières lignes affichant la même chose voilà ;)
        0
        1. Bonsoir,

          Zipe31 cher moi j'ai l'erreur suivante avec votre code modifier ci dessus :

          /home/laurent/bash/Partitionnement-automatique-dun-disque-dur-installation-serveur.sh: 25: /home/laurent/bash/Partitionnement-automatique-dun-disque-dur-installation-serveur.sh: Bad substitution


          La ligne 25 est :
            echo "     +- ${device}${n} ( ${!P})"


          Merci.
          0
          1. Contributeur
            Quel shell ?
            0
        2. Konsole Terminal

          laurent@PC-ubuntu:~$ konsole -v
          Qt : 4.8.1
          Plate-forme de développement de KDE : 4.8.5 (4.8.5)
          Konsole : 2.8.5
          laurent@PC-ubuntu:~$ 


          Merci.
          0
          1. Contributeur
            Euh... non ;-\

            echo $0
            0
          2. Contributeur
            Ou si tu préfères quel shebang en haut de ton script ?
            0
        3. En haut du script
          #!/bin/bash


          laurent@PC-ubuntu:~$ echo $0  
          /bin/bash  
          laurent@PC-ubuntu:~$ 


          Dois je changer ?

          Merci.
          0
          1. Contributeur
            Et le shebang de ton script c'est bien "#!/bin/bash" aussi ?
            Tu lances bien ton script comme ça : ./ton_script.sh ?
            0
        4. Au pardon c'est de ma faute, erreur de ma part.

          Je le lancé comme ceci :
          sh /mon_script.sh

          au lien de :
          bash /mon_script.sh

          C'est bon ça marche ?
          Désolé pour le dérangement.
          Merci.
          0
          1. Contributeur
            Ne pas oublier que sous Ubuntu sh = lien symbolique vers /bin/dash et non /bin/bash ;-\
            0