Linux-centos6.5-(第十四篇)shell模块化 || 子Shell和子进程

目录

 

shell模块化

子Shell和子进程


shell脚本部分参照:Linux Shell脚本学习指南http://c.biancheng.net/shell/

进行学习,过程中对脚本进行编写运行,部分脚本粘贴出执行结果。

shell模块化

谓模块化,就是把代码分散到多个文件或者文件夹,使用 source 命令来实现。

 

案例:

脚本1:

[root@com ee]# cat fun2.sh

#!/bin/bash

#dev by yjh

#函数的定义使用

 

#方法为求所有输入参数的和

function sumNum(){

 sum=0

echo $@

#$@ $* 区别 $@获取所有参数 $*获取所有参数形成一个变量,但当前方法测试两者无区别

 for num in $@

   do

     echo "遍历的数值为${num}"

      (( sum+=num ))

   done

  return ${sum}

}

脚本2:

cat main.sh

#!/bin/bash

#dev by yjh

#文件中调用文件的方法

 

source fun2.sh

sumNum 1 2 3 4

echo $?

执行:

[root@com ee]# ./main.sh

1 2 3 4

遍历的数值为1

遍历的数值为2

遍历的数值为3

遍历的数值为4

10

 

子Shell和子进程

子 Shell 的本质可以理解为 Shell 的子进程,子进程的概念是由父进程的概念引申而来的。

 

在 Linux 系统中,系统运行的应用程序几乎都是从 init(pid为 1 的进程)进程派生而来的,所有这些应用程序都可以视为 init 进程的子进程,而 init 则为它们的父进程。

 

使用pstree -p命令就可以看到 init 及系统中其他进程的进程树信息(包括 pid):

对于 Shell 的子进程来说,它是一个从父级 Shell 进程派生而来的新的 Shell 进程,我们将这种新的 Shell 进程称为这个父级 Shell 的子 Shell。

Shell 脚本是从上至下、从左至右依次执行每一行的命令及语句的,即执行完一个命令之后再执行下一个。如果在 Shell 脚本中遇到子脚本(即脚本嵌套),就会先执行子脚本的内容,完成后再返回父脚本继续执行父脚本内后续的命令及语句。

如果以新进程的形式运行 Shell 脚本,会向系统内核请求启动一个新的进程,以便在该进程中执行脚本的命令及子 Shell 脚本,基本流程如下图所示。
 

 

你可能感兴趣的:(linux-centos)