日期:2014-05-16  浏览次数:20677 次

shell编程中export中的使用
自己写了两个小的shell脚本。
a.sh 文件如下:

#!/bin/bash
v=2
echo v=$v
./b.sh
echo v=$v

b.sh 文件如下:

#!/bin/bash
v=3
export v
v=4


为什么输出结果为:
v=2
v=2

------解决方案--------------------
脚本内的export作用于当前脚本,不会影响外部shell的。可以采用source的方式来运行
------解决方案--------------------
./b.sh是运行一个子进程
子进程的export不会影响父进程,但父进程的export会影响子进程
------解决方案--------------------
将 ./b.sh  改成 source ./b.sh 就会有你期望的结果。source 不会开启子进程,对当前进程生效。