linux中创建和删除变量,sh与变量的作用范围之间的关系
2016-11-25 22:53
465 查看
a=1为定义了一个变量.注意定义变量的时候不能有等号
unset a取消定义的变量a
如果我定义一个变量a=4。然后编写一个脚本t1. 里面的内容为echo 用于输出a。但是此时并不能输出a。因为a是一个外部的变量。他对于脚本里面是不可见的。
如果此时要在t1脚本执行之后输出a,就必须把a定义为export a=1。这时a对于t1是可见的。所以此时执行脚本t1.sh之后会有输出结果1
如果我在t1脚本里面又定义了一个变量d=5.然后在t1脚本里面调用t2脚本。t2脚本的内容是echo $d,即在t2里面输出t1定义的变量d。但此时是输不出去的。因为d是在t1脚本里面定义的,所以在t2里面是不可见的。所以如果要在t2脚本里面使用t1脚本定义的变量d,就需要把d定义为export类型的。
综上所述,如果要使一个变量在当前进程的子进程里面可见。就必须使用export对这个变量进行声明,使其对于当前进程的子进程也是可见的,
如果我要在t1脚本的外面输出,即在t1的父进程里面访问子进程里面定义的数据,t1定义的变量。此时除了把t1中的变量定义为export,还必须在外面执行source t1.sh。所以source的功能是把子进程里面的变量放到父进程里面。使得其对于父进程也是可见的
unset a取消定义的变量a
如果我定义一个变量a=4。然后编写一个脚本t1. 里面的内容为echo 用于输出a。但是此时并不能输出a。因为a是一个外部的变量。他对于脚本里面是不可见的。
如果此时要在t1脚本执行之后输出a,就必须把a定义为export a=1。这时a对于t1是可见的。所以此时执行脚本t1.sh之后会有输出结果1
如果我在t1脚本里面又定义了一个变量d=5.然后在t1脚本里面调用t2脚本。t2脚本的内容是echo $d,即在t2里面输出t1定义的变量d。但此时是输不出去的。因为d是在t1脚本里面定义的,所以在t2里面是不可见的。所以如果要在t2脚本里面使用t1脚本定义的变量d,就需要把d定义为export类型的。
综上所述,如果要使一个变量在当前进程的子进程里面可见。就必须使用export对这个变量进行声明,使其对于当前进程的子进程也是可见的,
如果我要在t1脚本的外面输出,即在t1的父进程里面访问子进程里面定义的数据,t1定义的变量。此时除了把t1中的变量定义为export,还必须在外面执行source t1.sh。所以source的功能是把子进程里面的变量放到父进程里面。使得其对于父进程也是可见的
相关文章推荐
- 作用域、链接属性、存储类型示例——文件之间变量、函数的关系
- Spring4之Bean之间的关系(继承、依赖、引用)Bean的作用范围
- 【Linux学习】pthread_create主线程与创建的新线程之间退出关系
- 【Linux学习】pthread_create主线程与创建的新线程之间退出关系
- J2EE系列之Spring4学习笔记(六)--IOC详解(bean之间的关系,bean的作用范围)
- 线程退出【Linux学习】pthread_create主线程与创建的新线程之间退出关系
- 【Linux学习】pthread_create主线程与创建的新线程之间退出关系
- Java的垃圾回收机制,GC,和变量的创建和删除的关系(即变量的作用域,for循环中的某个变量,出了for循环再引用就会报错了,因为该变量已经被从内存中删掉了)
- 关于C语言中 int型变量和unsigned int变量范围之间的关系
- linux环境下不同脚本文件配置的环境变量作用域范围的区别
- 【Linux学习】pthread_create主线程与创建的新线程之间退出关系
- 【Linux学习】pthread_create主线程与创建的新线程之间退出关系
- 峰Spring4学习(5)bean之间的关系和bean的作用范围
- 变量的作用范围,构造函数,引用和对象
- Java中成员变量和属性之间的关系
- 工程中的变量作用范围 static(待补充)
- linux 链接的使用 创建和删除符号连接
- 创建Win2003域和Win2008域之间的信任关系,Active Directory系列之十八
- 建立linux两用户之间的信任关系
- 域的信任关系之间的作用