Constantes com um 0 à esquerda são interpretadas como números octais. Um '0x' ou '0X' inicial denota hexadecimal. Caso contrário, os números assumem a forma [base#]n, em que a base opcional é um número decimal entre 2 e 64 que representa a base aritmética e n é um número nessa base. Se a base# for omitida, a base 10 será usada. Ao especificar n, os dígitos maiores que 9 são representados pelas letras minúsculas, as letras maiúsculas, '@' e '_', nessa ordem. Se a base for menor ou igual a 36, letras maiúsculas e minúsculas podem ser usadas de forma intercambiável para representar números entre 10 e 35.
Exemplos:
Base 16:
$ echo $((16#A))
10
Base 8:
$ echo $((8#12))
10
Base 2:
$ echo $((2#1010))
10
Como o steeldriver aponta, isso provavelmente está sendo feito para lidar com possíveis zeros à esquerda do comando date, mas com versões recentes do GNU date, isso pode ser feito mais facilmente usando: date +%-H
O
10#
diz para expandir o número usando a base 10:Exemplos:
Base 16:
Base 8:
Base 2:
Como o steeldriver aponta, isso provavelmente está sendo feito para lidar com possíveis zeros à esquerda do comando date, mas com versões recentes do GNU date, isso pode ser feito mais facilmente usando:
date +%-H