0

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

#!/bin/bash

for file in /mnt/sda1/*.mp4

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

done

echo ${vidtime[@]}

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

我正在编写一个脚本以在 Raspberry Pi 上无休止地播放视频,但我发现 omxplayer 并不总是在视频结束时退出,它真的很难重现,所以我放弃了对根目录进行故障排除原因。我正在尝试构建一些逻辑来杀死任何运行时间超过应有时间的 omxplayer 进程。

4

2 回答 2

0

这样做更有效:

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

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

于 2014-07-02T06:17:46.317 回答
0

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

#!/bin/bash

for file in /mnt/sda1/*.mp4

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

done

echo ${vidtime[@]}
于 2014-06-30T23:22:20.107 回答