function afunc
{
echo in fnction: $0 $1 $2
var1="in function"
echo var1: $var1
}
var1="outside function"
echo var1: $var1
echo $0: $1 $2
afunc funcarg1 funcarg2
echo var1: $var1
echo $0: $1 $2
OUTPUT:
./ascript: arg1 arg2
in fnction: ./ascript funcarg1 funcarg2
var1: in function
var1: in function
./ascript: arg1 arg2
说明var1在afunc内部被改变了。shell的局部变量跟c语言有些差别,这里默认所有外部定义的变量,在函数内部可以访问并且可以改变。即外部定义的变量默认为全局变量。
若想在afunc内部定义一个局部变量,则需要显式的加上local var1.
待续