for i in `cat input`
do
youtube-dl $i &&
done
ここで、入力ファイルには YouTube ビデオ リンクのリストが含まれています。私は、このコードがリストからビデオを並行してダウンロードすることを期待していました。しかし、仕事は次々と完了しました。コードに問題がありますか?
for i in `cat input`
do
youtube-dl $i &&
done
ここで、入力ファイルには YouTube ビデオ リンクのリストが含まれています。私は、このコードがリストからビデオを並行してダウンロードすることを期待していました。しかし、仕事は次々と完了しました。コードに問題がありますか?
余分なものがある&
ので、次のようにします。
for i in $(< input); do
youtube-dl "$i" &
done
&&
次のようなブール テストで使用されます。((1 == 1)) && echo "1 == 1" || echo "1 != 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
for i in `cat input`; do
youtube-dl "$i" &
done
また、あまりにも多くの同時ダウンロードでYouTubeをスパムしたくない場合は、これを使用できます:
cat file.txt | xargs -d '\n' -L 1 -P 5 youtube-dl
このコードは、同時に 5 つのビデオのみをダウンロードします。私はそれがまさにあなたがやろうとしていることだと確信しています。このコードは、スペースを含むリンクでも機能します。