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

Résolu/Fermé
Obi_wan31 Messages postés 13 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 30 avril 2007 - 19 avril 2007 à 12:34
Obi_wan31 Messages postés 13 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 30 avril 2007 - 19 avril 2007 à 15:47
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
A voir également:

4 réponses

gorkimat Messages postés 70 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 1 mars 2012 9
19 avril 2007 à 13:00
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
Obi_wan31 Messages postés 13 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 30 avril 2007
19 avril 2007 à 13:20
Merci pour ton aide gorkimat mais j'ai une erreur :

syntax error near unexpected token `done'
0
gorkimat Messages postés 70 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 1 mars 2012 9
19 avril 2007 à 14:35
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
19 avril 2007 à 15:20
Salut,

Autre solution :
#! /bin/bash

var=($(cat fich))
echo ${var[0]}
echo ${var[1]}
echo ${var[2]}
echo ${var[3]}
;-))
0
Obi_wan31 Messages postés 13 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 30 avril 2007
19 avril 2007 à 15:47
You're a king ;))

Pb résolu. Un grand merci à tous
0
Obi_wan31 Messages postés 13 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 30 avril 2007
19 avril 2007 à 15:28
Même chose.
interpreteur sh

Merci de m'aider ;)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
19 avril 2007 à 15:37
re-

Même chose.
C'est à dire ?

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