Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
SHELL : question toute con
Envoyé par: gregolak

Bonjour, je fais pas bcp de script mais
là un petit truc tout con m'emm...

J'ai le script ci-dessous, mon problème :
comment récupérer la variable compteur
une fois sorti de ma boucle ?

Voilà merci d'avance...




#!/bin/sh
#
#

compteur=0

cat fichier.txt | while read nom taille reste
do

#bla bla
compteur=$[$compteur+1]

done



echo "a la fin FIN compteur=$compteur" #et là ca fait 0 :-(

Poste le Tuesday 18 November 2003 19:22:15
Répondre     Citer    
Re: SHELL : question toute con
Envoyé par: coufan

Tiens, lis ça :

[www.tldp.org]



>L'Avenir n'existe pas. Les Présents à venir seront la somme de
tous les combats que tu auras perdus ou gagnés dans tes Présents !

Poste le Tuesday 18 November 2003 19:45:51
Répondre     Citer    
Re: SHELL : question toute con
Envoyé par: gregolak

merci mais ca ne m'éclaire pas trop là ... ;-|

Poste le Tuesday 18 November 2003 20:03:42
Répondre     Citer    
Re: SHELL : question toute con
Envoyé par: coufan

ça fait quoi si tu écrit plutôt

let compteur="compteur+1"



>L'Avenir n'existe pas. Les Présents à venir seront la somme de
tous les combats que tu auras perdus ou gagnés dans tes Présents !

Poste le Tuesday 18 November 2003 20:10:32
Répondre     Citer    
Re: SHELL : question toute con
Envoyé par: gregolak

ben ca fait la même chose qu'avant
justement :

a la fin FIN compteur=0

Poste le Tuesday 18 November 2003 20:30:14
Répondre     Citer    
Re: SHELL : question toute con
Envoyé par: coufan

y a quoi dans ton fichier.txt ?



>L'Avenir n'existe pas. Les Présents à venir seront la somme de
tous les combats que tu auras perdus ou gagnés dans tes Présents !

Poste le Tuesday 18 November 2003 21:16:18
Répondre     Citer    
Re: SHELL : question toute con
Envoyé par: gregolak

il y a des lignes, t'inquiètes ! ;-)

si je mets un petit echo en plus dans la boucle
j'obtiens ca en sortie :

compteur=1
compteur=2
compteur=3
compteur=4
compteur=5
compteur=6
compteur=7
compteur=8
compteur=9
compteur=10
compteur=11
compteur=12
compteur=13
compteur=14
a la fin FIN compteur=0

Poste le Tuesday 18 November 2003 21:18:57
Répondre     Citer    
Re: SHELL : question toute con
Envoyé par: coufan

Tu veux compter les lignes formatées "nom taille reste" ?

Si oui tu as la commande wc -l (elle)
qui te retourne le nombre de ligne



>L'Avenir n'existe pas. Les Présents à venir seront la somme de
tous les combats que tu auras perdus ou gagnés dans tes Présents !

Poste le Tuesday 18 November 2003 21:19:59
Répondre     Citer    
Re: SHELL : question toute con
Envoyé par: coufan

ah j'ai compris en changeur la valeur à la création de compteur à 1
j'ai un echo final à 1

la boucle while est pipe à une autre commande, ici cat
la variable compteur incluse dans la boucle est locale à celle-ci !

Tu dois reaménager ton code ! Comment ? Je ne connais pas des objectifs !



>L'Avenir n'existe pas. Les Présents à venir seront la somme de
tous les combats que tu auras perdus ou gagnés dans tes Présents !

Poste le Tuesday 18 November 2003 21:27:49
Répondre     Citer    
Re: SHELL : question toute con
Envoyé par: gregolak

> la variable compteur incluse dans la boucle est locale à celle-ci

oui c'est ca ! Mais justement c'est ce que je
veux savoir : comment transmettre cette valeur
en dehors de la boucle ??!


> Tu dois reaménager ton code ! Comment ?
> Je ne connais pas des objectifs !

en fait ce script est tout à fait inutile ;-)
c'est pour un tout autre script plus gros que
le même problème m'est posé, j'en ai juste
écrit vite fait un petit pour isoler le problème
et ne pas poster un script de 150 lignes ;-)


Merci de ton aide en tous cas !

Poste le Tuesday 18 November 2003 21:32:54
Répondre     Citer    
Re: SHELL : question toute con
Envoyé par: Jonesy's

Bonsoir,

Voir ici : [lea-linux.org] pour une solution, mais il doit en exister d'autres...

@+

Poste le Tuesday 18 November 2003 23:07:27
Répondre     Citer    
Re: SHELL : question toute con
Envoyé par: gregolak

Merci je vais essayer, faut que j'installe
ksh pour voir ca... Mais ca change quoi
d'utiliser tel ou tel shell d'ailleurs ? Parce que
la syntaxe de ton exemple m'a l'air de
ressembler à du bash non ?

Poste le Tuesday 18 November 2003 23:36:48
Répondre     Citer    
Re: SHELL : question toute con
Envoyé par: guitoune755

heuuu sinon je pense que c'est fesable en ajoutant export de ta nouvelle variable



---------------------------------------------------------------------------------------------
oulala mais ou il est passer mon boot windows........ :-)

Poste le Wednesday 19 November 2003 10:52:27
Répondre     Citer    
Re: SHELL : question toute con
Envoyé par: Jonesy's

Bonsoir,

>Mais ca change quoi d'utiliser tel ou tel shell d'ailleurs ?
Ca change des détails, les possibilités, la facon de faire, le fait que un truc marche ou ne marche pas...

>Parce que la syntaxe de ton exemple m'a l'air de ressembler à du bash non ?
Ressemble, oui peut être, mais en ksh ca marche ! ;-)

>en ajoutant export de ta nouvelle variable
En bash ca ne change rien, j'ai essayé...

@+

Poste le Wednesday 19 November 2003 21:17:30
Répondre     Citer    
Re: SHELL : question toute con
Envoyé par: marcg

integer compteur=0

while ..........
do

(( compteur=compteur+1))

done


echo $compteur

Poste le Tuesday 2 December 2003 20:30:16
Répondre     Citer    
Re: SHELL : question toute con
Envoyé par: Svear

Tu dois regrouper la boucle "do..done" avec l'affichage de ta variable sinon celle-ci est en dehors du pipe
Mets donc des parenthèses...

#!/bin/sh
#
#

compteur=0

cat fichier.txt | ( while read nom taille reste
do

#bla bla
compteur=$[$compteur+1]

done
echo $compteur
)
#blabla suite...

Poste le Sunday 21 December 2003 00:06:58
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
SHELL : question toute con
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons