Usando o "awk"
Como o @Theophrastus observou acima, nem bash
nem bc
suportam a notação científica.
Para comparações e cálculos simples, sugiro usar awk
(que lida com números xEy):
a=10e-12
b=12e-12
r=$(awk 'BEGIN{print ('$a'>'$b')?1:0}')
echo $r
Para expressões mais complexas, você pode evitar o incómodo processamento de cotações e escapar passando as variáveis para awk
com -v
, o que seria, na verdade, a maneira preferida de fazê-lo:
r=$(awk -v a="$a" -v b="$b" 'BEGIN{print (a<b)?1:0}')
Usando "bc"
Existem maneiras de reformatar sua notação para o formato alternativo x * 10 ^ y que é entendido por bc
(ou você pode fazer isso sozinho), no entanto bc
tem algumas peculiaridades quando se trata de expoentes negativos (como no seu exemplo):
$ bc
10^12
1000000000000
10^-12
0