다음과 같은 스크립트가 있습니다.
#!/bin/bash
# $1 -- extension, like *.MP4
# $2 -- output file name
ffmpeg -f concat -i <(find . -name '$1' -printf "file '$PWD/%p'\n" | sort) -c copy $2
MP4 파일을 연결하려고 하면 다음 오류가 발생합니다.
/dev/fd/63: 입력을 처리하는 동안 잘못된 데이터가 발견되었습니다.
무엇이 문제일까요? Ubuntu 16.04 기반 Linux Mint 18을 사용합니다.
추신: 문제는 $1이 따옴표('$1')로 대체되지 않았다는 것입니다. 이제 하드코딩되었습니다. 교체하는 방법?
답변1
-name
이것은 작동합니다 - 플래그가 이것을 허용하기 때문에 확장자를 따옴표 밖으로 이동하십시오 :
#!/bin/bash
# $1 -- extension, like MP4
# $2 -- output file name
echo Extension: $1
echo Output: $2
echo Files:
find . -name \*.$1 -printf "file '$PWD/%p'\n" | sort
ffmpeg -f concat -i <(find . -name \*.$1 -printf "file '$PWD/%p'\n" | sort) -c copy $2