У меня есть скрипт bash, содержащий следующие 2 строки:
Hour=$(date +"%H")
Hour=$((10#$Hour))
Что делает строка 2?
У меня есть скрипт bash, содержащий следующие 2 строки:
Hour=$(date +"%H")
Hour=$((10#$Hour))
Что делает строка 2?
Ответы:
Он 10#
говорит, чтобы расширить число, используя базу 10:
Константы с ведущим 0 интерпретируются как восьмеричные числа. Ведущий '0x' или '0X' обозначает шестнадцатеричное. В противном случае числа принимают форму [base #] n, где необязательное основание - это десятичное число от 2 до 64, представляющее арифметическое основание, а n - это число в этом основании. Если база # опущена, то используется база 10. При указании n цифры больше 9 представляются строчными буквами, заглавными буквами '@' и '_' в указанном порядке. Если основание меньше или равно 36, строчные и прописные буквы могут использоваться взаимозаменяемо для представления чисел от 10 до 35.
Примеры:
База 16:
$ echo $((16#A))
10
База 8:
$ echo $((8#12))
10
База 2:
$ echo $((2#1010))
10
Как указывает Steeldriver, это, вероятно, делается для обработки любых потенциальных лидирующих нулей из команды date, но в последних версиях GNU date это можно сделать проще, используя: date +%-H
date
)-
+%-H