我正在尝试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