Contents

如何在终端窗口中运行多个bash脚本

1. 概述

在本文中,我们将研究如何在我们的终端中运行多个 bash 脚本。有时我们可能需要在同一个终端窗口中运行不同的脚本。例如,它可能用于监控或复杂的自动化。每当我们发现自己处于这种情况时,我们可能不知道正确的处理方法。这就是我们将在本文中处理的内容。

2. 在终端中运行多个 Bash 脚本的方法

有几种方法可以实现这一点,但我们将看几个例子。

2.1. 运算符*&&||* , 和*;*

我们要看的第一个逻辑运算符是AND运算符:*&&。*在 Bash 中,它用于将命令链接在一起。它还可以用于同时运行两个不同的脚本。让我们看一个例子:

$ ./script1.sh && ./script2.sh
Hello World!!
Hello World!!

我们有两个 Bash 脚本,即script1.shscript2.sh。这些脚本仅在运行时返回*“Hello World”* 。

如果我们执行的第一个脚本遇到错误,则第二个脚本不会运行。

我们要看的第二个逻辑运算符是OR运算符*||*。它可用于一起运行不同的命令。OR运算符一个接一个地运行两个命令,但第二个命令仅在第一个命令以错误结束时执行。

使用我们的两个脚本,我们可以像这样运行它们:

$ ./script1.sh || ./script2.sh 
Hello World!!

只有当第一个脚本遇到错误时,第二个脚本才会执行。

我们要看的最后一个运算符是*;. 它还可以用于顺序运行两个脚本。与OR*运算符不同,当我们的第一个脚本正确结束时,第二个脚本仍会执行

在此示例中,我们将尝试使用无效命令在我们的终端中显示Hello World

$ ./script1.sh ; ./script2.sh 
./script1.sh: 1: ech: not found
Hello World 2!!

有更多的方法来对命令进行分组,例如使用花括号或圆括号

2.2. bgfg命令

同时运行两个脚本的一个方便的 Linux 命令是bg命令。使用bg命令,我们可以恢复和控制作业在终端中的运行方式。我们可以设置一个脚本在后台运行,同时在前台运行一个新的脚本。让我们来看看:

$ ./script1.sh
^Z
[1]  + 29680 suspended  ./script1.sh
$ bg
[1]  + 29680 continued  ./script1.sh
$ ./script2.sh
Hello World!!

我们对此处的脚本进行了一些修改,以帮助我们更好地理解bg 的工作原理。现在,script1.sh输出一个睡眠 30 秒的命令,  “sleep 30s”。而script2.sh仍然输出*“Hello World!!”*。

当我们运行script1.sh 时,我们通常会等待sleep命令结束,但我们可以暂停该任务并使其在后台运行,方法是使用Ctrl+z暂停它,然后按bg。现在我们有script1.sh在后台运行,还有运行任何其他脚本的空间,在这种情况下,它将是script2.sh来输出*“Hello World!!”*。

如果您决定要将在后台运行的脚本调到前台,您可以使用fg命令来实现:

$ ./script1.sh 
^Z
[1]  + 320642 suspended  ./script1.sh
$ ./script2.sh
Hello World 2!!
$ fg 
[1]  + 320642 continued  ./script1.sh

script1.sh已使用fg命令返回到前台。作业有不同的状态,可以通过命令发送到后台、恢复和终止

2.3. 使用脚本运行多个脚本

在 Bash 脚本中,我们可以有一个脚本执行两个或多个脚本。为此,将这些脚本添加到我们要运行的主脚本中。例如,我们让script3执行script1script2中的代码。script3.sh必须包含以下内容:

./script1.sh
./script2.sh

现在,当我们运行script3.sh时,我们有:

$ ./script3.sh
Hello World!!
Hello World!!