[ad_1]
本文介绍了如何在上一个命令运行完毕后运行命令。 使用它,您不仅可以运行 2 个命令,还可以在前一个命令完成后运行任意数量的命令。 这将适用于 Sh、Bash、Zsh 和其他 shell。
您可以在前一个命令完成后运行命令,具体取决于前一个命令的退出状态(是否失败)或不管这一点。 所以有3种可能的情况:
- 如果上一个命令成功退出,则运行命令,
- 如果前一个命令失败(如果它的退出状态不是 0),则运行命令,或者
- 无论前一个命令的退出状态如何,都运行一个命令(失败与否无关紧要)
让我们来看看下面的每一个案例。
如何在 Linux 上每 X 秒重复一次命令
要仅在前一个命令成功退出的情况下连续运行多个命令(等待前一个命令完成),请使用 &&
命令之间的运算符. 例如(您可以有任意数量的命令):
command1 && command2
如果您不关心前一个命令的退出状态,而只想在前一个命令完成后运行一个命令,请使用 ;
分隔器. 示例(您可以有任意数量的命令):
command1; command2; command3
如果你想在前一个命令完成运行后运行一个命令,但前提是前一个命令失败(如果它返回一个不是 0 的退出状态)。 在这种情况下,使用 ||
分隔器. 例如(再一次,你可以有任意数量的命令):
command1 || command2
您可能还对以下内容感兴趣:如何使用 find 查找最近 N 天或最近 N 分钟内修改的文件
您也可以混合使用这些运算符。 在这种情况下,您可以使用以下命令对命令进行分组 {
和 }
. 为此,您需要确保添加分号 (;
) 前 }
后面有一个空格 {
. 例如:
command1 || { command2; command3; }
在这个例子中:
- 跑
command1
并等待它完成 - 如果
command1
失败,继续执行下一个命令(||
):- 跑
command2
并等待它完成 - 不管
command2
的退出状态,运行 command3 (;
)
- 跑
另一个例子:
{ command1 && command2; }; { command3 && command4; }
在这个例子中:
- 跑
command1
并等待它完成 - 如果
command1
成功,运行 command2 并等待它完成(&&
) - 不管是否
command2
成功与否,或者如果它甚至运行与否,运行command3
并等待它完成(;
在第一次之后}
) - 如果
command3
成功,运行command4
(&&
)
提醒一下, ;
在每个之前 }
使用时需要 {}
,并且不影响命令的运行方式。
[[Edit]] 文章最初使用括号 (()
) 用于混合经营者; 但与使用大括号 ({}
),正如 Laurent 在下面的评论中指出的那样。 所以我更新了文章以使用 {}
为了这。
您可能会喜欢:如何在 Linux 中更改默认 Shell
[ad_2]