0
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)。

4

0 に答える 0