TEST_RESULTS := ./result/* failures.txt: $(TEST_RESULTS) @rm -f $@ @for file in $^; do \ if grep -q 'This case is failed' $$file; then \ echo "Processing $$file..."; \ grep '{.*}' $$file >> failures.txt; \ fi; \ done执行这个命令的时候,提示make: execvp: /bin/sh: 参数列表过长 make: *** [Makefile:310:failures.txt] 错误 127怎么解决
时间: 2023-11-22 07:56:47 浏览: 66
这个错误通常是因为参数列表过长导致的。可以尝试将命令改为:
```
find ./result -type f -name '*.txt' -exec grep -q 'This case is failed' {} \; -print0 | xargs -0 grep '{.*}' > failures.txt
```
这个命令使用了 `find` 和 `xargs`,可以避免参数列表过长的问题。它会在 `./result` 目录中找到所有以 `.txt` 结尾的文件,然后使用 `grep` 检查文件内容是否包含 `This case is failed`,如果包含则将文件名通过管道传递给 `xargs`,最终将所有匹配到的行写入到 `failures.txt` 文件中。
相关问题
TEST_RESULTS := ./result/* failures.txt: $(TEST_RESULTS) @rm -f $@ @for file in $^; do \ if grep -q 'This case is failed' $$file; then \ echo "Processing $$file..."; \ grep '{.*}' $$file >> failures.txt; \ fi; \ done执行这个命令的时候,提示make: execvp: /bin/sh: 参数列表过长 make: *** [Makefile:310:failures.txt] 错误 127怎么解决
这个错误通常是由于参数列表过长导致的,可以尝试分批次执行命令,或者使用 xargs 命令来处理。可以将命令改为:
```
find ./result/ -type f -name "*.txt" -exec grep -q 'This case is failed' {} \; -print0 | xargs -0 grep '{.*}' >> failures.txt
```
这个命令使用 find 命令查找所有的 ".txt" 文件,并在每个文件中查找是否包含 "This case is failed" 字符串,如果包含则将文件名通过 xargs 命令传递给第二个 grep 命令进行匹配,最终结果输出到 failures.txt 文件中。这样可以避免参数列表过长的问题。
def lastcase_result(): result = _outcome.result if result.failures: last_result = result.failures[-1] elif result.errors: last_result = result.errors[-1] else: last_result = None return last_result is not None
这段代码是用来获取最后一个测试用例的执行结果的。它首先获取测试结果(_outcome.result),然后检查是否存在失败(result.failures),如果存在,则获取最后一个失败结果;否则,检查是否存在错误(result.errors),如果存在,则获取最后一个错误结果;否则,返回None。最后,判断最后一个结果是否存在,如果存在,则返回True,否则返回False。
阅读全文