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"

또는 Jeff가 지적했듯이 이것이 더 간단할 것입니다 pgrep.

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

관련 정보