Shell-Script
執行 2 個或更多遠端腳本共享相同的 curl 模式,沒有冗餘
我使用 Ubuntu 16.04 並執行位於同一目錄(GitHub 儲存庫)中的遠端腳本列表:
curl -s https://raw.githubusercontent.com/${user}/${repo}/master/1.sh | tr -d '\r' | bash curl -s https://raw.githubusercontent.com/${user}/${repo}/master/2.sh | tr -d '\r' | bash curl -s https://raw.githubusercontent.com/${user}/${repo}/master/3.sh | tr -d '\r' | bash curl -s https://raw.githubusercontent.com/${user}/${repo}/master/4.sh | tr -d '\r' | bash curl -s https://raw.githubusercontent.com/${user}/${repo}/master/5.sh | tr -d '\r' | bash curl -s https://raw.githubusercontent.com/${user}/${repo}/master/6.sh | tr -d '\r' | bash
你將如何應對可怕的冗餘?
我想到了一個
for
循環,但我不知道如何建構它。到目前為止,我看到的所有for
循環都沒有為我提供有關如何為curl
同一遠端目錄中的不同文件重用模式(和管道輸出)的特定任務的線索。非常歡迎您分享一個例子。
更新
- 這樣的操作可能多於或少於六個
curl
。- 我會使用任何可行的方式,但如果它需要實用程序,請推薦 Debian 儲存庫中可用的實用程序。
對於兩個或更多文件,您可以使用Unix seq:
for var in $(seq 6) do curl -s https://raw.githubusercontent.com/${user}/${repo}/master/$var.sh | tr -d '\r' | bash done
解釋:
- 使用 的輸出
seq
獲得最多 6 個計數(因為問題列出了 6 個curl
操作)。- 將輸出讀入變數
var
並在您的curl
命令中使用它。
使用 GNU 最快的一個**
parallel
**:parallel -j0 -k "curl -s https://raw.githubusercontent.com/${user}/${repo}/master/{1}.sh \ | tr -d '\r' | bash" ::: {1..6}
您還可以通過動態變數指定關鍵數字:
n=7 parallel -j0 -k "curl -s https://raw.githubusercontent.com/${user}/${repo}/master/{1}.sh \ | tr -d '\r' | bash" ::: $(seq $n)