KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Vendredi 16 mai 2008 - 16:21:47

[Bash] Boucle while - export variable

Rechercher : dans
[Bash] Boucle while - export variable
par paul@gloomoot
 Fil de Discussions
Statut : Résolu
mercredi 14 février 2007 à 11:54:33
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 :)
Configuration: Windows XP
Firefox 2.0.0.1
Répondre à paul@gloomoot  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par lami20j, le mercredi 14 février 2007 à 18:26:02 Fil de Discussions
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
lami20j
Répondre à lami20j

2


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Par lami20j, le mercredi 14 février 2007 à 18:51:48 Fil de Discussions
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


lami20j
Répondre à lami20j

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par jipicy, le jeudi 15 février 2007 à 07:45:01 Fil de Discussions 
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;
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy
Discussions pertinentes trouvées dans le forum
03/03 19h05Algorithme d'une factorielle - boucle whileProgrammation14/05 15h2311
29/07 17h05[php]boucle whileWebmastering31/07 14h175
20/03 20h15PHP boucle while 10 foisWebmastering22/03 13h3812
14/03 11h50[T-SQL] Boucle WHILE / PRINTProgrammation14/03 15h081
Plus de discussions sur « [Bash] Boucle while export variable » Discussion en cours Discussion fermée Problème résolu
Répondre
Titre du message :
Votre pseudo:
Votre email :
Message: 
  •  
  •  
Options: Recevoir les réponses par mail.
 

Aide