Мс на сегодняшний день формат?

Не знаю, как это описать, но хочу упростить это ...

declare -i seconds=0
seconds=$(mediainfo --Inform="General;%Duration%" "$1")/1000
eval "echo $(date -ud "@$seconds" +'%l:%M')"

Я не мог разделить возвращаемое мс на 1000, не объявив его первым, но могу ли я каким-то образом получить две первые строки в виде «@ $ секунд»?

1
задан 29 August 2019 в 22:20

1 ответ

Вы не показали целый сценарий, но я предполагаю, что Вам действительно не нужно eval и echo в последней строке. Можно использовать a bash Арифметическое выражение $((…)) следующим образом:

date -ud "@$(($(mediainfo --Inform="General;%Duration%" "$1")/1000))" +%l:%M

Поскольку %l “час, дополненное пространство (1.. 12)” %l:%M дает неправильный вывод, для фильма с 00:56:40 это показывает 12:56. Возможно, Вы хотите что-то другое, но я никогда не видел 12-часовой формат, используемый на продолжительности – если отображение продолжительности файла в формате HH:MM с дополненными пространством часами - то, что Вы хотите +%_H:%M добивается цели:

$ date -ud@"$(($(mediainfo --Inform="General;%Duration%" /path/to/file)/1000))" +%_H:%M
 0:56

Дальнейшее чтение

1
ответ дан 7 December 2019 в 14:59

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

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