Je veux comparer la valeur contre 0 et il me dit que c'est inférieur à 0. J'ai utilisé
solution=`echo $a / $b | bc -l`
Ce problème se produit uniquement lorsque "a" est inférieur à "b".
bc
n'imprimera pas de zéro. Vous pouvez imprimer le résultat en le dirigeant vers
awk '{printf "%0.2f", $1}'
Résumer:
solution=$(echo 1 / 3 | bc -l | awk '{printf "%0.2f", $1}')
echo $solution
a=1
b=3
printf -v solution "%.2f" $(bc -l <<< "$a / $b")
echo $solution
Sortie:
0.33
Si $ a et $ b sont toujours des entiers et que vous recherchez une solution bash permettant de diviser deux entiers: Vous pourriez alors être intéressé par this .
Avec printf
:
$ printf '%f' $(echo $a / $b | bc -l)
0.200000
Si vous voulez seulement 1 position après le point décimal:
$ printf '%.1f' $(echo $a / $b | bc -l)
0.2
Vous pouvez également obtenir le zéro initial en utilisant Perl
:
$ echo 1 / 3 | bc -l | Perl -ne 'printf"%0.2f\n",$_'
0.33
Ou vous pouvez utiliser uniquement Perl:
$ export a=1 b=3; Perl -e 'printf("'%.2f'\n", $ENV{a}/$ENV{b});'
0.33
et pour votre script:
solution=$(export a=1 b=3; Perl -e 'printf("'%.2f'\n", $ENV{a}/$ENV{b});')
echo "$solution"