Chinaunix

标题: 能否通过函数实现对外部变量实现对Count的++ [打印本页]

作者: softcar    时间: 2006-08-24 11:57
标题: 能否通过函数实现对外部变量实现对Count的++
-----------------------
function.sh

func()
{
...
}

call.sh

. ./function.sh

Count="0"

func $Count
echo $Count
func $Count
echo $Count

------------------------

现在有这样结构的脚本.
能否通过函数实现对外部变量实现对Count的++?
也就是说func每执行一次Count就+1。

期待call.sh的输出结果是
-------------------------
1
2
-------------------------
作者: 寂寞烈火    时间: 2006-08-24 12:07
example:

  1. #!/bin/bash
  2. trap 'echo Number of function has executed:$n ;exit' 2
  3. func(){
  4. read
  5. }
  6. n=0
  7. while :;do
  8.         func
  9.         ((n+=1))
  10. done
复制代码

作者: forestlin    时间: 2006-08-24 15:02
烈火老兄的代码我没看懂,在func内没对 $COUNT 操作
echo 的时候会变?
作者: nhjidle    时间: 2006-08-24 15:22
可以的,不过在call.sh中不能通过./function.sh来执行function.sh,而应该通过 source function.sh 或者 . function.sh来把function.sh包含进来
作者: forestlin    时间: 2006-08-24 16:03
楼上的意思是func()里面度进来的是$COUNT的地址?
我怎么没看出来,请详细解释一下,如何修改 $COUNT的,谢谢了
作者: stephen412    时间: 2006-08-24 21:23
func1()
{
   for((i=1;i<10;i++))
      do
           XXXXXXXXX
      done
}
作者: forestlin    时间: 2006-08-25 10:01
原帖由 stephen412 于 2006-8-24 21:23 发表
func1()
{
   for((i=1;i<10;i++))
      do
           XXXXXXXXX
      done
}


这位老兄不要胡闹
作者: nhjidle    时间: 2006-08-25 10:25
function.sh

func()
{
  count=`expr $count + 1`
}

call.sh

count=0

. function.sh

func $count
echo $count
作者: forestlin    时间: 2006-08-25 10:36
原帖由 nhjidle 于 2006-8-25 10:25 发表
function.sh

func()
{
  count=`expr $count + 1`
}

call.sh

count=0

. function.sh

func $count
echo $count


你忘记了,是外部变量,你不可能知道它的名字,所以你不能在func里面用 $COUNT
应用中,可能是 $COUNT1, $COUNT2,$DISCOUTNT,
你不能总去改脚本




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2