bash 脚本中的命令是并行运行还是一个接一个运行?

Rut*_*uth 11 linux bash

以下面的shell脚本为例:

#!/bin/bash
python do_this_first.py 
python do_this_second.py
python do_this_last.py
Run Code Online (Sandbox Code Playgroud)

当我运行上面的时候,3个python脚本会并行运行吗?因为我希望 'do_this_second' 只在 'do_this_first' 完成后运行。

slh*_*hck 29

就目前而言,它们将一个接一个地运行,无论它们是否失败。他们只需要在某个时候退出,然后运行下一个命令。相继。

如果您希望仅在前面的命令没有出现错误退出时才执行它们,请使用:

python do_this_first.py && python do_this_second.py && python do_this_last.py
Run Code Online (Sandbox Code Playgroud)

在这里,两个 & 符号就像一个逻辑AND. 第二个脚本只有在第一个脚本干净退出时才会运行,第三个脚本只有在第二个脚本没有错误运行时才会运行。如果有任何错误,以下命令都不会运行。


但是,如果您想并行运行它们,则可以这样做 - 但还有很多其他选择:

python do_this_first.py &
python do_this_second.py &
python do_this_last.py &
Run Code Online (Sandbox Code Playgroud)