将变量传递给bash中的函数(奇怪的输出?)

时间:2013-02-20 20:33:28

标签: linux bash terminal

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?

1 个答案:

答案 0 :(得分:2)

$x是一个全局变量。在函数中分配它的事实不会改变它。

当然,它在f()或任何其他功能中都可见。