概述
为更好理解shell中局部变量和全局变量的区别,我们先要知道shell中三中执行方法的执行原理
1、shell脚本的执行方法的原理
1)bash/sh
2)提高文件的权限
3). / source
第一种和第二种执行方法的区别
第一种本质是bash解析器执行脚本,所以不需要执行权限
第二种本质是脚本需要自己执行,所以需要执行权限
第三种和前两种的区别
前两种方式都是在当前shell中打开一个子shell来执行脚本内容,当脚本内容结束,则子shell关闭,回到父shell中
第三种执行的是当前shell环境下的脚本,无需打开子shell环境
问:什么是shell子环境
2、shell环境
首先我们认识shell环境前,我们现进行一个小测试
我们在linux中创建一个变量a,并进行输出
有此可见此时a可以正常输出值
那么我们将echo $a写入脚本中
我们再通过sh命令运行此脚本
此时并不能将a的值正常输出
通过source命令执行,可以执行出结果
这是为什么?
结论
结论:我们在创建变量的时候,创建的变量属于局部变量,只能在当前的shell环境下输出(直接echo $a),我们前面谈到,脚本中的前两种命令的原理,是开启一个新的子shell,执行,之后关闭子shell,而我们定义的是局部变量,只能在当前的shell环境下执行,并不能在新开启的子shell下执行,所以通过这两种命令执行,没有得出结果
问:如果我想让他可以输出结果有什么方法
我们可以用 export a 命令通过将这个局部变量提升为全局变量
现在就可以正常输出了
3、附加内容,如何查看和创建子shell环境
我们可以通过ps -f 命令来查看当前的shell环境
通过bath进入子shell环境
我们可以做下对比,进入子shell进程后,会多出一个bash进程,此时说明,在当前的子shell进程
我们也可以进行测试,上文说的a变量已经提升到全局变量,而全局变量在所有的子shell进程都可生效
最后
以上就是凶狠时光为你收集整理的Shell脚本中局部变量和全局变量/Shell脚本执行命令的区别及原理的全部内容,希望文章能够帮你解决Shell脚本中局部变量和全局变量/Shell脚本执行命令的区别及原理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复