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 と反響するのはなぜですか?