unix shell脚本子进程结果

时间:2011-05-09 09:29:45

标签: shell unix subprocess

我正在尝试获得子流程的结果。但是现在我唯一能得到的结果是日志字符串。 我想测试整数结果,但我不知道如何。

buildresult=$(xcodebuild -project $projectfile -nodistribute -activetarget -sdk macosx10.5 "PRODUCT_VERSION_NUM=$PRODUCT_VERSION" 'MACOSX_DEPLOYMENT_TARGET=10.4' 'ARCHS=$(ARCHS_STANDARD_32_BIT)' 'DEMO_PREPROCESSOR_FLAG=_FLUX_DEMO_' "PRODUCT_NAME=$PRODUCTS_ITEM-Demo" 'BASEPRODUCT_NAME=null' -configuration Release build)

$ buildresult包含echo日志,如何测试结果?

感谢。

3 个答案:

答案 0 :(得分:5)

子流程的退出状态在$?中可用。变量:

buildresult=$(xcodebuild bla bla)
rc=$?
if test $rc -ne 0; then
    echo "NOT OK!"
    exit $rc
fi

答案 1 :(得分:1)

buildresult=$(xcodebuild bla bla) || echo "NOT OK"

答案 2 :(得分:1)

使用$?找到最后一个命令的返回码。这假设该命令返回有意义的返回码。

$ ls 
   :
   :
$ echo $?
0

$ dgdg
dgdg: command not found
$ echo $?
127

$ rm somefilethatdoesnotexist
rm: cannot remove `somefilethatdoesnotexist': No such file or directory
$ echo $?
1