[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 -
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
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
-
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 -
Salut,
Autre solution :#! /bin/bash var=($(cat fich)) echo ${var[0]} echo ${var[1]} echo ${var[2]} echo ${var[3]};-))
-
-
re-
Même chose.
C'est à dire ?
Lance ton script en mode débogage :sh -xv ton_script
;-))