Probleme dans un script shell

bonjour,

g un script shell qui lit apartir d'un fichier texte et decoupe chaque ligne dans trois variable statiques
var1, var2, var3
et repete le meme traitement sur ces 3variables le nombre de ligne de ce fichier
tout marche bien sauf que si je lui rentre en argument un fichier qui depasse des centaines de lignes
il fait n'importe quoi.

merci pour votre aide
Configuration: Windows XP
Internet Explorer 6.0

4 réponses

  1. il se présente comment ce script ?
    0
    1. while read line

      do
      var1=
      var2=
      var3=

      traitement sur les trois variable
      ( lors de l'execuxion sa dure pas plus que 2 secondes )

      done<file
      0
  2. tel que c'est écrit, je pense que tu ne dois pas récupérer grand chose dans tes variables.
    Ecris plutôt (si c'est ce que tu cherches):
    while read A B C
    
    do
    var1=$A
    var2=$B
    var3=$C
    
    
    traitement sur les trois variables
    ( lors de l'execuxion ça dure pas plus que 2 secondes )
    
    done<file
    0
    1. bonjour,
      merci pour ton aide mais ce n'est pas sa mon probleme
      je recupere ce que je veu dans les trois variables

      le probleme principal c que lorsque je rentre en parametres un fichier de grande taille apres certaines itérations, sa marche pas convenablement sa donne des resultats innattendus

      je pense que il repete le mme process

      je pense qu'il faut allouer des variables dynamique
      par exemple

      vari
      varj
      vark
      et incrementer i, j et k a chaque iteration comme sa on aurai independance entre les variables

      mon probleme c que j'arrive pas a faire sa
      t'aurai une idée svp

      merci d'avance
      0
  3. je veux bien t'aider, mais il va falloir être plus clair.
    Le problème se pose à la récup des varaibles? lors du traitement de ces variables? as-tu un exemple concret ?
    0
    1. while read line

      do
      var1=`echo $line|cut -d";" -f1`
      var2=`echo $line|cut -d";" -f2`
      var3=`echo $line|cut -d";" -f3`
      /srv/webalizer/webalizer -dc /srv/$var1.$var2/$var3/stats/webalizer.conf
      chown webadmin:www /srv//$var1.$var2/$var3/stats/*

      done</srv/listeSites.csv

      sachant que le fichier listSites.csv est de grande taille plusque 1000 lignes
      donc le scipt va falloir faire le traitement sur ces variables le nbre de ligne

      pour les prmieres lignes g de bon resultats mai audela de la 100ieme ligne sa va pas

      voila
      0
  4. peut-être le problème vient-il du fait que ton buffer sature lors de la lecture. Essaie ça:
    cat -u /srv/listeSites.csv |  while read line 
    ...
    done 

    Le "-u" permet de ne pas bufferiser la lecture. A voir ...
    0