无法将mediainfo视频时间的输出存储到数组中

时间:2014-06-30 22:26:50

标签: arrays bash shell raspbian mediainfo

对于我的生活,我无法弄清楚为什么我无法将 mediainfo --Inform 命令的输出存储到数组中。在没有问题之前我已经完成了Bash中的循环,也许我在这里遗漏了一些非常明显的东西。或者,也许我会以完全错误的方式解决它。

#!/bin/bash

for file in /mnt/sda1/*.mp4

  do vidtime=($(mediainfo --Inform="Video;%Duration%" $file))

done

echo ${vidtime[@]}

输出始终是循环中处理的最后一个文件的时间,并且数组的其余元素为空。

我正在制作一个剧本,无休止地在Raspberry Pi上播放视频,但我发现omxplayer并不总是在视频结束时退出,它很难再现,所以我放弃了排除根本原因。我正在尝试构建一些逻辑来消除任何运行时间超过应有的omxplayer进程。

2 个答案:

答案 0 :(得分:0)

给它一个机会。注意+ =运算符。如果文件名包含空格,您可能还想在$ file周围添加引号:

#!/bin/bash

for file in /mnt/sda1/*.mp4

  do vidtime+=($(mediainfo --Inform="Video;%Duration%" "$file"))

done

echo ${vidtime[@]}

答案 1 :(得分:0)

这样做效率更高:

read -ra vidtime < <(exec mediainfo --Inform='Video;%Duration% ' -- /mnt/sda1/*.mp4)

无需使用for循环并重复调用mediainfo