Eu tenho um script bash contendo as 2 linhas a seguir:
Hour=$(date +"%H")
Hour=$((10#$Hour))
O que a linha 2 faz?
O 10#
diz para expandir o número usando a base 10:
As constantes com um 0 inicial são interpretadas como números octais. Um '0x' ou '0X' inicial indica hexadecimal. Caso contrário, os números assumem o formato [base #] n, onde a base opcional é um número decimal entre 2 e 64, representando a base aritmética, e n é um número nessa base. Se o número da base for omitido, a base 10 será usada. Ao especificar n, os dígitos maiores que 9 são representados pelas letras minúsculas, maiúsculas '@' e '_', nessa ordem. Se a base for menor ou igual a 36, as letras minúsculas e maiúsculas poderão 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 quaisquer zeros à esquerda no comando date, mas com versões recentes da data GNU, isso pode ser feito com mais facilidade usando: date +%-H
date
) zeros à esquerda podem ser suprimidos na fonte usando um estilo printf-
modificador formato+%-H