据我所知,有两种方法可以在 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 有一个开销。
那么更好的方法是什么?有什么优点/缺点?