erro de sintaxe próximo ao token inesperado '(' no youtube-dl

0

Estou tentando executar um comando youtube-dl no meu script bash. O roteiro é o seguinte: youtube="youtube-dl -prefer-ffmpeg -o $title.%(ext)s ${filename}"

eval $youtube

Mas estou recebendo o seguinte erro: syntax error near unexpected token ('

O que estou perdendo aqui?

    
por Abascus 06.02.2018 / 20:01

1 resposta

1

Os parênteses são especiais para o shell, você precisa citá-los.

$ 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

Ou, de preferência, salve o comando em uma função em vez de uma variável de string, algo assim:

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

(exceto, é claro, que o método eval avalia title e filename quando a string é definida, não quando o comando é executado.)

    
por 06.02.2018 / 20:10

Tags