私の知る限り、bash 関数でローカル変数を作成するには 2 つの方法があります。サブシェルを作成するか、すべての変数をローカルとして宣言します。
例えば:
# using local
function foo
{
local count
for count in $(seq 10)
do
echo $count
done
}
また
# using subshell
function foo
{
(
for count in $(seq 10)
do
echo $count
done
)
}
明らかに、サブシェルを使用するバージョンは、すべての変数をローカルに宣言することを気にする必要がないため、作成が簡単です ( getoptsなどのツールによって作成/エクスポートされた (環境) 変数は言うまでもありません)。しかし、サブシェルの作成にはオーバーヘッドがあると想像できます。
では、より良いアプローチは何ですか?長所/短所は何ですか?