Общие сведения о переменной TZ (Часовой пояс )в Unix

Для вашей конкретной проблемы это также будет работать, если вы используете Bash, немного сократив свой код, позволив вам опустить конструкцию if:

currentDate=${dateFromCLI-+%b%d%y}

Выражение справа от знака равенства представляет собой особую форму расширения параметра, общая форма которой:

${variableName-"default value"}

Если определена переменная с именем variableName, вся конструкция ${}расширяется до значения переменной.

Однако, если он не определен, конструкция расширяется до значения по умолчанию, справа от буквального дефиса(-). Переменная считается определенной, если она была назначена ранее и не была отменена впоследствии. Он определяется даже в том случае, если ему было присвоено пустое значение.

Если вы ранее установили dateFromCLIв пустое значение, вы можете использовать тот же стиль расширения, но с заменой -на :-. В этом случае также выбирается значение по умолчанию, если именованная переменная определена, но имеет нулевое значение (пустая строка):

${variableName:-"default value"}

Справочник:Справочное руководство GNU Bash :Расширение параметров оболочки

2
04.03.2021, 17:35
2 ответа

Переменная TZопределена согласно POSIX в диапазоне от -24 до +24:

The hour shall be between zero and 24, and the minutes (and seconds)-if present-between zero and 59. The result of using values outside of this range is unspecified. If preceded by a '-', the timezone shall be east of the Prime Meridian; otherwise, it shall be west (which may be indicated by an optional preceding '+' ).

GNU и другие расширили этот диапазон до ±167 часов:

The hours part of the time fields can range from -167 through 167; this is an extension to POSIX.1, which allows only the range 0 through 24

Solaris 11.4 кажется строго POSIX в отношении документации , но GNU -нравится в отношении его реализации (или, возможно, вы используете вариант GNU dateв своем тестировании)

3
18.03.2021, 22:27

Любое смещение >+12 и <-12 является неопределенным поведением ИМХО.

0
18.03.2021, 22:27

Теги

Похожие вопросы