youtube-dlの予期しない表示"("の近くに構文エラーがあります。

youtube-dlの予期しない表示

youtube-dlBashスクリプトからコマンドを実行しようとしています。スクリプトは次のとおりです。 - 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(もちろん、コマンドが実行されるのではなく、文字列が設定されたときにメソッドが計算を実行することを除いてください。titlefilename

おすすめ記事