免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Ghost_Vale
打印 上一主题 下一主题

如何将显示信息按行放入到数组里面? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-07-15 18:24 |只看该作者
接近目标了,正在努力
walkerxk@www:~/test$ traceroute 192.168.1.2 -n |sed 's/^/"/;s/$/"/' >b
这里时间太长,我按CTRL+C中断了,不影响使用。
walkerxk@www:~/test$ i=1;while read line; do eval \y$i=$line;i=$(($i+1)); done <  b
walkerxk@www:~/test$ echo $y1
traceroute to 202.101.173.45 (202.101.173.45), 30 hops max, 40 byte packets
walkerxk@www:~/test$ echo $y2
1 192.168.2.1 33.246 ms 33.314 ms 33.431 ms
walkerxk@www:~/test$ echo $y3
2 a b a b a b
walkerxk@www:~/test$ echo $y4
3 a b a b a b
walkerxk@www:~/test$

论坛徽章:
0
12 [报告]
发表于 2008-07-15 18:59 |只看该作者
高不定,两句可以,合并不到一起,烈火,waker,救命啊。。。
walkerxk@www:~/test$ i=1;while read line; do eval \y$i="$line";i=$(($i+1)); done <(traceroute 192.168.1.2 -n |sed "s/^/'/;s/$/'/")
bash: 在未预料的“<(traceroute 192.168.1.2 -n |sed "s/^/'/;s/$/'/")”附近出现语法错误
walkerxk@www:~/test$
还有,上面的a b a b a b是因为traceroute的结果里面有*,然后当前目录下只有a和b两个文件,如果改成echo "$y4"就好了。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
13 [报告]
发表于 2008-07-15 23:59 |只看该作者

  1. n=0
  2. while read line;do
  3.         array[$n]="$line"
  4.         ((n++))
  5. done < <(/patn/ur-cmd)
复制代码

[ 本帖最后由 寂寞烈火 于 2008-7-16 00:02 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2008-07-16 01:13 |只看该作者
原来是这样,少了一个<
i=1;while read line; do eval \y$i="$line";i=$(($i+1)); done < <(traceroute 192.168.1.2 -n |sed "s/^/'/;s/$/'/")
这样就行了。traceroute有点问题,我用seq测试通过。
y[$n]="$line"的话表示方法不一样了,一个是y1,y2你的是y[1],y[2],不过你的办法复制方便,不用用eval了,
看LZ要求了。
发现这个显示有点不对:
~> n=0
~> while read line;do
>         array[$n]="$line"
>         ((n++))
> done < <(seq 9)
~> echo array[0]
array[0]
~> echo $array[0]
1[0]
~> echo $array[1]
1[1]
~> echo $array[2]
1[2]
~> echo $array[3]
1[3]
~> echo $array[4]
1[4]
~> echo $array[5]
1[5]
~>

[ 本帖最后由 walkerxk 于 2008-7-16 01:28 编辑 ]

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
15 [报告]
发表于 2008-07-16 08:11 |只看该作者

回复 #14 walkerxk 的帖子

echo ${array[0]}

论坛徽章:
0
16 [报告]
发表于 2008-07-16 08:57 |只看该作者

回复 #15 waker 的帖子

多谢

论坛徽章:
0
17 [报告]
发表于 2008-07-16 09:25 |只看该作者

回复 #13 寂寞烈火 的帖子

还是列火的简单易懂,

论坛徽章:
0
18 [报告]
发表于 2008-07-16 09:48 |只看该作者
原帖由 寂寞烈火 于 2008-7-15 23:59 发表

n=0
while read line;do
        array[$n]="$line"
        ((n++))
done <  

真强大。学习了

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
19 [报告]
发表于 2008-07-16 10:20 |只看该作者

回复 #13 寂寞烈火 的帖子

向火哥学习

论坛徽章:
0
20 [报告]
发表于 2008-07-16 15:22 |只看该作者
原帖由 walkerxk 于 2008-7-15 18:24 发表
接近目标了,正在努力
walkerxk@www:~/test$ traceroute 192.168.1.2 -n |sed 's/^/"/;s/$/"/' >b
这里时间太长,我按CTRL+C中断了,不影响使用。
walkerxk@www:~/test$ i=1;while read line; do eval \y$i= ...

小弟愚昧没有用过sed 麻烦您讲解一下第一行和第二行的命令可以吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP