您的位置:首页 > 运维架构 > Shell

Shell脚本小记

2016-02-01 20:05 387 查看

一、Shell脚本中执行另外一个Shell脚本,会创建当前进程的子进程

首先需要明确的是,
./a.sh
/bin/bash ./a.sh
这两种都是执行Shell脚本的方式,在
/a.sh
方式中,根据脚本中
#!
语句能够得到如
/bin/bash ./a.sh
形式的最终执行命令。
现在,有“hello.sh”脚本,内容如下:

#!/bin/bash
echo "hello"
nohup ./world.sh
echo "hello world"


有“world.sh”脚本,内容如下:

#!/bin/bash

var=1
while [ "$var" -le 10000 ]
do
echo "world"
var=$(($var+1))
sleep 1
done


执行
/bin/bash hello.sh
命令,可得到如图1所示进程情况。

图1



从图可知,在执行“hello.sh”脚本时执行“world.sh”脚本的确会创建当前进程的子进程。另外从图中可知,执行
sleep
命令也会创建子进程。

二、Shell脚本中可导入另外一个文件中的脚本片段

在Shell脚本中可通过“. file”方式导入“file”文件中的脚本片段到本脚本作为本脚本的内容,这不是“Shell脚本中执行另外一个Shell脚本”,因而不会引发创建当前进程的子进程。
修改上面的“hello.sh”脚本,修改后内容如下:

#!/bin/bash
echo "hello"
. world.sh
echo "hello world"


执行
/bin/bash hello.sh
命令,可以发现如图2所示的进程情况,证明了上述结论。

图2

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: