[Shell Script] Ecrire une boucle

Ecrire une boucle [Shell Script] - Linux et OS Alternatifs

Marsh Posté le 07-04-2006 à 12:19:51    

Je dispose d'un exécutable traitement que je souhaite exécuter jusqu'à ce qu'il échoue. Voici ce que j'écris d'habitude :

while traitement
do a=Bonjour
done

Y a-t-il une façon plus propre d'écrire ça ?

Reply

Marsh Posté le 07-04-2006 à 12:19:51   

Reply

Marsh Posté le 07-04-2006 à 12:27:11    

C'est très bien comme ca non ?

Reply

Marsh Posté le 07-04-2006 à 13:23:15    

Ce qui ne me plaît pas, c'est la commande a=Bonjour. En fait, j'ai mis une commande bidon car le while n'accepte pas de ne rien faire. Est-il possible de ne faire que le traitement ?

Reply

Marsh Posté le 07-04-2006 à 13:30:02    

Reply

Marsh Posté le 07-04-2006 à 14:13:14    

while traitement
do :
done

Reply

Marsh Posté le 07-04-2006 à 21:05:17    

Merci, ça marche.
Je n'ai jamais vu ce "double point". Est-ce une façon propre de dire "je ne fais rien" ?

Reply

Marsh Posté le 07-04-2006 à 21:19:44    

euh normalement c'est ; et non pas :
le point virgule se met en fin de ligne, et ca veut dire que la commande est terminée. si il n'y a rien avant le ';', ben ca ne fait Rien.

Reply

Marsh Posté le 07-04-2006 à 21:21:15    

en fait l0ky te disait surement de mettre :
while traitement  
;
done
alors que pillow ecrit "do :"
c'est 2 manieres d'ecrire la meme chose je pense.

Reply

Marsh Posté le 07-04-2006 à 22:28:34    

e-miel a écrit :

Merci, ça marche.
Je n'ai jamais vu ce "double point". Est-ce une façon propre de dire "je ne fais rien" ?

C'est un builtin qui ne fait rien et qui retourne 0. C'est plus ou moins ce qui est le plus "propre" pour réaliser ce genre de choses, oui.
 
En général, on l'utilise plutôt comme ça :

Code :
  1. while :
  2. do traitement || break
  3. done

M'enfin, le shell script n'étant de toute façon pas fait pour être élégant, je pense qu'il ne vaut mieux pas trop s'éterniser sur ces détails stylistiques :o

Reply

Marsh Posté le 07-04-2006 à 22:36:59    

l0ky a écrit :

mettre un ;

J'ai essayé, mais ça ne marche pas : erreur de syntaxe.
 

Pillow a écrit :

while traitement
do :
done

Ca marche !!!
 

steinworfer a écrit :

euh normalement c'est ; et non pas :
le point virgule se met en fin de ligne, et ca veut dire que la commande est terminée. si il n'y a rien avant le ';', ben ca ne fait Rien.

Ton raisonnement est valable, mais il ne résoud pas le problème.
 

steinworfer a écrit :

en fait l0ky te disait surement de mettre :
while traitement  
;
done
alors que pillow ecrit "do :"
c'est 2 manieres d'ecrire la meme chose je pense.

J'ai essayé ce que tu suggère (sans le do) et ça ne marche pas : erreur de syntaxe.
 
Suite à tout ça, je repose ma question :

e-miel a écrit :

Je n'ai jamais vu ce "double point". Est-ce une façon propre de dire "je ne fais rien" ?

Reply

Marsh Posté le 07-04-2006 à 22:36:59   

Reply

Marsh Posté le 07-04-2006 à 22:38:34    

Merci pour ta réponse pillow, je ne l'avais pas vue avant de commencer ma réponse.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed