bc
Frequently-Asked Questionscomment utiliser l'outils de calcul bc sous Unix. Sans être un outils miracle, il peut vous rendre bien des services.
Pour plus d'information au sujet de cette faq, contactez Jean-Louis BICQUELET
FAQ Revised: Wednesday 22 May 2013 19:07:57
on peut aussi sortir en utilisant la commande quit.
bc 12+3 15
echo "35/7" 35/7 echo "35/7" | bc 5On peut aussi utiliser printf mais il faut penser à terminer la ligne par "\n""
printf "2+3\n" | bc 5On peut aussi écrire un fichier contenant les calculs à effectuer et l'executer
#echo "3+4" > calcul # cat calcul | bc 7Par contre la syntaxe suivante demande un CTRL+D pour se terminer.
bc calcul 7
bc << END > 4+5 > scale=2 > 3/7 > END 9 .42
echo "1+3;3+4"| bc 4 7
On peut utiliser le ..
echo "1+5;./2" | bc 6 3
echo "scale=2;4/2.7" | bc 1.48Pour plus de précision on augmente l'echelle
echo "scale=20; 99/69"|bc 1.43478260869565217391
echo "obase=16 ; 224" | bc E0 echo "obase=16; 2^8-1"|bc FF
echo "ibase=16; EA"|bc 234
echo "obase=16 ;10+7" | bc 11
echo "a=23;b=2;a+b" | bc 25
echo "for (i = 1; i <= 10; ++i) { i } " | bcL'utilisation dans un script shell se ferait ainsi:
for i in $(echo "for (i = 1; i <= 3; ++i) { i } " | bc) > do > echo "serveur"$i > done serveur1 serveur2 serveur3Une autre façon de faire est:
echo "i=1; while(i<=10) { i; i+=1}" | bcou de manière plus concise
echo "i=1; while(i<=10) {i++}"| bc
a=$(echo "3+4"|bc) # echo $a 7ou
a=`echo "3+4"|bc` # echo $a
i=2; j=3; echo "$i*$j" | bc 6En sortie:
printf "Percentage: %2.2f%%\n" $(echo .9912*100|bc)ou encore
Percentage: 99.12% v=.9978 printf "Percentage: %2.2f%%\n" $(echo $v*100|bc) Percentage: 99.78%
scale=4 sqrt(2) 1.4142Pour les autres fonctions, il faut spécifier qu'on utilise la librairie mathématique en utilisant l'option -l. On dispose alors de:
bc -l s(30) -.98803162409286178998 c(1) .54030230586813971740 l(1) 0 e(1) 2.71828182845904523536
$ cat fc define f(n) { auto i, r; r = 1; for (i=2; i<=n; i++) r =* i; return (r); } f(4) $ cat fc | bc 24
if (a < 6) "ok" ok if (a < 6) a=a+2; b=1 a 4 b 1