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