Execute 2 ou mais scripts remotos compartilhando o mesmo padrão de curvas, sem redundância

1

Eu uso o Ubuntu 16.04 e executo uma lista de scripts remotos que estão no mesmo diretório (um repositório 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

Como você lidaria com a terrível redundância?

Eu penso em um loop for , mas não tenho ideia de como construí-lo. Todos% loops for que vi até agora não me dão uma pista sobre como fazer essa tarefa específica de reutilizar um padrão curl (e saída canalizada) para arquivos diferentes no mesmo diretório remoto.

Você é mais que bem-vindo para compartilhar um exemplo.

Atualizar

  • Pode haver mais ou menos do que seis dessas operações curl .
  • Eu usaria qualquer forma plausível, mas se requer um utilitário por favor recomende um utilitário disponível nos repositórios do Debian.
por user9303970 09.02.2018 / 13:11

2 respostas

4

Para dois ou mais arquivos, você pode usar Unix seq :

for var in $(seq 6)
   do 
       curl -s https://raw.githubusercontent.com/${user}/${repo}/master/$var.sh | tr -d '\r' | bash
   done

Explicação:

  1. Use a saída de seq para atingir uma contagem de até 6 (como a pergunta lista 6 curl operations).
  2. Leia a saída na variável var e use isso no comando curl .
por 09.02.2018 / 13:29
3

O mais rápido com o GNU parallel :

parallel -j0 -k "curl -s https://raw.githubusercontent.com/${user}/${repo}/master/{1}.sh \
                 | tr -d '\r' | bash" ::: {1..6}

Você também pode especificar o número crucial por meio da variável dinâmica:

n=7
parallel -j0 -k "curl -s https://raw.githubusercontent.com/${user}/${repo}/master/{1}.sh \
                 | tr -d '\r' | bash" ::: $(seq $n)

link

    
por 09.02.2018 / 13:38