【发布时间】:2011-06-05 05:58:04
【问题描述】:
据我所知,在 bash 函数中创建局部变量有两种方法:创建子 shell 或将每个变量声明为局部变量。
例如:
# 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
)
}
显然,使用 subshell 的版本更易于编写,因为您不必关心将所有变量声明为本地变量(更不用说由 getopts 之类的工具创建/导出的(环境)变量)。但我可以想象创建一个子shell 有开销。
那么更好的方法是什么?有什么优点/缺点?
【问题讨论】:
-
“但是我可以想象创建一个子shell有一个开销。”,在1000个测试中运行
time命令并找出开销,我认为它很小甚至不存在。跨度>
标签: bash function variables local subshell