[Scrip shell] Help var_i=ligne_i d'un fichier
Résolu
Obi_wan31
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
Obi_wan31 Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
Obi_wan31 Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
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
A voir également:
- [Scrip shell] Help var_i=ligne_i d'un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Classic shell - Télécharger - Personnalisation
4 réponses
Salut
Voici un bout de code qui devrait faire l'affaire:
resultat:
var 1 :albert
var 2 :bertrand
var 3 :jose
var 4 :paul
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 :
Autre solution :
#! /bin/bash var=($(cat fich)) echo ${var[0]} echo ${var[1]} echo ${var[2]} echo ${var[3]};-))
syntax error near unexpected token `done'
Sinon essaye : done<res.txt sans espace ?
Est-ce que tu as modifié la mise en forme de la boucle ?