Ho uno script bash contenente le seguenti 2 righe:
Hour=$(date +"%H")
Hour=$((10#$Hour))
Cosa fa la linea 2?
Ho uno script bash contenente le seguenti 2 righe:
Hour=$(date +"%H")
Hour=$((10#$Hour))
Cosa fa la linea 2?
Risposte:
Gli 10#
dice di espandere il numero usando la base 10:
Le costanti con uno 0 iniziale sono interpretate come numeri ottali. Un '0x' o '0X' iniziale indica esadecimale. Altrimenti, i numeri assumono la forma [base #] n, dove la base opzionale è un numero decimale compreso tra 2 e 64 che rappresenta la base aritmetica e n è un numero in quella base. Se la base # viene omessa, viene utilizzata la base 10. Quando si specifica n, le cifre maggiori di 9 sono rappresentate dalle lettere minuscole, dalle lettere maiuscole, '@' e '_', in questo ordine. Se la base è inferiore o uguale a 36, le lettere minuscole e maiuscole possono essere utilizzate in modo intercambiabile per rappresentare numeri compresi tra 10 e 35.
Esempi:
Base 16:
$ echo $((16#A))
10
Base 8:
$ echo $((8#12))
10
Base 2:
$ echo $((2#1010))
10
Come sottolinea steeldriver, è probabile che questo venga fatto per gestire eventuali potenziali zeri iniziali dal comando date, ma con le versioni recenti di GNU date può essere fatto più facilmente usando: date +%-H
date
) gli zeri-
+%-H