对于我的生活,我无法弄清楚为什么我无法将 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进程。
答案 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
。