foo()
{
local arr=(-l largs\
-m margs\
-n nargs
)
echo "size of arr: ${#arr[@]}"
}
foo # prints 1
上記のコードは を出力1
しますが、どうやら のサイズは のarr
はずです6
。コードを次のように変更しました。
foo()
{
arr=(-l largs\
-m margs\
-n nargs
)
echo "size of arr: ${#arr[@]}"
}
foo # prints 6
後者のバージョンでは が削除local
され、正しい答えが出力されます。なぜ?ローカルは重要ですか?
PS: GNU bash、バージョン 3.00.15(1) リリース (x86_64-redhat-linux-gnu)。