2017-07-24 84 views
0

尝试比较运行测试bash脚本前后的进程列表。遇到问题,因为ps返回1,我不知道如何比较我拥有它们之前和之后的情况。比较运行bash前后的进程列表

理想情况下,它看起来像这样。原谅粗糙的伪代码:

run-tests: 
    ps -x 
    export before=$? 
    # run tests and scripts 
    ps -x 
    export after=$? 
    # compare before and after 

建议和意见赞赏。

+0

通过awk输出ps的输出以返回退出代码。 –

+0

当你说比较它们时,你的意思是测试它们是否相等,或者执行其他自动分析,或者将它们放在屏幕上,或者是什么? – Beta

回答

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") 

几个在这个快速笔记:我用\的你提到你使用的makefile串连所有行,和变量的范围仅仅是其定义的配方行。通过连接这些线,变量具有整个配方的范围。

我使用双$$作为您的原始文章建议一个makefile,并且makefile文件$$将展开到要运行的bash代码中的一个$

在bash否则var=$(command)分配var我用<()惯例是特定打坏的command

的输出。这使您可以将命令的输出视为文件,而不必实际创建文件。请注意,我在变量周围加上了引号 - 这是必需的,否则bash将在扩展变量时忽略换行符。

相关问题