shell函数的局部变量,全局变量。

在shell脚本中定义函数时,曾被局部变量,全局变量搞的头昏脑胀的。于是就写了两个脚本尝试了一下。首先看第一个例子

#!/bin/bash

function test() {
    echo "d_o_f:" $d_o_f
    d_i_f="defined in function"
    d_o_f="modified in function"
    echo "d_i_f:" $d_i_f
    echo "d_o_f:" $d_o_f
}

echo "---out fucntion---"
d_o_f="defined out function"
echo "d_o_f:" $d_o_f
echo "---in function---"
test
echo "---out function---"
echo "d_i_f:" $d_i_f
echo "d_o_f:" $d_o_f

 输出结果为:

---out fucntion---
d_o_f: defined out function
---in function---
d_o_f: defined out function
d_i_f: defined in function
d_o_f: modified in function
---out function---
d_i_f: defined in function
d_o_f: modified in function

 由上面的输出可以看出,

1、函数内是可以访问全局变量,并且对全局变量的修改会真正改变全局变量的值。

2、函数内定义的变量也是全局变量,也就是说函数外可以访问。

 

接着我们修改一下代码:

#!/bin/bash

function test() {
    local d_o_f
    local d_i_f
    echo "d_o_f:" $d_o_f
    d_i_f="defined in function"
    d_o_f="modified in function"
    echo "d_i_f:" $d_i_f
    echo "d_o_f:" $d_o_f
}

echo "---out fucntion---"
d_o_f="defined out function"
echo "d_o_f:" $d_o_f
echo "---in function---"
test
echo "---out function---"
echo "d_i_f:" $d_i_f
echo "d_o_f:" $d_o_f

 其输出结果为:

---out fucntion---
d_o_f: defined out function
---in function---
d_o_f:
d_i_f: defined in function
d_o_f: modified in function
---out function---
d_i_f:
d_o_f: defined out function
 

 

 从结果中可以看出关键词local起作用了。

1、对一个与全局变量同名的局部变量修改不会影响全局变量的值。

2、在函数外不能访问一个局部变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值