J'ai un peu avancé dans ma decouverte du bourne shell et j'ai realisé un exercice consistant à tester la parité d'un nombre et selon la reponse doit effectuer un certain nombre d'operation. (à noter que pour la valeur rentré à la commande ce n'est as fini, pour le moment je souhaite resoudre le problème de la valeur rentré à la demande)
voici le script :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #!/bin/bash if [ $# -eq 0 ] then echo -n Fournissez moi un nombre s\'il vous plaît:; read ca; until test [ $ca -ne 1 ] do echo -n $ca; case $ca in *1|*3|*5|*7|*9) echo le nombre $ca est impair; ca=`expr \( $ca \* 3 \) + 1`; echo $ca;; *0|*2|*4|*6|*8) echo le nombre $ca est pair; ca=`expr \( $ca / 2 \)`; echo j\'obtiens $ca;; esac; done if test $ca -eq 1 then break fi echo je suis parvenu à 1; else if [ $1 -ne 1 ] then case $1 in *1|*3|*5|*7|*9) echo le nombre $1 est impair; ca=`expr \( $1 \* 3 \) + 1`; echo $ca;; *0|*2|*4|*6|*8) echo le nombre $1 est pair; ca=`expr \( $1 / 2 \)`; echo j\'obtiens $ca;; esac else echo je suis parvenu à 1 fi fi
le problème que je rencontre, c'est avec la boucle until, elle doit s'arreter lorsque le nombre atteint la valeur 1,mais là elle ne s'arrete jamais(sauf en tapant control c), et j'ai un message qui apparait me disant que j'ai trop d'argument sur la ligne until. Je presume que ce sont les crochets qu'il faut enlever, mais si je les enlève, les valeurs intermediaire ne s'affiche plus.
Donc si quelqu'un connait la reponse, je le remercie d'avance de m'aider
Partager