Shell-Script

執行 2 個或更多遠端腳本共享相同的 curl 模式,沒有冗餘

  • February 9, 2018

我使用 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

解釋:

  1. 使用 的輸出seq獲得最多 6 個計數(因為問題列出了 6 個curl操作)。
  2. 將輸出讀入變數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)

https://www.gnu.org/software/parallel/man.html

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