据我所知,有两种方法可以在bash函数中创建局部变量:创建一个子shell或将每个变量声明为本地变量。bash中的局部变量:local vs subshell
例如:
# 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
)
}
Obvisously使用子shell是简单的写,因为你不必在意声明局部变量的所有版本(更不用提(环境)由诸如getopts之类的工具创建/导出的变量)。但我可以想象创建一个子shell有一个开销。
那么更好的方法是什么?有什么优点/缺点?
,超过1000次测试运行`time`命令,查看在开销之外,我认为这是不存在的。 – Anders 2011-01-07 13:05:39