用变量的值作名字的问题

用变量的值作名字的问题

shell编程时,想把一个变量的值作为另一个变量的名字,该怎么办,比如 echo $1 而 length=1,想用length代替1
echo $$length 当然这样不可以,那么应该怎么做 谢谢      
复制内容到剪贴板
代码:
[color=blue]-(user@host:tty)-(tmp)-
[340 0] %[/color] unset var1 var2
[color=blue]-(user@host:tty)-(tmp)-
[340 0] %[/color] var1=var2
[color=blue]-(user@host:tty)-(tmp)-
[340 0] %[/color] eval "$var1='hello, world'"
[color=blue]-(user@host:tty)-(tmp)-
[340 0] %[/color] echo $var1
var2
[color=blue]-(user@host:tty)-(tmp)-
[340 0] %[/color] echo $var2
hello, world
[color=blue]-(user@host:tty)-(tmp)-
[340 0] %[/color]
      
谢谢 不过我想要的是:
取参数的个数:$#
(参数个数不确定)
输出最后一个参数的值:$$#
倒数第二个:$$#-1
.
.
.
这个样子
表达不清哈
新手 多包涵      
看来您喜欢“鱼“,不喜欢“渔“,一懒人也       
今天试了一下午。。。
晚上又弄。。。
还是不行      
哈哈
成功了
还是要谢谢啦
[QUOTE]与大家分享,很有用o

## eval用法三例 ##
## shell:/bin/sh ##
## yhc 2002.09.26 18:00 ##

#例一:
#寻找合符条件的变量名,然后将该变量的值赋予另一变量
v1=aaa
v2=bbb
c=1
if [ $c -eq 1 ]
then
vname=v$c #找到符合条件的变量名为v1
eval vvv="$"$vname ; echo vvv: $vvv #将变量v1的值赋予vvv,即,使vvv=aaa
eval vvv='$'$vname ; echo vvv: $vvv #将变量v1的值赋予vvv,即,使vvv=aaa
#eval vvv=$$vname ; echo vvv: $vvv #错误用法
fi


#例二:#以变量v1的值aaa作为变量名,将变量vaaa的值赋予这一新定义的变量aaa
v1=aaa ; vaaa="This is aaa"
#eval $v1=$vaaa ; echo aaa: $aaa #错误用法
#eval $v1="$vaaa" ; echo aaa: $aaa #错误用法
eval $v1='$vaaa' ; echo aaa: $aaa


#例三:
#以变量v1的值aaa作为变量名,并将变量名字串作为值赋予自身
v1=aaa ; vaaa="This is aaa"
eval $v1=$v1 ; echo aaa: $aaa #与例二的错误用法不同,这一用法是正确的
eval $v1="$v1" ; echo aaa: $aaa #与例二的错误用法不同,这一用法是正确的
eval $v1='$v1' ; echo aaa: $aaa

转