Calculation returns no value

#/bin/sh
.....
#convert memory to MB
let "mmsize_a= ($mmsize)/256"
let "mminuse_a= ($mminuse)/256"
let "mmfree_a= ($mmsize_a -$mminuse_a)"
let "mmfreepercent= (($mmfree_a)/($mmsize_a))*100"
#
#format output
echo "\n\n######################" >>$sndFile
echo "\n$sysName Total Memory usage" >>$sndFile
echo "\nTotal Memory size: $mmsize_a MB" >>$sndFile
echo "\nTotal Memory inuse: $mminuse_a MB" >>$sndFile
echo "\nTotal Memory Free: $mmfree_a MB" >>$sndFile
echo "\nTotal Memory Free %: $mmfreepercent %" >>$sndFile

The other calculation works fine, but "mmfreepercent= (($mmfree_a)/($mmsize_a))*100" returns null (no value at all) on the echo echo "\nTotal Memory Free %: $mmfreepercent %".

Please advise.

Remove the paranthesis and try. Or for better math calculation check here

let "mmfreepercent= ($mmfree_a/$mmsize_a)*100"

Original sh not include builtin calculation. And posix shells include only integer.
ksh93 include floating numbers.

typeset -F2 c
typeset -F0 a b
a=4000
b=6000
((c=b/a*100))

If use only integers, then 1st *100 and then /mm_size.

mmfreepercent=$((mmfree_a*100/mmsize_a))
1 Like

Thank you so much. That works fine!