Re: [ssfr] utilisation de bc |
[ Thread Index |
Date Index
| More debianworld.org/shellscript-fr Archives
]
Bon entre-temps j'ai trouvé une autre écriture qui marche :
nb=$(echo "scale=6; $RANDOM/$MAXRD" | bc -l)
Maintenant je suis confronté à un aute problème. Je dois tester si un
nombre décimal est plus petit ou égale à 1.0.... Voici la fonction :
function est_dans_cercle () {
cond=$(echo "scale=6; 2.*(sqrt ($1*$1 + $2*$2))" | bc -l)
if [ $(echo "$cond" | bc ) -le 1. ]
then
echo "Point dans le cercle"
fi
}
Me sort :
../pi.sh: line 20: [: 1.131370: integer expression expected
correspond à la ligne du if ...
Une idée ?
Je sais que ce serait plus simple en perl par exemple, mais c'est en
shell que je veux le faire ;-)
Le 2008-07-15, à 09:23:52 +0200, steve (dlist@xxxxxxxxxx) a écrit :
> Lignes : 38
>
> Bonjour à toutes et à tous,
>
> Je suis en train de coder un petit script bash pour calculer Pi selon la
> méthode de Monte-Carlo. Pour cela je dois écrire une fonction qui me
> renvoie un nombre entre 0 et 1. Ma fonction marche mais me sort des
> erreurs que je n'arrive pas à faire disparaître. La voici
>
>
> # Début fonction
> MAXRD=32767
> function get_point () {
> nb=$(bc -l << EOF
> scale = 6
> $RANDOM/$MAXRD
> EOF
> )
> echo $nb
> }
>
> get_point
> # Fin fonction
>
>
> Et la sortie :
>
> (standard_in) 3: illegal character: O
> (standard_in) 3: parse error
> .944578
>
> C'est quoi les deux erreurs standard_in ?
>
> Merci pour votre aide et excellente journée
>
> --
> Steve
>
> ---
>
---