【发布时间】:2017-01-15 08:32:05
【问题描述】:
我在 bash 方面没有经验,我遇到过一个让我感到困惑的案例。这是这种情况的一个例子:
f1()
{
ar+=(1)
ar+=(3)
ar+=(2)
var="var value"
echo "0"
}
f2()
{
res=$(f1)
echo -------point 1--------
for i in ${ar[@]}; do
echo "El $i"
done
echo $var
echo -------point 2--------
f1>/dev/null
for i in ${ar[@]}; do
echo "El $i"
done
echo $var
}
f2
此脚本产生以下结果:
-------point 1--------
-------point 2--------
El 1
El 3
El 2
var value
如您所见,函数 f1 以两种不同的方式被调用,它们给出了截然不同的含义。在第一次调用中,在 f1 中声明的数组和变量显然被破坏了。 在第二种方式中,数组和变量被保存。
有人可以向我解释或给我相应手册的链接吗?
【问题讨论】:
标签: linux bash function variables visibility