youtube-dl
Bashスクリプトからコマンドを実行しようとしています。スクリプトは次のとおりです。 -
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