Насколько я знаю, есть два способа создать локальные переменные в функции bash: создать подоболочку или объявить каждую переменную как локальную.
Например:
# using local
function foo
{
local count
for count in $(seq 10)
do
echo $count
done
}
or
# using subshell
function foo
{
(
for count in $(seq 10)
do
echo $count
done
)
}
Очевидно, что версию, использующую подоболочку, написать проще, потому что вам не нужно заботиться об объявлении всех переменных локальными (не говоря уже о переменных (среды), созданных/экспортированных такими инструментами, как getopts). Но я мог представить, что создание подоболочки связано с накладными расходами.
Так какой подход лучше? Каковы плюсы/минусы?
time
на 1000 тестов и выясните накладные расходы, я думаю, что они малы или отсутствуют. - person Anders   schedule 07.01.2011