我是靠谱客的博主 凶狠时光,最近开发中收集的这篇文章主要介绍Shell脚本中局部变量和全局变量/Shell脚本执行命令的区别及原理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

为更好理解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脚本执行命令的区别及原理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部