![youtube-dl 中意外标记“(”附近出现语法错误](https://linux22.com/image/127187/youtube-dl%20%E4%B8%AD%E6%84%8F%E5%A4%96%E6%A0%87%E8%AE%B0%E2%80%9C(%E2%80%9D%E9%99%84%E8%BF%91%E5%87%BA%E7%8E%B0%E8%AF%AD%E6%B3%95%E9%94%99%E8%AF%AF.png)
我正在尝试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
方法在设置字符串时进行计算,而不是在执行命令时进行计算。title
)filename