I have a bash script containing the following 2 lines:
Hour=$(date +"%H") Hour=$((10#$Hour))
What does line 2 do?
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.Sign up to join this community
10# tells it to expand the number using base 10:
Constants with a leading 0 are interpreted as octal numbers. A leading ‘0x’ or ‘0X’ denotes hexadecimal. Otherwise, numbers take the form [base#]n, where the optional base is a decimal number between 2 and 64 representing the arithmetic base, and n is a number in that base. If base# is omitted, then base 10 is used. When specifying n, the digits greater than 9 are represented by the lowercase letters, the uppercase letters, ‘@’, and ‘_’, in that order. If base is less than or equal to 36, lowercase and uppercase letters may be used interchangeably to represent numbers between 10 and 35.
$ echo $((16#A)) 10
$ echo $((8#12)) 10
$ echo $((2#1010)) 10
As steeldriver points out this is likely being done to handle any potential leading zeros from the date command but with recent versions of GNU date it can be done easier using: