Что означает ((10 # $ H> 5)) 'в скрипте bash? - PullRequest
0 голосов
/ 07 января 2019

Я запутался в следующем фрагменте кода:

#!/bin/bash

H=$(date +%H); 
if (( 10#$H > 5 ))
then 
        # do something
else 
        # do something else
fi

Что означает (( 10#$H > 5 )) в приведенном выше фрагменте кода?

1 Ответ

0 голосов
/ 07 января 2019

10#$H означает расширение числа с использованием базы 10.

Вероятно, это сделано для удаления любых начальных нулей с даты, поскольку bash будет интерпретировать число в базе 8 (восьмеричное).

Пример:

$ echo "$(( 08 < 5 ))"
bash: 08: value too great for base (error token is "08")

АРИФМЕТИЧЕСКАЯ ОЦЕНКА: Константы с начальным 0 интерпретируются как восьмеричные числа. Ведущий 0x или 0X обозначает шестнадцатеричное. В противном случае числа принимают форму [base#]n, где base - десятичное число от 2 до 64, представляющее арифметическое основание и n - это число в этом base. Если base# опущен, то используется база 10. Цифры больше 9 представлены строчными буквами, прописными буквами @ и _ в указанном порядке. Если base меньше или равно 36, строчные и прописные буквы могут использоваться взаимозаменяемо для представления чисел от 10 до 35.

источник: man bash

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...