不确定如何描述这一点,但想简化这一点......
declare -i seconds=0
seconds=$(mediainfo --Inform="General;%Duration%" "$1")/1000
eval "echo $(date -ud "@$seconds" +'%l:%M')"
我无法在没有先声明的情况下将返回毫秒除以 1000,但我能否以某种方式将前两行全部放入“@$seconds”中?
答案1
你没有展示整个脚本,但我认为你真的不需要eval
在echo
最后一行。你可以使用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