BASH命令和SHELL脚本总结(16)父脚本中export的变量在子脚本中的可见性测试
2013-04-15 13:21
686 查看
父脚本中中export的变量在子脚本中是否有效?
子脚本中中export的变量在父脚本中是否有效?
现在有两个脚本。父脚本1.sh和子脚本2.sh
父脚本1.sh中有变量ERRORCODE=100,
父脚本1.sh中调用了2.sh。
子脚本2.sh中echo $ERRORCODE,
此时运行1.sh 会发现输出为空值。因为父脚本1.sh中的变量ERRORCODE对子脚本2.sh是不可见的。
为了解决这个问题,只需要在父脚本中将ERRORCODE=100前面加上export,即写为 export ERRORCODE=100.
现在,测试两点:
(1)如果子脚本2.sh还有子脚本3.sh,那么在父脚本中export的变量ERRORCODE=100,是否对孙脚本3.sh依然可见。
(2)如果定义变量在子脚本中,此变量是否对父脚本课件?
[测试1] 父脚本中export的变量是否对子脚本、孙脚本可见
[结论] 父脚本中export的变量对它的子脚本和它的孙脚本依然可见。
测试2 子脚本的变量是否不对父脚本可见
执行1.sh后的显示情况:
子脚本中中export的变量在父脚本中是否有效?
现在有两个脚本。父脚本1.sh和子脚本2.sh
父脚本1.sh中有变量ERRORCODE=100,
父脚本1.sh中调用了2.sh。
子脚本2.sh中echo $ERRORCODE,
此时运行1.sh 会发现输出为空值。因为父脚本1.sh中的变量ERRORCODE对子脚本2.sh是不可见的。
为了解决这个问题,只需要在父脚本中将ERRORCODE=100前面加上export,即写为 export ERRORCODE=100.
现在,测试两点:
(1)如果子脚本2.sh还有子脚本3.sh,那么在父脚本中export的变量ERRORCODE=100,是否对孙脚本3.sh依然可见。
(2)如果定义变量在子脚本中,此变量是否对父脚本课件?
[测试1] 父脚本中export的变量是否对子脚本、孙脚本可见
[user1~]$ cat 1.sh export ERRORCODE=100 echo "=======" sh 2.sh echo "=======" sh 3.sh
[user1~]$ cat 2.sh echo "2:"$ERRORCODE sh 3.sh
[user1~]$ cat 3.sh echo "3:"$ERRORCODE执行 sh 1.sh,显示情况如下:
======= 2:100 3:100 ======= 3:100
[结论] 父脚本中export的变量对它的子脚本和它的孙脚本依然可见。
测试2 子脚本的变量是否不对父脚本可见
[user1~]$ cat 3.sh echo "3:"$ERRORCODE
ERRORCODE=1
echo "4:$ERRORCODE"
[user1~]$ cat 2.sh echo "2:"$ERRORCODE sh 3.sh
[user1~]$ cat 1.sh export ERRORCODE=100 echo "=======" sh 2.sh echo "=======" sh 3.sh
echo "======="
echo "5:$ERRORCODE"
执行1.sh后的显示情况:
[user1~]$ sh 1.sh ======= 2:100 3:100 4:1 ======= 3:100 4:1 =======[结论] 子脚本的变量定义不对父脚本可见,即使子脚本修改了父脚本中export出的变量,也不对父脚本可见。
相关文章推荐
- BASH命令和SHELL脚本总结(4)AWK篇
- BASH命令和SHELL脚本总结(5)赋值篇
- BASH命令和SHELL脚本总结(15)find和xargs和exec和rsync
- BASH命令和SHELL脚本总结(6)括号篇
- BASH命令和SHELL脚本总结(10)脚本互相调用篇
- BASH命令和SHELL脚本总结(19)递归地拷贝目录结构
- BASH命令和SHELL脚本总结(7)判断篇
- BASH命令和SHELL脚本总结(8)循环篇
- BASH命令和SHELL脚本总结(18)使用ACK在指定类型的文件中进行查找
- BASH命令和SHELL脚本总结(9)其它篇
- BASH命令和SHELL脚本总结(2)常识篇
- BASH命令和SHELL脚本总结(12)如何对字段进行操作
- BASH命令和SHELL脚本总结(3)命令篇
- BASH命令和SHELL脚本总结(11)比较两个文件创建时间的先后
- BASH命令和SHELL脚本总结(17)在BASH中计算两天的间隔天数
- BASH命令和SHELL脚本总结(13)BASH中的快捷键和简写
- BASH命令和SHELL脚本总结(14)cat和grep和sort
- BASH命令和SHELL脚本总结(1)入门篇
- Bash shell脚本打印出正在执行的命令
- linux的export命令和profile,.bashrc,bash.profile各种环境变量文件