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?