分页: 1 / 1

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

发表于 : 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,但不知道后面怎么用了。

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

发表于 : 2013-02-07 17:04
枫叶饭团
一个for循环搞定,分割数据用cut就行了吧,用awk更强大

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

发表于 : 2013-02-07 17:07
jarlyyn
对于标准的std输出,可以用``把它包起来作为变量(1左边哪里)

比如 `ls`

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

发表于 : 2013-02-07 17:08
eexpress
shell下的数组是鸡肋。
你的结果,肯定不是需要数组,而且想提取内容字段,不如直接问想要啥结果。

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

发表于 : 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

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

发表于 : 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能自动运行手动的命令。白天来了,就能看到所以的结果了。。。。呵呵,不知道我说的明白否。。。
}