LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 863|回复: 2

子函数的返回变量同子函数执行方式的问题

[复制链接]
发表于 2007-6-2 13:28:13 | 显示全部楼层 |阅读模式
我写了这样的一个代码
  1. i=0
  2. fun () {
  3.         i=`expr $i + 1`
  4. }
  5. fun [color=red]&[/color]
  6. sleep 2
  7. echo $i
复制代码
这段代码给出的结果是0,就是说子函数fun没有将$i+1的操作结果返回去。

如果我将fun后面的后台执行符删去,如下面的代码,最后的结果是1,就是说fun返回了$i+1的结果
  1. i=0
  2. fun () {
  3.       i=`expr $i + 1`
  4. }
  5. fun
  6. sleep 2
  7. echo $i
复制代码

有高手能解释一下吗?有没有什么办法让子函数即使是放入后台执行也能将结果返回?
发表于 2007-6-2 14:38:44 | 显示全部楼层
我也想知道啊。。。进程会在后台被挂起
回复 支持 反对

使用道具 举报

发表于 2007-6-2 14:56:57 | 显示全部楼层
fun &是fork了一个子进程,子进程的变量无法影响父进程。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表