0
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,它是 2,所以返回函数 f local y=$1 将是 y=2。本地 z=$2 也是一样的,那就是 z=3。

所以我会假设一个错误,因为我试图回显 $x 这不是一个有效的变量,或者我应该得到 2 3。

为什么它会回显 1 2 3?

4

1 回答 1

2

$x是一个全局变量。它在函数中分配的事实并没有改变这一点。

所以当然它在f()或任何其他功能中都是可见的。

于 2013-02-20T21:11:31.607 回答