免费注册 查看新帖 |

Chinaunix

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

求救:什么格式才能让SHELL正确的替换这样两个变量?  关闭 [复制链接]

鸟人 该用户已被删除
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2002-03-22 00:47 |只看该作者 |倒序浏览
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
2 [报告]
发表于 2002-03-22 08:43 |只看该作者

求救:什么格式才能让SHELL正确的替换这样两个变量?

可以试试使用数组,用变量替代echo ${x[$i]},不知是否可用

论坛徽章:
0
3 [报告]
发表于 2002-03-22 09:37 |只看该作者

求救:什么格式才能让SHELL正确的替换这样两个变量?

这可是shell,来不了数组的。这个问题,我在以前的cshell擂台一帖的答复中已有回答。很久前,这个问题的也曾困扰过我,后来在自己不断的尝试下终于攻破了。请看我的引文:
“这个问题的处理实际是非常有用的,很多人用shell解决复杂问题的时候,都会禁不住要实现这个功能,以上的解答都回避了问题的关键困难,其实无需回避,这个问题是有解的!而且正是你想要的那个解! ”
请看在csh中,应是这样:
set name1="xyz"
set name2="abc"
set n=1
set name3=`eval echo \$name$n`
此时echo $name3就会看到xyz了。
若是在sh中,会有一点小差别:
name1=xyz
name2=abc
n=1
name3=`eval echo \\$name$n`
差别就在于多了一个反斜杠
反斜杠在这里起了关键作用,一般来讲,反斜杠表示其后紧跟的字符不需特殊解释为原字符,而eval所起的作用是二次解释。利用这一特点,eval echo \$name$n第一次被csh解释为echo $name1,第二次直接执行这句话,自然就刚好得到了$name1的值,sh在这里的执行过程是一样的,可能解释时略有不同,多一个斜杠只是我的经验。

论坛徽章:
0
4 [报告]
发表于 2002-03-22 10:38 |只看该作者

求救:什么格式才能让SHELL正确的替换这样两个变量?

[这个贴子最后由valentine在 2002/03/22 10:39am 编辑]

In korn shell(and korn shell only)
you can use arrays ,just like C
#! /bin/ksh

i=1;
x[1]=2;
echo ${x[$i]}

鸟人 该用户已被删除
5 [报告]
发表于 2002-03-22 11:07 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2002-03-22 11:21 |只看该作者

求救:什么格式才能让SHELL正确的替换这样两个变量?

shell有数组.

论坛徽章:
0
7 [报告]
发表于 2002-03-22 11:42 |只看该作者

求救:什么格式才能让SHELL正确的替换这样两个变量?

Bornue shell本身并不支持任何数组啊,只能自己模拟产生数组的效果,但并不好用。也许你说的是ksh什么的。

论坛徽章:
0
8 [报告]
发表于 2002-03-22 12:39 |只看该作者

求救:什么格式才能让SHELL正确的替换这样两个变量?

新版的有数组的呀

论坛徽章:
0
9 [报告]
发表于 2002-03-22 12:55 |只看该作者

求救:什么格式才能让SHELL正确的替换这样两个变量?

那个系统下的呀。

论坛徽章:
0
10 [报告]
发表于 2002-03-28 10:23 |只看该作者

求救:什么格式才能让SHELL正确的替换这样两个变量?

分两步可以实现替换
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP