Shell脚本的执行方式:
注明:wd表明“脚本保存的目录” html
1.fork
语法:/wd/shell.sh
fork是最普通的, 就是直接在脚本里面用/wd/shell.sh来调用shell.sh这个脚本.运行的时候开一个子shell执行调用的脚本,子shell执行的时候, 父shell还在。子shell执行完毕后返回父shell。子shell从父shell继承环境变量.可是子shell中的环境变量不会带回父 shell shell
2.exec
语法: exec /wd/shell.sh
exec与fork不一样,不须要新开一个sub-shell来执行被调用的脚本. 被调用的脚本与父脚本在同一个shell内执行。可是使用exec调用一个新脚本之后, 父脚本中exec行以后的内容就不会再执行了。这是exec和source的区别。 函数
3.source
语法:source /wd/shell.sh
与fork的区别是不新开一个子shell来执行被调用的脚本,而是在同一个shell中执行。因此被调用的脚本中声明的变量和环境变量, 均可以在主脚本中获得和使用。 spa
4.()
语法:( 语句;语句;语句;…… )
圆括号中命令列表的命令将会运行在一个子shell中。 htm
好比:
$ (cd ..;ls -l)
cd ..命令改变的是子Shell的PWD,而不会影响到交互式Shell。
然而命令
$ cd ..;ls -l
则有不一样的效果,cd ..命令是直接在交互式Shell下执行的,改变交互式Shell的PWD,然
而这种方式至关于这样执行Shell脚本:
$ source ./script.sh
或者
$ . ./script.sh blog
source或者.命令是Shell的内建命令,这种方式也不会建立子Shell,而是直接在交互式Shell下逐行执行脚本中的命令。 继承
source命令、.命令
语法: . filename [arguments]
source filename [arguments]
做用:
当在命令 行中调用的时候, 这个命令将会执行一个脚本. 当在脚本中调用的时候, source file-name 将会加载file-name文件, 或者 . (点命令)一个文件将会在脚本中引入代码, 并将这些代码附加到脚本中(与C语言中的#include指令效果相同). 最终的结果就像是在使用"source"的行上插入了相应文件的内容.
在多个脚本须要引用相同的数据, 或者须要使用函数库的状况下, 这个命令很是有用. ip
5.{}
{语句;语句;……}不会启动子SHELL。 get