* .avi 파일을 mp4 형식으로 변환해야하는 스크립트를 작성했습니다. 그러나 "while"루프는 첫 번째 반복 후에 중지됩니다. 나는 놀랐어요BASH에서 첫 번째 반복 후 루프가 중지됨
find . -name a.avi b.avi.c.avi d.avi ... -type f
당신이 'didn를 : 같은 find 명령 보이는, 그래서 find . -name *.avi -type f
이 쉘은find
시작하기 전에 와일드 카드 을 확대 :
#!/bin/bash
shopt -s lastpipe
cd <some_directory>
find . -name *.avi -type f |
while read -r avi
do
/usr/bin/HandBrakeCLI -i "${avi}" -o "${avi%.avi}.mp4" -f mp4 -m -O -e x264 -q 20 --vfr \
# &> /dev/null
if [ "$?" -eq 0 ]
then
echo "${avi} was converted successfully"
rm "${avi}"
else
echo "${avi} was not converted"
break
fi
done
질문을 추가해야합니다. – witrin
때문에 'break' 문이 필요합니까? BTW,'done <(find ...)'를 사용하는 것은'lastpipe'와 동일하고 _more common_입니다. :) – jm666