免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8789 | 回复: 11
打印 上一主题 下一主题

变量的值作为另一个变量的名字 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-03 14:31 |只看该作者 |倒序浏览
linux shell
如何把变量的值作为另一个变量的名字?
比如:
a=1
如何通过a来表达$1?
$($a)?试过不行

论坛徽章:
0
2 [报告]
发表于 2010-06-03 14:41 |只看该作者
本帖最后由 whoiswhoz 于 2010-06-03 16:01 编辑

刚才错了  好像要用eval的

论坛徽章:
0
3 [报告]
发表于 2010-06-03 14:59 |只看该作者
我想我没表达清楚。
test()
{
    i=1
    while [ i -le $# ];do
         echo "$[$i]"
   done
}

test a b c d

我想要的结果是打印
a
b
c
但事实上打印出来的是
1
2
3

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
4 [报告]
发表于 2010-06-03 15:17 |只看该作者
你这个脚本有问题吧?

while [ i -le $# ];do

i还是$i???

而且好像是死循环,i=1永远为真小于参数个数4。

论坛徽章:
0
5 [报告]
发表于 2010-06-03 16:04 |只看该作者
......
只是个示例。好吧,更正
test()
{
    i=1
    while [ $i -le $# ];do
         echo "$[$i]" ##目标输出是:a,b,c
         let i++
   done
}
test a b c d

论坛徽章:
0
6 [报告]
发表于 2010-06-03 16:07 |只看该作者
本帖最后由 whoiswhoz 于 2010-06-03 16:08 编辑

[root@localhost ~]# ./test.sh a b c
a
b
c
[root@localhost ~]# cat test.sh
#!/bin/bash  
i=1

while [ $i -le $# ];do
        eval j=\$$i
        echo $j
        (( i++ ))
done

这样算不算啊  有点弄糊涂了

论坛徽章:
0
7 [报告]
发表于 2010-06-03 16:21 |只看该作者
不错!谢谢!
eval j=\$$i
这句不明白

论坛徽章:
0
8 [报告]
发表于 2010-06-03 16:39 |只看该作者
[root@localhost ~]# cat test.sh
#!/bin/bash  
i=1
j=1
while [ $i -le $# ];do
        eval echo \$$i

        (( i++ ))


done


这个更像



http://bbs.chinaunix.net/viewthr ... xtra=page%3D2%26amp;filter%3Ddigest
这个吧

论坛徽章:
0
9 [报告]
发表于 2010-06-03 16:44 |只看该作者
a=b
b=3

#eval echo \${$a}
3

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
10 [报告]
发表于 2010-06-03 17:04 |只看该作者
这里的\是不是转义用的?
eval echo \${$a}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP