当我将其分配给变量时,我得到不同的输出。为什么是这样?
#!/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"