Что означает ((num # Hour)) в скрипте bash?


Ответы:


24

Он 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


2
В этом конкретном случае, возможно, стоит упомянуть, что (по крайней мере, в последних версиях GNU date) -+%-H
начальные


@don_crissti - да, я не смог его найти
steeldriver
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.