youtube-dl 中意外标记“(”附近出现语法错误

youtube-dl 中意外标记“(”附近出现语法错误

我正在尝试youtube-dl在 bash 脚本中执行命令。脚本如下:- youtube="youtube-dl -prefer-ffmpeg -o $title.%(ext)s ${filename}"

eval $youtube

但我收到以下错误:- syntax error near unexpected token('

我在这里缺少什么?

答案1

括号是 shell 特有的,需要用引号引起来。

$ 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方法在设置字符串时进行计算,而不是在执行命令时进行计算。titlefilename

相关内容