了解如何使用bash脚本正确运行子壳

如何指示子壳在后台并行运行

一个是输入命令的基本接口Linux系统。使用它,您可以直接输入命令或指定包含要执行的命令序列的文件(脚本)。贝壳是在层次结构中组织的,任何外壳都可以创建一个新的外壳。新外壳被认为是一个儿童过程 -子壳- 创建它的父壳。

默认情况下,子壳取决于其父,从某种意义上说,如果父过程终止,则子壳也将终止。任何输出都从子壳传递到父壳。

不同的Linux壳

如何创建子壳

在bash shell脚本中,使用括号符号创建子壳:

#!/bin/bash
#带无尽循环的子shell-example.sh
((
而[1]

回声“子壳运行……”
完毕

在示例中,while循环被封闭在括号中,这导致其在执行脚本文件的外壳的子壳中执行。

在后台运行子壳

除非您指定要在后台执行子壳,否则父壳会等待子壳完成,然后继续使用其余脚本。但是,要并行运行子壳,请在背景中运行它们,这是在子壳表达式下以ampersand arand符号完成的,如下所示:

#!/bin/bash
对于{1..254}中的IP;做
主机= 192.168.1。$ ip
(ping -c 1 $ host> /dev /null
如果[“ $?”= 0]
然后
Echo $主机
fi)&
完毕

并行运行多个子壳

如果您创建多个子壳为背景过程,您可以并行运行任务。通常,操作系统在每个过程和子过程中使用不同的处理器或核心,假设至少有很多处理器或核心,则使用过程。否则,将任务分配给同一处理器或内核。在这种情况下,处理器或核心连续在分配的任务之间切换,直到完成任务为止。

使用Wait语句告诉父程进程等待子过程完成,然后再进行其余的脚本:

子壳的用途

当需要在特定环境或目录中执行命令时,子壳很有用。如果每个命令都以不同的子壳执行,则没有风险将变量设置混合在一起。完成后,不需要恢复设置和当前目录,因为父进程的环境不受其任何子过程的影响。

子壳可与功能定义一起使用,可执行多次具有不同的参数。

此页面有用吗?