Io-Redirection

執行並行命令並將輸出重定向到具有特定名稱的文件

  • January 5, 2019

我不能很好地理解並行命令是如何工作的。

我需要執行這個簡單的命令:(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

好吧,這是一個設計過度的 Bash 解決方案,但它可以工作,並且希望能闡明parallel命令的使用:

function xx(){ curl "https://jsonplaceholder.typicode.com/todos/$1" > "$1.txt";}
parallel xx -- {1..100}

第一行創建一個新的“命令”或呼叫xx的函式 - 當執行時 - 導致執行 curl 命令,其標準輸出重定向到文件。該xx函式將單個數字作為其參數;在函式體內,它被稱為“$1”,即第一個位置參數。

第二行展示了該命令的使用,該命令對列表 1、2、3、…、100 中的每個參數parallel執行一次(並使用)(列表 1 2 3 … 100 由 shell 在以下情況下生成)xx它對{1..100}) 執行大括號擴展。

注意:此答案與Debian 系統上的軟體包中的parallel命令有關,與命令無關。moreutils``GNU parallel

像這樣:

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)。您的命令行會因此而愛上您。

引用自:https://unix.stackexchange.com/questions/492317