作者:zhanhailiang 日期:2012-12-15
首先需要知道,在函数体中定义的变量默认是全司变量。如下示例,函数insert()中定义的临时变量a,b在函数外是可见的。
bill@net:~/code$ cat func.sh #!/bin/sh awk ' function insert(str, pos, inc) { b = substr(str, 1, pos); a = substr(str, pos+1); return b inc a; } { print insert($1, 4, "XXXX"); print b; print a; }' $* bill@net:~/code$ echo baidu.com|./func.sh baidXXXXu.com baid u.com
欲使局部变量不可见,可以通过在参数列表中定义这些变量来声明变量为函数的局部变量。局部的临时变量在参数列表的末尾。如下代码修改:
bill@net:~/code$ cat func.sh #!/bin/sh awk ' function insert(str, pos, inc, b, a) { b = substr(str, 1, pos); a = substr(str, pos+1); return b inc a; } { print insert($1, 4, "XXXX"); print b; print a; }' $* bill@net:~/code$ echo baidu.com|./func.sh baidXXXXu.com
本文通过一个具体的Shell脚本示例介绍了如何在函数中使用局部变量,并展示了局部变量与全局变量的区别。通过修改函数定义的方式,可以有效避免变量污染,确保函数内部状态的独立性。
2562

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



