2012-02-20 7 views
2

내가 (간체 이상) 인수 pgrep을 호출하려고 떠들썩한 파티 스크립트가 예상대로 작동하지 인수가 pgrep에 전달되지 않았지만 어떤 이유로 든 에코에 전달됨을 의미합니다. 내가 기대하고있어 무엇bash는 스크립트/pgrep을은

:

7632 
pgrep -f '/opt/apps/bin/lighttpd.bin -f /opt/apps/etc/lighttpd/lighttpd.conf$' 

내가 단독으로 레그 라인을 실행하면 예상대로, 그것은 7632을 출력합니다.

여기 뭔가 잘못 되었나요? 나는 sh, 돌진 및 bash로 시도했다. 동일한 결과, 나는 진짜로 문제를 보지 않는다.

답변

3

당신은 PATTERN에게 포위 할 필요가 따옴표로 :

PATTERN="/opt/apps/bin/lighttpd.bin -f /opt/apps/etc/lighttpd/lighttpd.conf\$" 
pgrep -f "$PATTERN" 

참조 : quoting variables

편집 :과 반향 나는 다만 것 :

echo pgrep -f \'$PATTERN\' 
+0

+1 큰 따옴표 및 패턴 문자열 내부에서 작은 따옴표를 삭제하려면 +1하십시오. 그러나 두 번째 변경 사항을 지적해야합니다. –

+0

@JonathanLeffler : 관심을 가져 주셔서 감사합니다. –

+0

편집 : 죄송합니다, stackoverflow 내 줄 바꿈을 삽입하는 대신 내 의견을 제출 ... 귀하의 솔루션을 작동, 감사합니다! 왜 내가 프롬프트에서 명령을 실행할 때 ''작동하는지 설명 할 수 있겠지만 스크립트에서 스크립트가 필요합니까? 감사합니다. – alex

2

lighttpd.bin avai가 없으므로 하지만 PATTERN에 assingment에 작은 따옴표를 유지하는 것

PATTERN='/opt/apps/bin/lighttpd.bin -f /opt/apps/etc/lighttpd/lighttpd.conf\$' 
pgrep -f "$PATTERN" 
echo pgrep -f "$PATTERN" 

약간 다른 트위스트와 함께, 내가 주로 @barti_ddu에 동의, 검증되지 않은 옵션을 제출하고 함께 테스트하지만, 완전히 당신이 DBL을 필요로 동의 lable가 -pgrep 또는 echo와 함께 사용할 때 인용.

이 정보가 도움이되기를 바랍니다.

+0

표시된'pgrep'의 사용법 메시지는 인자없이'-f'를 포함합니다. –