youtube-dl의 예기치 않은 표시 "(" 근처에 구문 오류가 있습니다.

youtube-dl의 예기치 않은 표시 "(" 근처에 구문 오류가 있습니다.

youtube-dlBash 스크립트에서 명령을 실행 하려고 합니다 . 스크립트는 다음과 같습니다:- youtube="youtube-dl -prefer-ffmpeg -o $title.%(ext)s ${filename}"

eval $youtube

하지만 다음과 같은 오류가 발생합니다.- syntax error near unexpected token('

내가 여기서 무엇을 놓치고 있는 걸까요?

답변1

괄호는 쉘에만 적용되며 따옴표로 묶어야 합니다.

$ title=foo; filename=bar
$ youtube="youtube-dl -prefer-ffmpeg -o $title.%(ext)s ${filename}"
$ eval echo $youtube
bash: syntax error near unexpected token '('
$ youtube="youtube-dl -prefer-ffmpeg -o $title.%\(ext\)s ${filename}"
$ eval echo $youtube
youtube-dl -prefer-ffmpeg -o foo.%(ext)s bar

또는 다음과 같이 문자열 변수 대신 함수에 명령을 저장하는 것이 더 좋습니다.

ydl() {
    youtube-dl -prefer-ffmpeg -o "$1.%(ext)s" "$2"
}
ydl "$title" "$filename"

eval( 물론 명령이 실행될 때가 아니라 문자열이 설정될 때 메서드가 계산을 수행한다는 점은 제외합니다 . title)filename

관련 정보