在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、在函数外不能访问一个局部变量。

本文通过两个示例展示了在Shell脚本中如何定义和使用局部变量与全局变量。通过对比,说明了局部变量和全局变量的区别,以及如何在函数内部修改全局变量而不影响其原始值。
1269

被折叠的 条评论
为什么被折叠?



