LinuxSir.cn,穿越时空的Linuxsir!

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

$1在递归中会变化吗

[复制链接]
发表于 2009-6-8 22:01:04 | 显示全部楼层 |阅读模式
在脚本中有一个递归函数,需要传入一个参数,那么,在递归调用的时候,新传入的参数会不会覆盖原来参数的值呢?也就是说$1的值到底是不是固定的。。。

自己写了个测试的东西,得出的结果是$1不是一成不变的,而只是相对于某个函数来说的位置参数
  1. #!/bin/bash
  2. fun1()
  3. {
  4.         var1=$1
  5.         var2=$2
  6.         echo "var1 is $var1"
  7.         echo "var2 is $var2"
  8.         fun2 ni hao
  9. }
  10. fun2()
  11. {
  12.         var1=$1
  13.         var2=$2
  14.         echo "var1 is $var1"
  15.         echo "var2 is $var2"
  16. }
  17. fun1 $1 $2
复制代码

#./test hello world
hello
world
ni
hao
发表于 2009-6-8 22:39:03 | 显示全部楼层
其实,我觉得,递归调用是新开了子进程的。。
回复 支持 反对

使用道具 举报

发表于 2009-6-9 00:49:46 | 显示全部楼层
唯有$0不变了
回复 支持 反对

使用道具 举报

发表于 2009-6-10 13:06:09 | 显示全部楼层
Post by tzfox;1995609
  1. #!/bin/bash
  2. fun1()
  3. {
  4.         var1=$1
  5.         var2=$2
  6. [color="Blue"]        echo "var1 is $var1"
  7.         echo "var2 is $var2"[/color]
  8.         fun2 ni hao
  9. }
  10. fun2()
  11. {
  12.         var1=$1
  13.         var2=$2
  14. [color="Blue"]        echo "var1 is $var1"
  15.         echo "var2 is $var2"[/color]
  16. }
  17. fun1 $1 $2
复制代码

#./test hello world
[color="Red"]hello
world
ni
hao

代码和程序运行结果不一致,谢谢。
回复 支持 反对

使用道具 举报

发表于 2009-6-10 14:03:34 | 显示全部楼层
结果是正确的.
回复 支持 反对

使用道具 举报

发表于 2009-7-2 14:23:26 | 显示全部楼层
$1就是调用当前函数的第一个参数吧,按这个理解好像是不会有问题的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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