bash + script de execução no ciclo de loop

0

precisamos executar o run.sh em cada 10 etapas

for x in {1..100} ; do
  sleep 1
  /tmp/run.sh
done

então, finalmente, o run.sh será executado 10 vezes

como podemos fazer isso?

outro exemplo (neste caso o run.sh será executado 20 vezes)

for x in {1..200} ; do
  sleep 1
  /tmp/run.sh
done
    
por yael 22.02.2018 / 15:05

3 respostas

3

Você só precisa testar se o valor de x pode ser dividido por 10:

for x in {0..100} ; do
    if (( x % 10 == 0 ))
    then
        /tmp/run.sh
    fi
    sleep 1
done
    
por 22.02.2018 / 15:11
3

Este é um trabalho para o módulo operador ( % ). Por exemplo:

for x in {1..100} ; do
  sleep 1
  [ $((x % 10)) -eq 0 ] && /tmp/run.sh
done

Outro exemplo:

$ for i in {1..100} ; do  [ $((i % 10)) -eq 0 ] && echo $i  ; done
10
20
30
40
50
60
70
80
90
100
    
por 22.02.2018 / 15:12
2
for (( i = 0; i < 10; ++i )); do
    /tmp/run.sh
    sleep 10
done

Se você quiser executar o script dez vezes, faça o loop dez vezes e durma a quantidade adequada de tempo entre elas.

Ou com um parâmetro que determina quantas vezes executar o script:

n=20
for (( i = 0; i < n; ++i )); do
    /tmp/run.sh
    sleep 10
done
    
por 22.02.2018 / 15:17