分配给变量时,ps 命令获取不同的值

分配给变量时,ps 命令获取不同的值

当我将其分配给变量时,我得到不同的输出。为什么是这样?

#!/bin/bash
P=$(ps -ef | grep ${APP} | grep -v grep  | wc -l)
echo ps -ef | grep ${APP} | grep -v grep  | wc -l
echo $P

输出:

0
3

答案1

您的第二个命令有缺陷,因为您实际上并未执行ps -ef,而是回显文字字符串ps -ef。然后,您grep对于字符串中不存在的特定字符串ps -ef并计算返回的行数,即0

你可以简单地这样做:

P=$(ps -ef | grep "${APP}" | grep -v grep  | wc -l)
ps -ef | grep "${APP}" | grep -v grep  | wc -l
echo "$P"

或者正如杰夫指出的那样,这会更简单pgrep(如果有的话):

p=$(pgrep "${APP}" | wc -l)
pgrep "${APP}" | wc -l
echo "$p"

相关内容