Локальные переменные в bash: локальная или подоболочка

Насколько мне известно, есть два способа создать локальные переменные в функции 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 ). Но я мог представить, что создание подоболочки связано с накладными расходами.

Итак, какой подход лучше? Каковы плюсы и минусы?

9
задан Ignitor 7 January 2011 в 12:25
поделиться