1
for i in `cat input`
    do
    youtube-dl $i &&
done

ここで、入力ファイルには YouTube ビデオ リンクのリストが含まれています。私は、このコードがリストからビデオを並行してダウンロードすることを期待していました。しかし、仕事は次々と完了しました。コードに問題がありますか?

4

3 に答える 3

1

余分なものがある&ので、次のようにします。

for i in $(< input); do
    youtube-dl "$i" &
done

さらに進むには

  • 演算子は、&&次のようなブール テストで使用されます。((1 == 1)) && echo "1 == 1" || echo "1 != 1"
  • bash の単語分割を防ぐために、常に変数を二重引用符で保護してください。
  • バッククォートは 2013 年に非推奨になり、$( )形式が優先されます。より読みやすく、ネストも簡単です。
于 2013-08-25T16:19:21.997 に答える
1

バックグラウンドでプロセスを実行する&には、の代わりに記号を使用します。&&スクリプトは次のようになります。

while read -r i
do
    youtube-dl "$i" &
done < "input"
wait ## Optional if you want the script to wait for all videos to download before exiting
于 2013-08-25T16:19:26.487 に答える
1
for i in `cat input`; do
    youtube-dl "$i" &
done

また、あまりにも多くの同時ダウンロードでYouTubeをスパムしたくない場合は、これを使用できます:

cat file.txt | xargs -d '\n' -L 1 -P 5 youtube-dl

このコードは、同時に 5 つのビデオのみをダウンロードします。私はそれがまさにあなたがやろうとしていることだと確信しています。このコードは、スペースを含むリンクでも機能します。

于 2013-08-25T16:19:40.300 に答える