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 个视频。我很确定这正是你想要做的。此代码也适用于包含空格的链接。