#!/bin/bash
A=B
echo"PID for 1.sh before exec/source/fork:$$"export A
echo"1.sh: \$A is $A"case$1inexec)
echo"using exec..."exec ./2.sh ;;
source)
echo"using source..."
. ./2.sh ;;
*)
echo"using fork by default..."
./2.sh ;;
esacecho"PID for 1.sh after exec/source/fork:$$"echo"1.sh: \$A is $A"
2.sh
#!/bin/bashecho"PID for 2.sh: $$"echo"2.sh get \$A=$A from 1.sh"
A=C
export A
sleep 1echo"2.sh: \$A is $A"
试验开始
./1.sh fork
PID for1.sh before exec/source/fork:259501.sh: $A is B
using fork by default...
PID for2.sh: 259512.sh get $A=B from 1.sh
2.sh: $A is C
PID for1.sh after exec/source/fork:259501.sh: $A is B
./1.sh source
PID for1.sh before exec/source/fork:259651.sh: $A is B
using source...
PID for2.sh: 259652.sh get $A=B from 1.sh
2.sh: $A is C
PID for1.sh after exec/source/fork:259651.sh: $A is C
./1.sh exec
PID for1.sh before exec/source/fork:259791.sh: $A is B
using exec...
PID for2.sh: 259792.sh get $A=B from 1.sh
2.sh: $A is C