I have a simple script that deals with hours and minutes.
If I want to calculate number of minutes since midnight having a string s hh:mm
I tried splitting string then doing hh * 60 + mm
My problem is, while
$ (( tot = 12 * 60 + 30 ))
$ echo $tot
750
instead
$ (( tot = 09 * 60 + 30 ))
bash: ((: tot = 09: value too great for base (error token is "09")
As far as I understand string 09
is not to be intended as a base 10 number.
Is there a better way than simply removing leading zeros in string?
Best Answer
The number before the
#
is the radix (or base)The number after the
#
must be valid for the radixThe output is always decimal
You can use a radix of 2 thru 64 (in GNU bash 4.1.5)
As noted by enzoyib, the old alternative of $[expression] is depricated, so it is beter to use the POSIX compliant
$((expr))
I'm not sure which 'digits' are used after
Z