免费注册 查看新帖 |

Chinaunix

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

一个奇怪的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-10 20:52 |只看该作者 |倒序浏览
只是想把一个动态的数组打印出来,换了两台机器都不行,可是书上就是这么说的啊。
a文件
aa 11
bb 11
cc 23
dd 43
ff 23
ff 44
脚本文件
#!/bin/sh
p=$(awk '{print $2}' a|sort -u)
echo $p
n=`awk '{print $2}' a|sort -u|wc -l`
echo "n:" $n
i=0
while [ $i -lt $n ]
  do
    echo ${p[$i]}    #为什么这一行出错?只是要打印每一个元素
    i=`expr $i + 1`
  done
用Cygwin以及一台linux计算机都试过了
Cygwin报错Syntax error: Bad substitution
linux计算机上,当i=0时就把所有的元素打印出来,后几次循环就打印空行。
这是怎么回事啊,想用循环,而不是像echo $p那样一次性打印。应该怎么打印每一个元素啊?

论坛徽章:
0
2 [报告]
发表于 2006-05-10 21:48 |只看该作者
echo ${p[$i]}    #为什么这一行出错?
上面什么时候定义数组了??

论坛徽章:
0
3 [报告]
发表于 2006-05-10 21:50 |只看该作者
p就是数组啊,执行以后的结果是
$ ./test
11 23 43 44
n: 4
./test: 9: Syntax error: Bad substitution

论坛徽章:
0
4 [报告]
发表于 2006-05-10 22:59 |只看该作者
问题是出在最开始赋值的时候,数组p的长度实际上只有1,那么11 23 43 44都是p[0]的内容。
那么要怎么样赋值才能使11 23 43 44分别为p[0],p[1],p[2],p[3],呢?请大家帮忙啊

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2006-05-10 23:16 |只看该作者
原帖由 kaiserlew 于 2006-5-10 22:59 发表
问题是出在最开始赋值的时候,数组p的长度实际上只有1,那么11 23 43 44都是p[0]的内容。
那么要怎么样赋值才能使11 23 43 44分别为p[0],p[1],p[2],p[3],呢?请大家帮忙啊

用数组就可以

  1. p=($(cut -f2 -d' ' <a|xargs))
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP