2013-01-17 8 views
0

이 작업의 반환 값이 0이면 구성 프로세스 중에 셸 명령을 실행하고 싶습니다. 사용하고 싶습니다. 그렇지 않으면 오류 메시지와 함께 종료하고 싶습니다. 이 작동하지 않습니다autotools에서 쉘 cmd의 반환 값을 확인하는 방법

LOC=$(perl -MExtUtils::Embed -e perl_inc | sed 's/[ \t]*-I//') 
RC=$? 
AS_IF([ test $RC != 0 ], [AC_MSG_ERROR([Can't find module MExtUtils::Embed in perl. Try installing perl 5.8.8 or above])],) 

:

는 I는 다음과 같이 썼다. 명령이 실패하더라도 RC는 항상 값 0을 얻습니다.

아무도 제대로하는 방법을 알고 있습니까?

감사

답변

2

문제는 sed에 관계없이 펄이하는 일의 성공 때문에 파이프가 항상 성공한다는 것입니다. perl_inc이 명령은 파일의 이름 대신 펄하는 것처럼 보이는 반면에

LOC=$(perl -MExtUtils::Embed -e perl_inc) 
AS_IF([ test $? != 0 ], [AC_MSG_ERROR([...])]) 
LOC=$(echo "$LOC" | sed 's/[ \t]*-I//') 

, 그래서 단순히 대체를 추가하는 것이 더 쉬울 수 있습니다 한 가지 방법은 단순히 sed의 호출을 지연하는 것 당신의 펄에 sed에서.

세 번째로 원하는 모듈이 설치되었는지 확인하려면 AX_PROG_PERL_MODULES을 사용해야합니다.