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