[Scrip shell] Help var_i=ligne_i d'un fichier

Résolu
Obi_wan31 Messages postés 13 Statut Membre -  
Obi_wan31 Messages postés 13 Statut Membre -
Bonjours grands maîtres du script shell,

J'ai besoin de vos lumieres pour ecrire un script shell somme toute assez bête. Je voudras affecter à des variables chaque lignes d'un fichier.

Fichier res.txt

>cat res.txt
albert
bertrand
jose
paul

J'aimerais avoir :
var_1=albert
var_2=bertrand
var_3=jose
var_4=paul

Sachant que je ne connais pas le nombre de ligne de mon fichier res.txt.

Comme vous allez vous en rendre compte, je debute en scipt shell :

# calcul du nombre de ligne
nb_lines=`wc -l res.txt`
nb_lines=${nb_lines%*res.txt}
nb_lines=${nb_lines#******}
nb_lines=`echo $nb_lines | tr "[:blank:]" "t"`
limite=$(($nb_lines + 1))
echo "$limite"

while test $num != $limite
do
view_${num}=`sed -n '${num}p' res.txt`
echo "${view_${num}}"
num=$(($num + 1))
done

La calcul du nombre de ligne (trivial) fonctionne mais pas la creation/affectatcion des variables
Configuration: Windows XP
Firefox 1.5.0.11

4 réponses

  1. gorkimat Messages postés 71 Statut Membre 9
     
    Salut

    Voici un bout de code qui devrait faire l'affaire:

    num=1
    while read line
    do
      eval var_${num}="$line"
      num=$(($num+1))
    done < res.txt
    


    resultat:
    var 1 :albert
    var 2 :bertrand
    var 3 :jose
    var 4 :paul
    0
    1. Obi_wan31 Messages postés 13 Statut Membre
       
      Merci pour ton aide gorkimat mais j'ai une erreur :

      syntax error near unexpected token `done'
      0
    2. gorkimat Messages postés 71 Statut Membre 9
       
      Tu utilise quel interpreteur ? (ksh, sh, bash ...) ?

      Sinon essaye : done<res.txt sans espace ?

      Est-ce que tu as modifié la mise en forme de la boucle ?
      0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Autre solution :
    #! /bin/bash
    
    var=($(cat fich))
    echo ${var[0]}
    echo ${var[1]}
    echo ${var[2]}
    echo ${var[3]}
    ;-))
    0
    1. Obi_wan31 Messages postés 13 Statut Membre
       
      You're a king ;))

      Pb résolu. Un grand merci à tous
      0
  3. Obi_wan31 Messages postés 13 Statut Membre
     
    Même chose.
    interpreteur sh

    Merci de m'aider ;)
    0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    re-

    Même chose.
    C'est à dire ?

    Lance ton script en mode débogage :
    sh -xv ton_script
    ;-))
    0