欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入
* exec (exec /directory/script.sh)
exec与fork不同,不需要新开一个sub-shell来执行被调用的脚本。 被调用的脚本与父脚本在同一个shell内执行。但是使用exec调用一个新脚本以后, 父脚本中exec行之后的内容就不会再执行了。这是exec和source的区别
1.sh
代码:
#!/bin/bash
A=B
echo “PID for 1.sh before exec/source/fork: $$”
export A
echo “1.sh: \$A is $A”
case $1 in
exec)
echo “using exec…”
exec ./2.sh ;;
source)
echo “using source…”
. ./2.sh ;;
*)
echo “using fork by default…”
./2.sh ;;
esac
echo “PID for 1.sh after exec/source/fork: $$”
echo “1.sh: \$A is $A”
2.sh
代码:
#!/bin/bash
echo “PID for 2.sh: $$”
echo “2.sh get \$A=$A from 1.sh”
A=C
export A
echo “2.sh: \$A is $A”
然後,分别跑如下参数来观察结果:
$ ./1.sh fork
$ ./1.sh source
$ ./1.sh exec
[1][2]
效果只能是既费时又没有胜利,再聪慧的人也没法成学。