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进程都可生效

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值