【发布时间】:2012-01-08 16:04:41
【问题描述】:
这是一个程序的 2 个不同版本:
这个
程序:
#!/usr/bin/ksh
printmsg() {
i=1
print "hello function :)";
}
i=0;
echo I printed `printmsg`;
printmsg
echo $i
输出:
# ksh e
I printed hello function :)
hello function :)
1
和
程序:
#!/usr/bin/ksh
printmsg() {
i=1
print "hello function :)";
}
i=0;
echo I printed `printmsg`;
echo $i
输出:
# ksh e
I printed hello function :)
0
上面两个程序的唯一区别是printmsg在上面的程序中被调用了2次,而printmsg在下面的程序中被调用了一次。
我的疑惑出现了here: To quote
注意:函数的行为几乎就像外部脚本...除了 默认情况下,所有变量在同一个 ksh 之间共享 过程!如果您在函数内更改变量名.... 变量的值在你离开后仍然会改变 函数!!
但是我们可以清楚地在第二个程序的输出中看到i 的值保持不变。但是我们确信该函数被调用,因为 print 语句获取函数的输出并打印它。 那么为什么两者的输出不同?
【问题讨论】: