执行2个或更多共享相同curl模式的远程脚本,无冗余

执行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 存储库中提供的实用程序。

答案1

对于两个或多个文件,您可以使用Unix 序列:

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

答案2

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

相关内容