Shell脚本检测应用运行状态的实现方案咨询
检测Dialog应用运行状态的最优Shell实现
核心思路
Shell中命令/函数的执行结果通过返回码传递:返回0代表成功,非0代表失败。pgrep工具本身就会在找到进程时返回0,未找到时返回1,完全契合你的需求,无需额外冗余逻辑。
最优代码实现
简化检测函数
# 检测Dialog进程是否运行,返回0表示运行,1表示未运行 appRunning() { # -x 确保精确匹配进程名,避免误匹配含Dialog的其他进程 # >/dev/null 屏蔽pgrep的进程ID输出,只保留返回码 pgrep -x Dialog > /dev/null }
正确的分支判断
直接用if调用函数,利用其返回码走对应分支:
if appRunning; then echo "应用正在运行" else echo "应用未运行,请重新检查" fi exit 0
原代码的问题解析
- 判断逻辑错误:你用
x$(appRunning) = '0'是在比较函数的标准输出,但你的函数没有任何输出,实际是在比较x和0,永远不成立 - 冗余的return语句:
pgrep的返回码会自动成为函数的返回值,不需要额外写&& return 0 || return
可选扩展
- 若需忽略进程名大小写,可修改为
pgrep -xi Dialog > /dev/null - 若需获取进程ID,去掉
>/dev/null即可,判断分支逻辑保持不变
内容的提问来源于stack exchange,提问作者Albert Chan
相关产品推荐
相关产品推荐

