请教,在shell中,如何将log打印出来的几行,赋值给数组

sh/bash/dash/ksh/zsh等Shell脚本
回复
巴洛特神
帖子: 9
注册时间: 2013-02-07 11:08
系统: win7
送出感谢: 0
接收感谢: 0

请教,在shell中,如何将log打印出来的几行,赋值给数组

#1

帖子 巴洛特神 » 2013-02-07 15:32

举个例子。我运行出来的log如下:
02-07 15:23:49: android.hardware.cts.CameraGLTest#testCameraToSurfaceTextureMetadata PASS
02-07 15:23:56: android.hardware.cts.CameraGLTest#testSetPreviewTextureBothCallbacks PASS
02-07 15:24:04: android.hardware.cts.CameraGLTest#testSetPreviewTexturePreviewCallback PASS
02-07 15:24:12: android.hardware.cts.CameraGLTest#testSetPreviewTextureTextureCallback PASS

我定义了一个数组,Fail[$Pass_Num], $Pass_Num=logcat | grep PASS, 怎样把这四行赋给数组Fail[4]。。。。

PS:还想多问句,怎么“android.hardware.cts.CameraGLTest” 和 “testCameraToSurfaceTextureMetadata”,分离出来。。。知道用grep,但不知道后面怎么用了。
头像
枫叶饭团
论坛版主
帖子: 14685
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
送出感谢: 1 次
接收感谢: 132 次
联系:

Re: 请教,在shell中,如何将log打印出来的几行,赋值给数组

#2

帖子 枫叶饭团 » 2013-02-07 17:04

一个for循环搞定,分割数据用cut就行了吧,用awk更强大
头像
jarlyyn
论坛版主
帖子: 4671
注册时间: 2006-04-12 18:54
送出感谢: 0
接收感谢: 6 次
联系:

Re: 请教,在shell中,如何将log打印出来的几行,赋值给数组

#3

帖子 jarlyyn » 2013-02-07 17:07

对于标准的std输出,可以用``把它包起来作为变量(1左边哪里)

比如 `ls`
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 请教,在shell中,如何将log打印出来的几行,赋值给数组

#4

帖子 eexpress » 2013-02-07 17:08

shell下的数组是鸡肋。
你的结果,肯定不是需要数组,而且想提取内容字段,不如直接问想要啥结果。
● 鸣学
巴洛特神
帖子: 9
注册时间: 2013-02-07 11:08
系统: win7
送出感谢: 0
接收感谢: 0

Re: 请教,在shell中,如何将log打印出来的几行,赋值给数组

#5

帖子 巴洛特神 » 2013-02-17 11:37

枫叶饭团 写了:一个for循环搞定,分割数据用cut就行了吧,用awk更强大
我用cut已经能够把log每一行截取出“testCameraToSurfaceTextureMetadata”,下面3行同样。。。我之所以想到数组,我简单解释下工作需求吧。
1楼的log是我们自动化运行的结果,里面有些会Fail,所以我们需要知道运行哪个case时fail了,“android.hardware.cts.CameraGLTest#testCameraToSurfaceTextureMetadata”,就是case的名称。我们就需要手动把这个case运行20次,看看fail的概率。因为手动需要人工输入命令,所以会耽误白天时间。我就是想把这4个case存成数组,用个for里面嵌套个for,这样每个case能自动运行手动的命令。白天来了,就能看到所以的结果了。。。。呵呵,不知道我说的明白否。。。
:em05
巴洛特神
帖子: 9
注册时间: 2013-02-07 11:08
系统: win7
送出感谢: 0
接收感谢: 0

Re: 请教,在shell中,如何将log打印出来的几行,赋值给数组

#6

帖子 巴洛特神 » 2013-02-17 14:45

eexpress 写了:shell下的数组是鸡肋。
你的结果,肯定不是需要数组,而且想提取内容字段,不如直接问想要啥结果。
可能是我表述的不清楚,我不止要提取字段,提取出的字段后面还要用。。。
{
我用cut已经能够把log每一行截取出“testCameraToSurfaceTextureMetadata”,下面3行同样。。。我之所以想到数组,我简单解释下工作需求吧。
1楼的log是我们自动化运行的结果,里面有些会Fail,所以我们需要知道运行哪个case时fail了,“android.hardware.cts.CameraGLTest#testCameraToSurfaceTextureMetadata”,就是case的名称。我们就需要手动把这个case运行20次,看看fail的概率。因为手动需要人工输入命令,所以会耽误白天时间。我就是想把这4个case存成数组,用个for里面嵌套个for,这样每个case能自动运行手动的命令。白天来了,就能看到所以的结果了。。。。呵呵,不知道我说的明白否。。。
}
回复

回到 “Shell脚本”