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 の 2 つの変数だけを渡しました。

$1 は 2 である main からの y になるため、関数 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 に答える