我不太明白并行命令是如何工作的。
我需要运行这个简单的命令:(100 次)
curl https://jsonplaceholder.typicode.com/todos/1
curl https://jsonplaceholder.typicode.com/todos/2
curl https://jsonplaceholder.typicode.com/todos/3
...
curl https://jsonplaceholder.typicode.com/todos/100
end 将输出重定向到具有如下名称的文件:
1.txt
2.txt
3.txt
....
100.txt
答案1
像这样:
parallel curl https://jsonplaceholder.typicode.com/todos/{} ">" {}.txt ::: {1..100}
考虑花 20 分钟阅读《GNU Parallel 2018》一书的第 1+2 章(印刷版:http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html在线的:https://doi.org/10.5281/zenodo.1146014)。您的命令行会因此而喜欢您。
答案2
嗯,这是一个有点过度设计的 Bash 解决方案,但它有效,并且希望澄清该命令的使用parallel
:
function xx(){ curl "https://jsonplaceholder.typicode.com/todos/$1" > "$1.txt";}
parallel xx -- {1..100}
第一行创建一个新的“命令”或调用的函数,xx
执行时会导致执行将其 stdout 重定向到文件的curl 命令。该xx
函数采用单个数字作为其参数;在函数体内,它被称为“$1”,即第一个位置参数。
第二行演示了该命令的用法parallel
,该命令对列表 1, 2, 3, ..., 100 中的每个参数运行xx
一次(列表 1 2 3 ... 100 由 shell 在以下情况下生成):它对{1..100}
) 执行大括号扩展。
parallel
注意:这个答案与 Debian 系统上的包中的命令有关moreutils
,而不是命令GNU parallel
。