我有一个文本文件名“results”,它包含

[  PASSED  ] 11 tests.
[  PASSED  ] 590 tests.
[  PASSED  ] 1231 tests.
[  FAILED  ] 4 tests.
[  FAILED  ] 500 tests.

我想添加通过的测试并存储到变量中。添加失败的测试,添加它们并存储到另一个变量中。
我该怎么做?

最佳答案

一种使用awk的快速方法。
假设测试输出位于名为test.out的文件中:

#!/bin/bash
npasses=$(<test.out awk '
/ PASSED / { total += $4 }
END { print total }')

echo number of passing tests: $npasses

<test.out表示从awk读取。
test.out将第4个字段追加到名为total的变量,但仅适用于与regex/ PASSED / { total += $4 }匹配的行。
PASSED在文件末尾运行,并打印存储在END { print total }中的值。

09-09 21:07