我想在配置过程中运行shell命令-如果此操作的返回值为0,我想使用它。否则,我希望退出并显示错误消息。
我写了这样的东西:
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])],)
这行不通。RC总是得到值0,即使命令失败。
有谁知道怎么做对吗?
谢谢
问题是您的管道总是成功的,因为无论perl做什么,sed
都会成功。一种方法是简单地延迟sed
的调用:
LOC=$( perl -MExtUtils::Embed -e perl_inc )
AS_IF([ test $? != 0 ], [AC_MSG_ERROR([...])])
LOC=$( echo "$LOC" | sed 's/[ t]*-I//' )
另一方面,看起来perl_inc
是perl的命令,而不是文件名,所以简单地将sed的替换添加到perl中可能更容易。
第三,您可能应该使用AX_PROG_PERL_MODULES
来查看是否安装了所需的模块。