Posez votre question Signaler

[Bash] Boucle while - export variable [Résolu]

paul@gloomoot 4Messages postés 12 février 2007Date d'inscription - Dernière réponse le 15 févr. 2007 à 07:45
Bonjour,
J'ai une question... quand j'exécute le script suivant :
#!/bin/bash

I=-1;
cat file.txt | while read REF_LINE
do
{
   let I++;
}
done
echo "I = "$I;


J=-1;
while [ $J -lt 100 ]
do
{
   let J++;
}
done
echo "J = "$J;

j'obtiens l'affichage :
I = -1
J = 100

Pourquoi la variable I n'est elle pas exportée hors de la boucle?
Et surtout, comment faire pour récupérer sa valeur?
Merci d'avance de votre aide :)
Lire la suite 

[Bash] Boucle while - export variable »

3 réponses
Réponse
+3
moins plus
Salut,

tu peux faire comme ça
lami20j@debian:~$ cat paul.sh
#!/bin/bash

I=0;
while read REF_LINE ;do
  let I++
done < file.txt
echo "I = "$I;


J=-1;
while [ $J -lt 100 ];do
  let J++;
done
echo "J = "$J;
lami20j@debian:~$ cat file.txt
ligne1
ligne2
ligne3
lami20j@debian:~$ sh paul.sh
I = 3
J = 100
Ajouter un commentaire
Réponse
+3
moins plus
Sinon voilà pour ton script
#!/bin/bash

I=-1;
cat file.txt | (while read REF_LINE
do
{
   let I++;
}
done
echo "I = "$I;)


J=-1;
while [ $J -lt 100 ]
do
{
   let J++;
}
done
echo "J = "$J;


J'ai mis cette partie entre paranthèses
while read REF_LINE
do
{
   let I++;
}
done
echo "I = "$I;


Voir man bash - Commandes composées (liste)

Voilà comme j'écrirais ton script
#!/bin/bash

I=0;
cat file.txt | (while read REF_LINE;do
   let I++
done
echo I = $I)

J=-1;
while [ $J -lt 100 ];do
   let J++
done
echo J = $J


Ajouter un commentaire
Réponse
+2
moins plus
Salut,

Tu peux aussi employer la commande "exec" :
#!/bin/bash

I=0;
exec < file.txt
while read REF_LINE ;do
  let I++
done
echo "I = "$I;


J=-1;
while [ $J -lt 100 ];do
  let J++;
done
echo "J = "$J;
;-))
Ajouter un commentaire
Ce document intitulé « [Bash] Boucle while - export variable » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?