2017-07-24 77 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將在擴展變量時忽略換行符。

相關問題