Насколько мне известно, есть два способа создать локальные переменные в функции bash: создать подоболочку или объявить каждую переменную как локальную.
Например:
# 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 ). Но я мог представить, что создание подоболочки связано с накладными расходами.
Итак, какой подход лучше? Каковы плюсы и минусы?