Bash - como usar o loop for para executar comandos sequencialmente

5

Um exemplo de brinquedo:

Eu quero executar os seguintes comandos sequencialmente

python generate.py 1
python simulate.py 1
python generate.py 2
python simulate.py 2
...
python generate.py 100
python simulate.py 100

Dado o grande número de comandos, eu gostaria de usar um loop for ao longo das linhas

for i in {1..100}; do \
    python generate.py $i; python simulate.py $i; \
done

É muito importante que os trabalhos sejam executados um após o outro. Estou fazendo isso corretamente?

    
por Godwin Yung 21.09.2015 / 15:51

2 respostas

8

Sim, você está fazendo isso corretamente. O loop que você escreveu irá executar os comandos na ordem exata em que você os listou por extenso, embora seja importante notar que um erro em um comando não fará com que o loop termine, ele continuará com o próximo comando, efetivamente ignorando o erro.

    
por 21.09.2015 / 15:53
5

Sim, você é. Uma maneira simples de verificar seria ecoar os comandos em vez de executá-los:

$ for i in {1..5}; do 
     echo python generate.py "$i"
     echo python simulate.py "$i" 
 done
python generate.py 1
python simulate.py 1
python generate.py 2
python simulate.py 2
python generate.py 3
python simulate.py 3
python generate.py 4
python simulate.py 4
python generate.py 5
python simulate.py 5

Como você pode ver no exemplo acima, os comandos são lançados como você deseja.

    
por 21.09.2015 / 15:54

Tags