J'ai un script bash contenant les 2 lignes suivantes:
Hour=$(date +"%H")
Hour=$((10#$Hour))
Que fait la ligne 2?
J'ai un script bash contenant les 2 lignes suivantes:
Hour=$(date +"%H")
Hour=$((10#$Hour))
Que fait la ligne 2?
Réponses:
Le lui 10#
indique d'augmenter le nombre en utilisant la base 10:
Les constantes avec un 0 en tête sont interprétées comme des nombres octaux. Un «0x» ou «0X» en tête indique hexadécimal. Sinon, les nombres prennent la forme [base #] n, où la base facultative est un nombre décimal compris entre 2 et 64 représentant la base arithmétique, et n est un nombre dans cette base. Si la base # est omise, la base 10 est utilisée. Lorsque vous spécifiez n, les chiffres supérieurs à 9 sont représentés par les lettres minuscules, les lettres majuscules, '@' et '_', dans cet ordre. Si la base est inférieure ou égale à 36, les lettres minuscules et majuscules peuvent être utilisées de manière interchangeable pour représenter des nombres compris entre 10 et 35.
Exemples:
Base 16:
$ echo $((16#A))
10
Base 8:
$ echo $((8#12))
10
Base 2:
$ echo $((2#1010))
10
Comme le souligne Steeldriver, cela est probablement fait pour gérer tous les zéros potentiels potentiels à partir de la commande date, mais avec les versions récentes de GNU date, cela peut être fait plus facilement en utilisant: date +%-H
date
) les zéros de tête peuvent être supprimés à la source en utilisant un-
modificateur de format de style printf+%-H