변수에 할당하면 다른 결과가 나타납니다. 왜 이런거야?
#!/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"