Что такое “СТРОКА” и “+ %s” в этом сценарии с помощью команды даты?

У меня есть следующий сценарий (на основе этого):

#!/bin/bash

runtime=$(zenity --title "Send notification repeatedly" --entry "Enter the period in minutes like this: nn minutes")

endtime=$(date -ud "$runtime" +%s)

while [[ $(date -u +%s) -le $endtime ]]
do
    notify-send "Hello"
    sleep 10s
done

man date имеет это:

   -d, --date=STRING
          display time described by STRING, not 'now'

но я не мог найти объяснение "СТРОКИ".

Вся следующая работа при вводе в zenity окно:

  • 1 minute
  • 1 minutes и
  • 1 min

Но 1 m не делает. Где то, что приемлемо как описанная "СТРОКА"? Я ничего не мог найти в man date.

Другой вещью является цель +%s. Что это делает?

0
задан 31 October 2019 в 17:44

3 ответа

Вы находите его немного ниже в man date:

СТРОКА ДАТЫ

--date=STRING главным образом свободный формат человекочитаемая строка даты такой как "Sun, 29 Feb 2004 16:21:42 -0800" или "2004-02-29 16:21:42" или даже "next Thursday".
Строка даты может содержать объекты, указывающие на календарную дату, время суток, часовой пояс, день недели, относительного времени, относительной даты и чисел. Пустая строка указывает на начало дня. Формат строки даты более сложен, чем легко документируется здесь, но полностью описан в информационной документации.

Узнать, что точно позволяется и что не, можно прочитать информационную документацию.

Так, выполненный info date и переключитесь на "Форматы ввода даты".


Относительно +%s см. Резюме:

date [OPTION]... [+FORMAT]

причем ФОРМАТ является длинным количеством возможных последовательностей, таким образом, здесь просто тот Вам нужно:

%s     seconds since 1970-01-01 00:00:00 UTC

+ просто часть синтаксиса.


Кроме того, некоторое хорошее чтение: Как я могу получить справку на терминальных командах?

2
ответ дан 22 December 2019 в 00:09

Все сказано в странице справочника:

СТРОКА ДАТЫ

--date=STRING главным образом свободный формат человекочитаемая строка даты, такая как "Sun, 29 февраля 2004 16:21:42 - 0800" или "29.02.2004 16:21:42" или даже "следующий четверг". Строка даты может содержать объекты, указывающие на календарную дату, время суток, часовой пояс, день недели, относительного времени, относительной даты и чисел. Пустая строка указывает на начало дня. Формат строки даты более сложен, чем легко документируется здесь, но полностью описан в информационной документации.

Вот данные примеры:

ПРИМЕРЫ

Преобразуйте секунды с эпохи (01.01.1970 UTC) на дату

$ date --date='@2147483647'

Покажите время на западном побережье США (используйте tzselect (1) для нахождения TZ),

$ TZ='America/Los_Angeles' date

Покажите местное время в течение 9:00 в следующую пятницу на западном побережье США

$ date --date='TZ="America/Los_Angeles" 09:00 next Fri'

Вы могли также найти ту страницу справочника в Интернете

1
ответ дан 22 December 2019 в 00:09

От info '(coreutils) date invocation':

Программа принимает следующие опции. Также посмотрите *опции Common примечания::.

‘-d DATESTR’ ‘-date=DATESTR’ Отображают дату и время, указанную в DATESTR вместо текущей даты и время. DATESTR может быть почти в любом распространенном формате. Это может содержать имена месяца, часовые пояса, и 'пополудни', 'вчера', и т.д. Например, ‘-дата = "27.02.2004 14:19:13.489392193 +0530"’ указывает момент времени, которое составляет 489 392 193 наносекунды после 27 февраля 2004 в 14:19:13 в часовом поясе, который составляет 5 часов и 30 минут к востоку от UTC.Примечание: вход в настоящее время должен быть в локали независимым форматом. Например, LC_TIME=C ниже необходим для печати назад корректной даты во многих локалях: дата-d "$ (дата LC_TIME=C)"

+:

Если дали аргумент, который запускается с ‘+’, 'дата', печатает текущую дату и время (или дата и время, указанная ‘-дата’ опция, посмотрите ниже) в формате, определенном тем аргументом, который подобен той из функции ‘strftime’. За исключением спецификаторов преобразования, которые запускаются с ‘%’, символы в строке формата печатаются неизменные. Спецификаторы преобразования описаны ниже.

%s:

спецификаторы преобразования 'даты' связаны с временами...

‘%s’ секунды с эпохи, т.е. с тех пор 01.01.1970 0:00:00 UTC. Секунды прыжка не считаются, если прыжок вторая поддержка не доступен. * %s-примеры примечания:: для примеров. Это - расширение GNU.

1
ответ дан 22 December 2019 в 00:09

Другие вопросы по тегам:

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