LinuxSir.cn,穿越时空的Linuxsir!

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

请问 Shell 函数能否实现传引用调用?

[复制链接]
发表于 2005-5-3 13:17:34 | 显示全部楼层 |阅读模式
比如说,一个函数是这样的:
  1. f()
  2. {
  3.     set $1 abc
  4. }
复制代码

我发现无法用 f V 的方式来改变 V 的值。请问 shell 函数能够实现传引用调用吗?
发表于 2005-5-3 14:33:45 | 显示全部楼层
Post by herberteuler
比如说,一个函数是这样的:
  1. f()
  2. {
  3.     set $1 abc
  4. }
复制代码

我发现无法用 f V 的方式来改变 V 的值。请问 shell 函数能够实现传引用调用吗?


像上面的函数,你要达到什么目的呢?
改变V的值?
f V  -----------------------这里的V只是一个字符串,非变量,其值改变从何谈起?
传递参数V给函数f之后,有这样的语句:
set V abc
意思是:$1=V, $2=abc看下面的例子:
[PHP] $ f() { echo $1;set $1 abc; echo $1; echo $2;}
$ f v
v
v
abc
$ f() { echo $1;set abc $1; echo $1; echo $2;}     #把"set $1 abc"改成了"set abc $1"
$f v
v
abc
v
$[/PHP]
如果你的想法是v是一个变量名,你要用一个函数更改它的值(即所谓的引用调用,那v你可是把它当成一个指针了?我不太赞成在SHELL里用“引用调用”这个术语):
[PHP]$v=123
$echo $v
123
$f() { eval "$1"=abc; echo $1;}
$echo $v
123
$f v
v
$echo $v
abc
$[/PHP]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-3 15:16:53 | 显示全部楼层
就是后者,谢谢您
回复 支持 反对

使用道具 举报

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

本版积分规则

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