function f(){
local y=$1;
local z=$2;
echo $x $y $z;
}
function main(){
x=1;
y=2;
z=3;
f $y $z;
}
main $*
我的输出是1 2 3
为什么会这样?我只传递了两个变量y和z。
$ 1将是来自main的y,因此返回函数f本地y = $ 1将是y = 2。对于局部z = $ 2,同样的事情是z = 3.
所以我会假设一个错误,因为我试图回显$ x,这不是一个有效的变量,或者我应该得到2 3。
为什么它会回响1 2 3?
答案 0 :(得分:2)
$x
是一个全局变量。在函数中分配它的事实不会改变它。
当然,它在f()
或任何其他功能中都可见。