for i in `cat input`
do
youtube-dl $i &&
done
此处输入文件包含YouTube视频链接列表。我希望这段代码能够从列表中并行下载视频。但这项工作一个接一个地完成。这是代码的问题吗?
答案 0 :(得分:1)
你有一个额外的&
,所以:
for i in $(< input); do
youtube-dl "$i" &
done
&&
运算符用于布尔测试,例如:((1 == 1)) && echo "1 == 1" || echo "1 != 1"
$( )
表单。它更易读,易于嵌套。答案 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
答案 2 :(得分:1)
for i in `cat input`; do
youtube-dl "$i" &
done
此外,如果您不希望同时下载过多的垃圾邮件,则可以使用此功能:
cat file.txt | xargs -d '\n' -L 1 -P 5 youtube-dl
此代码将同时仅下载5个视频。我很确定这正是你想要做的。此代码也适用于包含空格的链接。