Bash - 如何使用 for 循环按顺序运行命令

God*_*ung 7 bash

一个玩具示例:

我想按顺序运行以下命令

python generate.py 1
python simulate.py 1
python generate.py 2
python simulate.py 2
...
python generate.py 100
python simulate.py 100
Run Code Online (Sandbox Code Playgroud)

鉴于大量的命令,我想沿线使用 for 循环

for i in {1..100}; do \
    python generate.py $i; python simulate.py $i; \
done
Run Code Online (Sandbox Code Playgroud)

一个接一个地运行作业非常重要。我做得对吗?

Joh*_*ohn 10

是的,您这样做是正确的。您编写的循环将按照您长期列出的确切顺序执行命令,但重要的是要注意,一个命令中的错误不会导致循环终止,它将继续执行下一个命令,有效地忽略错误。


ter*_*don 6

是的,你是。一种简单的检查方法是回显命令而不是运行它们:

$ 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
Run Code Online (Sandbox Code Playgroud)

正如您在上面的示例中看到的,命令会根据您的需要启动。