尝试在运行测试的bash脚本之前和之后比较进程列表。遇到麻烦,因为ps返回1,我不确定如何比较我之前和之后的情况。
理想情况下,它看起来像这样。原谅粗伪伪代码:
run-tests:
ps -x
export before=$?
# run tests and scripts
ps -x
export after=$?
# compare before and after
建议和建议表示赞赏。
答案 0 :(得分:1)
我假设您想要计算之前和之后正在运行的进程数(您的问题并未过分明确)。如果是这样,你可以将ps传递给wc:
export before=`ps --no-headers | wc -l`
- 编辑---
我重读了这个问题,可能是您正在寻找不同的实际流程。如果是这种情况,那么,您可以捕获变量中的输出并比较它们:
target:
@ before=$$(ps --no-headers); \
run test; \
after=$$(ps --no-headers); \
echo "differing processes:"; \
comm -3 <(echo "$before") <(echo "$after")
关于这一点的一些快速说明:我使用\
&#39; s连接所有行,如你所提到的那样使用了makefile,变量的范围只是它所在的配方行。定义。通过连接这些行,变量具有整个配方的范围。
我使用了双$$
,因为您的原始帖子建议使用makefile,并且makefile $$
将扩展为要运行的bash代码中的单个$
。
在bash中执行var=$(command)
会为var
command
我使用了特定于bash的<()
约定。这使您可以将命令的输出视为文件,而无需实际创建文件。请注意,我在变量周围加上引号 - 这是必需的,否则bash会在扩展变量时忽略换行符。