Command
Explanation fork
新开⼀个⼦ Shell 执⾏,⼦ Shell 可以从⽗ Shell 继承环境变量,但是⼦ Shell 中的环境变量不会带回给⽗ Shell 。exec
在同⼀个 Shell 内执⾏,但是⽗脚本中 exec  ⾏之后的内容就不会再执⾏了source
在同⼀个 Shell 中执⾏,在被调⽤的脚本中声明的变量和环境变量, 都可以在主脚本中进⾏获取和使⽤,相当于合并两个脚本在执⾏。 Shell 脚本中调⽤另⼀个Shell 脚本的三种⽅式
主要以下有⼏种⽅式:
第⼀种:fork 特点:会⽣成⼦PID ⽽且可重复被调⽤。
  ♦fork  是最普通的, 就是直接在脚本⾥⾯⽤ path/to/foo.sh  来调⽤
  ♦foo.sh 这个脚本,⽐如如果是 foo.sh 在当前⽬录下,就是 ./foo.sh 。运⾏的时候 terminal 会新开⼀个⼦ Shell 执⾏脚本 foo.sh ,⼦Shell 执⾏的时候, ⽗ Shell 还在。⼦ Shell 执⾏完毕后返回⽗ Shell 。 ⼦ Shell 从⽗ Shell 继承环境变量,但是⼦ Shell 中的环境变量不会带回⽗ Shell 。
1.进⼊ 编辑:
[root@localhost ~]# vim liqiang-2.sh
2.编辑内容调⽤写法:echo 在这⾥调⽤
./liqiang.sh
3.输出结果
[root@localhost ~]# ./liqiang-2.sh
在这⾥调⽤
hollo
hollo
第⼆种:exec 特点:exec 调⽤⼀次之后的所有代码都不执⾏
shell脚本返回执行结果  ♦exec  与 fork  不同,不需要新开⼀个⼦ Shell 来执⾏被调⽤的脚本. 被调⽤的脚本与⽗脚本在同⼀个
Shell 内执⾏。但是使⽤ exec  调⽤⼀个新脚本以后, ⽗脚本中 exec  ⾏之后的内容就不会再执⾏了。这是 exec  和 source  的区别.
1.编辑内容调⽤写法:
echo 在这⾥调⽤
./liqiang.sh echo 这⾥是exec 函数调⽤
exec  ./liqiang-3.sh
echo 这⾥是source
source liqiang-4.sh
echo 在这⾥调⽤
./liqiang.sh
echo 这⾥是exec 函数调⽤
exce liqiang-3.sh
echo 这⾥是source
source liqiang-4.sh
echo 在这⾥调⽤
./liqiang.sh
echo 这⾥是exec 函数调⽤
exce liqiang-3.sh
echo 这⾥是source
source liqiang-4.sh
2.输出结果:特点在于执⾏了第⼀个exec 之后下⾯的就再也不执⾏了。
[root@localhost ~]# ./liqiang-2.sh
在这⾥调⽤
hollo
hollo
这⾥是exec 函数调⽤
看看这⾥调⽤⼏次
调⽤⼀次就对了
第三种:sourcesource特点不会⽣成⼦PID也就是⼦进程,他就⾏把被⽤的脚本拷贝到当前shell脚本中执⾏,可以重复被调⽤。
  ♦与fork的区别是不新开⼀个⼦ Shell 来执⾏被调⽤的脚本,⽽是在同⼀个 Shell 中执⾏. 所以被调⽤的脚本中声明的变量和环境变量,都可以在主脚本中进⾏获取和使⽤。
1.编辑内容调⽤写法:
echo 在这⾥调⽤
./liqiang.sh
echo 这⾥是exec函数调⽤这次被注释掉了
#exec ./liqiang-3.sh
echo 这⾥是source
source liqiang-4.sh
echo 在这⾥调⽤
./liqiang.sh
echo 这⾥是exec函数调⽤被注释掉了
#exce liqiang-3.sh
echo 这⾥是source
source liqiang-4.sh
echo 在这⾥调⽤
.
/liqiang.sh
echo 这⾥是exec函数调⽤
exec liqiang-3.sh
echo 这⾥是source
source liqiang-4.sh
♦2.执⾏结果:
[root@localhost ~]# ./liqiang-2.sh
在这⾥调⽤
hollo
hollo
这⾥是exec函数调⽤这次被注释掉了
这⾥是source
看看这⾥调⽤⼏次
没有限制就对了
在这⾥调⽤
hollo
hollo
这⾥是exec函数调⽤被注释掉了
这⾥是source
看看这⾥调⽤⼏次
没有限制就对了
在这⾥调⽤
hollo
hollo
这⾥是exec函数调⽤#之后的没被调⽤了
注意:
  ♦source⽅式的结果是两者在同⼀进程⾥运⾏。该⽅式相当于把两个脚本先合并再运⾏。
  ♦给多个脚本赋权限
chmod a+x liqiang-2.sh liqiang-3.sh liqiang-4.sh

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。