2016-08-17 9 views
2

특정 프로세스 $PROC_NAME이 실행 중인지 확인하는 작은 스크립트 (check_process.sh)를 작성하려고합니다. 포함되어 있으면 해당 PID를 반환하고 그렇지 않으면 -1을 반환합니다.bash : commad substition의 pgrep

제 아이디어는 명령 대체에 pgrep -f <STRING>을 사용하는 것입니다.

내가 명령 줄에서 직접이 코드를 실행하면 :

export ARG1=foo_name 
export RES=$(pgrep -f ${ARG1}) 
if [[ $RES == "" ]]; then echo "-1" ; else echo "$RES"; fi 

모든 것이 잘 진행 : PID -1 프로세스 상태에 따라 달라집니다.

내 스크립트 check_process.sh 같은 줄이 포함 플러스 여분의 변수는 프로세스의 이름을 전달하는 :

#!/bin/bash 
export ARG1=$1 
export RES=$(pgrep -f ${ARG1}) 
if [[ $RES == "" ]]; then echo "-1" ; else echo "$RES"; fi 

을하지만이 코드는 작동하지 않습니다! 과정은 현재 내가 실행하지 않는 과정을 확인할 때 내가 그렇지 않으면 뭔가를 얻을 수있는 반면 나는 PID의 (프로세스의 PID와 다른뭔가를 ...) 수를 실행하는 경우!

나는 당황합니다. 어떤 생각? 미리 감사드립니다.

+0

을 당신은 아마 과정을 일치하고 처리 과정을 일치됩니다) – fedorqui

+0

'pgrep을 -f "$의 PROC_NAME "|| echo "-1"' – Cyrus

+0

더 작은 코드를 보내 주셔서 감사합니다. 그러나 스크립트에서 사용하면 여전히 동일한 문제가 발생합니다! – eddie

답변