在后台运行过程

时间:2013-08-25 16:15:44

标签: bash video background-process youtube-dl

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

此处输入文件包含YouTube视频链接列表。我希望这段代码能够从列表中并行下载视频。但这项工作一个接一个地完成。这是代码的问题吗?

3 个答案:

答案 0 :(得分:1)

你有一个额外的&,所以:

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

进一步

  • &&运算符用于布尔测试,例如:((1 == 1)) && echo "1 == 1" || echo "1 != 1"
  • 始终使用双引号保护您的变量,以防止 bash单词拆分
  • 2013年不推荐使用反引号来支持$( )表单。它更易读,易于嵌套。

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