2014-06-30 5 views
0

내 인생에서 왜 mediainfo - 정보 명령을 배열에 저장할 수 없는지 알 수 없습니다. 전에 Bash에서 루프를 만들었습니다. 아마 여기에 정말 분명한 것을 놓치고있을 것입니다. 또는 아마도 나는 그것에 대해 완전히 잘못된 길을 가고 있습니다.mediainfo 비디오 출력의 출력을 배열에 저장하는 데 문제가 발생했습니다.

#!/bin/bash 

for file in /mnt/sda1/*.mp4 

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

done 

echo ${vidtime[@]} 

출력은 항상 루프에서 처리되는 마지막 파일의 시간이며 배열의 나머지 요소는 null입니다.

나는 라스베리 파이에서 비디오를 끝없이 재생하기 위해 스크립트 작업을하고 있지만, 비디오 끝에 항상 omxplayer가 나오지는 않는다는 것을 알기 때문에 재현하기가 정말 힘들어서 포기했습니다. 근본 원인을 해결하는 방법 내가해야 할 것보다 오래 실행중인 모든 omxplayer 프로세스를 죽일 논리를 세우려고합니다.

답변

0

사진을주세요. + = 연산자에 유의하십시오. 또한 파일 이름에 공백이 포함 된 경우 $ 파일 주위에 따옴표를 추가 할 수 있습니다 :

#!/bin/bash 

for file in /mnt/sda1/*.mp4 

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

done 

echo ${vidtime[@]} 
+0

고쳐 주셔서 감사합니다! 이 경우 + = 연산자가 필요한 이유는 무엇입니까? 나는 과거에 언급 한 예들 중 어떤 것에도 사용 된 것을 보지 못합니다. – ErichL

+0

한 번에 하나씩 파일 세트의 mediainfo 명령을 반복하므로 vidtime 배열이 계속 재설정되므로 배열의 마지막 파일 만 볼 수있는 이유가 설명됩니다. – brianlq

0

그것은 그것에게이 방법을 수행하는 것이 더 효율적입니다 :

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

mediainfo 전화 repeatingly for 루프를 사용 할 필요 .

+1

나는 팁을 주셔서 감사합니다. – ErichL

관련 문제