Comparare due float in bash

Mi è capitato spesso di dover fare dei test tipo A > B dove A e B sono due numeri reali (float) all’interno di uno script bash. Il problema però è che bash ha solo una aritmetica intera…

Cercando un po’ in rete ho trovato diverse soluzioni ma quella che, secondo me, è la più elegante è quella che usa il comando bc.

In pratica si fa così:

$ a=3.6
$ b=5.7
$ if [ $(echo “$a > $b” | bc) -eq 1 ] ; then echo “a>b” ; else echo “a<=b” ; fi
a<=b
$ a=10.1
$ if [ $(echo “$a > $b” | bc) -eq 1 ] ; then echo “a>b” ; else echo “a<=b” ; fi
a>b 

Su Rodolfo Giometti

Ingegnere informatico libero professionista ed esperto GNU/Linux offre supporto per: - device drivers; - sistemi embedded; - sviluppo applicazioni industriali per controllo automatico e monitoraggio remoto; - corsi di formazione dedicati. Manutentore del progetto LinuxPPS (il sottosistema Pulse Per Second di Linux) contribuisce attivamente allo sviluppo del kernel Linux con diverse patch riguardanti varie applicazioni del kernel e dispositivi (switch, fisici di rete, RTC, USB, I2C, network, ecc.). Nei 15+ anni di esperienza su Linux ha lavorato con le piattaforme x86, ARM, MIPS & PowerPC.

Lascia un commento

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi