Forum Programmation.shell probleme avec cat.

Posté par  .
Étiquettes : aucune
0
13
juil.
2005
bonjour a tous,
j'en ai ras le bol de chercher pendant trois plombe ou se trouve le fichier que j'ai archivé sur je ne sais plus quel CD ou DVD alors je me suis codé un petit script qui recupere le contenu des cd et l'ecris dans un fichier sous la forme :
"num_ligne,path, nom_fichier".
Mon probleme c'est que cat agit d'une façon que je ne comprends pas. dans le code ci-dessous la premiere valeur $x me renvoi les 4 premieres lignes alors que je m'attends a avoir seulement la premiere. Est ce que j'ai fais une erreur ?

# recuperation de la prochaine position dans $fichier_contenu
set $(wc -l $fichier_contenu)
num=$1
num=$((num+1))
echo "Scan du cd en cours ...."
# recuperation et traitement du contenu du cd
isoinfo -l -i $cdrom > $iso_temp
grep -v ^d $iso_temp | grep ^. | sed 's/;1//' | sed 's/Directory listing of //'|sed 's/-.*.] //'|uniq > $fichier_temp
# insertion dans le fichier
for x in `cat $fichier_temp`
do
#pour debugage
echo $x
sleep 5
#fin debug
if [[ $x =~ / ]]
then
repertoire_courant=$x
else
insere_contenu $num,$repertoire_courant,$x
num=$((num+1))
fi
done
  • # eureka !

    Posté par  . Évalué à 2.

    cela venez de la variable IFS, je la modfié dans un fonction du script. Une fois remis a la bonne valeur tout rentre dans l'ordre :-)
    • [^] # Re: eureka !

      Posté par  . Évalué à 6.

      Pour éviter le sous-shell pour le cat, tu peux utiliser while et read :

      while read x; do echo $x; ...; done < $fichier_temp

      Et comme ça, tu peux même te passer du fichier temporaire :

      ... | uniq | while read x; do ... done
      • [^] # Re: eureka !

        Posté par  . Évalué à 1.

        merci du conseil je teste ca tout de suite :)
        ....
        ....
        trop fort ! Ca roule encore mieux.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.