두 개의 MD5 체크 합계 ($ SUMCHK1 & $ SUMCHK2)가이 스크립트에서 일치 할 때마다 가장 안쪽 while 루프에 걸려 스크립트가 끝나지 않습니다. 두 개의 로그 파일이 일치하면 두 개의 md5sum이 화면에 표시됩니다.가장 안쪽 while 루프에서 벗어날 수 없음 - Bash - Ubuntu
#!/bin/bash
FULLPATH=$1
FPS=$2
AVI=$(basename $1)
AVIDIR=$HOME/q7video/$AVI
TMPFILE=$AVIDIR/tmp.txt
TMPFILE2=$AVIDIR/tmp2.txt
NEWFILES=$AVIDIR/tmp3.txt
FFLOG=$AVIDIR/ffmpeg.log
LOGFILE=$AVIDIR/log.log
FACESDIR=$AVIDIR/faces
# CREATE FOLDER STRUCTURE, NO ERROR IF DIR PRE-EXISTS
mkdir --parents $AVIDIR
mkdir --parents $FACESDIR
touch $TMPFILE $TMPFILE2 $NEWFILES $LOGFILE
echo $AVI > $LOGFILE
# DUMP THUMBNAILS FROM SPECIFIED AVI FILE
ffmpeg -i $FULLPATH -f image2 -vf fps=fps=$FPS $AVIDIR/$AVI%03d.jpg </dev/null >/dev/null 2>$FFLOG &
# DELAY TO ALLOW LOOP A WORKING DIRECTORY BEFORE START
sleep 2
#TOUCH FILES TO PREVENT NO FILE ERROR
touch $TMPFILE $TMPFILE2
# INITIALIZE VARIABLE FOR LOOP
CHECK=`pgrep ffmpeg`
I=0
SUMCHK1=`md5sum $TMPFILE`
SUMCHK2=`md5sum $TMPFILE2`
while [[ "$CHECK" -gt "$I" ]]; do
sleep 2
echo FFMPEG RUNNING
ls $AVIDIR/*.jpg > $TMPFILE
while [[ "$SUMCHK1" != "$SUMCHK2" ]]; do
comm -23 $TMPFILE $TMPFILE2 > $NEWFILES
while read F ; do
echo $F
echo $F >> $TMPFILE2
echo $F >> $LOGFILE
python opencvtest.py $F >> $LOGFILE
done < $NEWFILES
ls $AVIDIR/*.jpg > $TMPFILE
SUMCHK1=`md5sum $TMPFILE`
SUMCHK2=`md5sum $TMPFILE2`
echo $SUMCHK1
echo $SUMCHK2
done
CHECK=`pgrep ffmpeg`
echo $CHECK
done
# COPY IMAGES WITH A FACE TO FACESDIR
# CLEANUP LOGS
#rm $TMPFILE $TMPFILE2 $NEWFILES
두 변수는 체크섬이있는 파일의 이름을 포함하기 때문에 절대로 같은 값을 갖지 않습니다. – chepner
왜 FFMPEG 인스턴스의 프로세스 ID를 0으로 비교합니까? – chepner
예 내 측면에서 동일한 동작을 수행합니다. md5sum은 해시와 파일 이름을 출력합니다. '54328f6b27a45c51986ed436f3f609bf .profile'. 마지막 파트를'| cut -d "-f1' – Florent