Rechercher : dans
Par :

[Bash] Boucle while - export variable

Dernière réponse le 15 fév 2007 à 07:45:01 paul@gloomoot, le 14 fév 2007 à 11:54:33 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [Bash] Boucle while export variable » dans :
[Bash] La variable d'environnement PATH VoirLa variable d'environnement PATH I. Préambule II. C'est quoi le shell ? III. Définition IV. Séance de dissection V. Ajouter un répertoire à la variable PATH VI. Et puis... I. Préambule Sous les systèmes GNU/Linux qu'on le veuille ou...
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
Comment récupérer le résultat d'une commande dans une variable VoirComment récupérer le résultat d'une commande dans une variable Préambule Syntaxe Exemples Préambule Il est bien souvent nécessaire de récupérer le résultat d'une commande (ou de son code retour) dans une variable afin de pouvoir...
Java: Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditonnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent...
Langage C++ - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent...

1

lami20j, le 14 fév 2007 à 18:26:02
  • +2

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

lami20j, le 14 fév 2007 à 18:51:48
  • +1

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

 jipicy, le 15 fév 2007 à 07:45:01
  • +1

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