Pgrep
pgrep -f 以 1 退出
RUNNING_APPS=$(pgrep -f "somePattern") echo $? #results in 1
如何使用退出程式碼 0 使我的命令通過?
在我的 Arch 系統上,使用
pgrep
fromprocps-ng
,我在man pgrep
:EXIT STATUS 0 One or more processes matched the criteria. For pkill the process must also have been success‐ fully signalled. 1 No processes matched or none of them could be signalled. 2 Syntax error in the command line. 3 Fatal error: out of memory etc.
所以這就是它的方式:
pgrep
如果一切正常但沒有與搜尋字元串匹配的程序,將以 1 退出。這意味著您將需要使用不同的工具。也許像 Kusalananda 在評論中提出的建議和ilkkachu 作為答案發布:running_apps=$(pgrep -f "somePattern" || exit 0)
但是,IMO 更好的方法是更改您的腳本。而不是使用
set -e
,讓它在重要步驟中手動退出。然後,你可以使用這樣的東西:running_apps=$(pgrep -fc "somePattern") if [ "$running_apps" = 0 ]; then echo "none found" else echo "$running_apps running apps" fi