免费注册 查看新帖 |

Chinaunix

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

使用${}为什么不能替换出变量来? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-09 02:51 |只看该作者 |倒序浏览
如下面的脚本

#/usr/bin/ksh!
##
#
#--------------------------------------------------------
A1B='hello world-1 '
A2B='hello world-2'
set -A AB A1B A2B
for i in 1 2
do
echo "${${AB[`expr $i-1`]}}"
done


想在使用ECHO时候,能显示出hello world-1 or hello world-2 来,但是总是出错:
"${${AB[`expr $i-1`]}}": bad substitution

高手帮忙,看错在哪里?

俺使用系统:sun 5.8

论坛徽章:
0
2 [报告]
发表于 2004-07-09 10:20 |只看该作者

使用${}为什么不能替换出变量来?

expr $i - 1
注意空格

论坛徽章:
0
3 [报告]
发表于 2004-07-09 10:41 |只看该作者

使用${}为什么不能替换出变量来?

thanks !
但是还是不行啊,我以为行了呢.

还是出现那样的错误提示
是不是不能这么用啊?
各位XDJM继续帮忙啊....

论坛徽章:
0
4 [报告]
发表于 2004-07-09 23:25 |只看该作者

使用${}为什么不能替换出变量来?

各位兄弟姐妹,帮忙啊
出个注意,
看看俺错在哪里了?

论坛徽章:
0
5 [报告]
发表于 2004-07-10 00:11 |只看该作者

使用${}为什么不能替换出变量来?

按照我对你脚本的理解,似乎应该这样:

  1. #!/bin/ksh
  2. IFS='
  3. '
  4. A1B='hello world-1'
  5. A2B='hello world-2'
  6. set -A AB $(echo $A1B) $(echo $A2B)
  7. for i in 1 2 ;do
  8.         echo ${AB[$((i-1))]}
  9. done
复制代码

test:
$file
hello world-1
hello world-2
ps:你的问题,错的地方较.....

论坛徽章:
0
6 [报告]
发表于 2004-07-10 01:49 |只看该作者

使用${}为什么不能替换出变量来?

bjgirl,谢谢你的帮助,你说的那样修改,的确是我想要的,但是在实际使用中.
我的那个脚本是在A1B中含有"- ",比如下面:

#!/bin/ksh
IFS='
'
A1B='-a b -c d -e f'
A2B='hello world-2'
set -A AB $(echo $A1B) $(echo $A2B)
for i in 1 2 ;do
        echo ${AB[$((i-1))]}
done

这样一来,在用你的说那个脚本时候,就出错.

-a b -c d -e f: bad option(s)

请BJGIRL再来指点下.

PS: 俺是刚学习写,所以,错的地方较....(挖估计是多吧) 是难免的..

论坛徽章:
0
7 [报告]
发表于 2004-07-10 02:14 |只看该作者

使用${}为什么不能替换出变量来?

  1. #!/bin/ksh
  2. A1B='-a b -c d -e f'
  3. A2B='hello world-2'
  4. set -A AB " $(echo $A1B)" " $(echo $A2B)" #注意空格
  5. for i in 1 2 ;do
  6.         echo A${i}B: ${AB[$((i-1))]}
  7. done
复制代码

test:
A1B: -a b -c d -e f
A2B: hello world-2

论坛徽章:
0
8 [报告]
发表于 2004-07-10 02:30 |只看该作者

使用${}为什么不能替换出变量来?

明白了,那看来是没有办法处理了.

我就不用这个方法了,我用CASE .

我最初的意思,是想把一个命令的参数(包含 - )全部村到一个变量里,然后在调用命令的时候,把参数从变量给出就可以了,看来这样不行.
比如:
Param1='-a b -c d -e f'
Param2='-g h -i g -k l'
调用COMMAND.
for i in 1 2
do
cmd $Param
done

这种方法既然不行,那就算了
谢谢热心的bjgirl, 继续向你学习

论坛徽章:
0
9 [报告]
发表于 2004-07-10 02:38 |只看该作者

使用${}为什么不能替换出变量来?


  1. var1='-a b -c d -e f';var2='-g h -i g -k l'
  2. for i in $var1 $var2;do
  3.     cmd $i
  4. done
复制代码

何不这样呢
ps:未测试

论坛徽章:
0
10 [报告]
发表于 2004-07-10 02:51 |只看该作者

使用${}为什么不能替换出变量来?

哇,对啊,我怎么没有想到呢?
我来测试下.
解决的方法很多种,
我只是想找个简单明了的.

PS:你怎么还不睡觉啊?这么拼命?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP