Округлить секунды в команде bash по дате, чтобы понизить границы - PullRequest
0 голосов
/ 11 июня 2018

У меня есть команда date для отображения часов, минут и секунд, что-то вроде

date -u +"%H%M%S" | cut -c 1-6

Это покажет что-то, например 155344.Мне нужно, чтобы вывод всегда округлялся до нижней границы, поэтому для приведенного выше примера мне нужно, чтобы он был 155340.

Даже если приведенная выше команда выдает 155349, мой вывод должен отображать нижнюю границу 155340 не 155350.

В ожидании просветления.

Ответы [ 3 ]

0 голосов
/ 11 июня 2018

Поскольку вы в основном хотите заменить последний символ строки на 0, вы можете сделать это с помощью расширения параметра оболочки :

$ timestamp=$(date -u +"%H%M%S")
$ echo "$timestamp"
161333
$ echo "${timestamp%?}0"
161330

Вам также не нужноcut, так как вывод вашей команды date всегда должен быть длиной шесть символов.

0 голосов
/ 11 июня 2018

$(date -u +"%H%M%S" | cut -c 1-5)0

Это тоже работает, но исправить это ненадежно.

0 голосов
/ 11 июня 2018

Возьмите вывод, целочисленное деление на 10, а затем умножьте на 10, так что если вы сохранили это значение как output:

output=$(( $output / 10 ))
output=$(( $output * 10 ))

$(()) - это целочисленная арифметика в bash, иусечения, а не округления.

Это можно записать одной строкой с

$(( $(date -u +"%H%M%S" | cut -c 1-6) / 10 * 10 ))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...