如何获取xcodebuild的返回值?

Posted

技术标签:

【中文标题】如何获取xcodebuild的返回值?【英文标题】:How to get the return value of xcodebuild? 【发布时间】:2011-09-09 14:47:19 【问题描述】:

我在持续集成服务器上的 bash 脚本中使用 xcodebuild。

我想知道脚本中的构建何时失败,因此我可以提前退出并将构建标记为失败。

xcodebuild 向控制台显示 BUILD FAILED 消息,但我没有成功获取返回值。

我怎样才能做到这一点?

提前致谢

【问题讨论】:

【参考方案1】:

我使用以下命令解决了我的问题:xcodebuild -... || 1号出口

【讨论】:

这是最干净的答案。谢谢迈克;) 真是个天才!谢谢朋友。【参考方案2】:

xcodebuild 始终返回 0,无论实际测试结果如何。您应该检查输出中的 ** BUILD FAILED **** BUILD SUCCEEDED ** 以了解测试是否通过。

【讨论】:

我们如何检查这些状态?它们不像退出代码 AFAIK【参考方案3】:

您可以使用“$?”变量来获取上一条命令的返回码。

xcodebuild -...
if [[ $? == 0 ]]; then
    echo "Success"
else
    echo "Failed"
fi

【讨论】:

【参考方案4】:

Xcodebuild 可以返回下面列出的任何错误代码,并且不限于 EX_OK(或 int 0)。

但是,我从 Dmitry 提供的解决方案中学习并修改如下。它对我有用,我希望它会有所帮助。

xcodebuild -project ......
     if test $? -eq 0
     then
        echo "Success"
     else
        echo "Failed"
     fi

错误代码

以下是可以为returned by sysexits的错误码archive

EX_OK (0):成功退出。 EX_USAGE (64):命令使用不正确,例如,参数数量错误、标志错误、参数中的语法错误等等。 EX_DATAERR (65): 输入数据在某些方面不正确。这应该只用于用户的数据,而不是系统文件。 EX_NOINPUT (66):输入文件(不是系统文件)不存在或不可读。这也可能包括像“没有消息”这样的错误发给邮件程序(如果它想抓住它的话)。 EX_NOUSER (67): 指定的用户不存在。这可能用于邮件地址或远程登录。 EX_NOHOST (68):指定的主机不存在。这用于邮件地址或网络请求。 EX_UNAVAILABLE (69):服务不可用。如果支持程序或文件不存在,则会发生这种情况。当您想做的事情不起作用但您不知道原因时,这也可以用作一个包罗万象的信息。 EX_SOFTWARE (70):检测到内部软件错误。这应尽可能限制为与非操作性非操作系统相关的错误。 EX_OSERR (71):检测到操作系统错误。这旨在用于cannot fork'',cannot create pipe'' 等。它包括 getuid 返回密码文件中不存在的用户等内容。 EX_OSFILE (72):某些系统文件(例如,/etc/passwd、/var/run/utmp 等)不存在、无法打开或出现某种错误(例如,语法错误)。 EX_CANTCREAT (73):无法创建(用户指定的)输出文件。 EX_IOERR (74):对某个文件执行 I/O 时出错。 EX_TEMPFAIL (75): 暂时失败,表明某些东西并不是真正的错误。在 send-mail、sendmail、mail 中,这意味着邮件程序(例如)无法创建连接,应稍后重新尝试请求。 EX_PROTOCOL (76):远程系统在协议交换期间返回了“不可能”的内容。 EX_NOPERM (77):您没有足够的权限执行该操作。这不适用于文件系统问题,应该使用 EX_NOINPUTEX_CANTCREAT,而是用于更高级别的权限。 EX_CONFIG (78):发现某些东西处于未配置或配置错误的状态。

欲了解更多信息click here。

【讨论】:

【参考方案5】:

也许不是因为 xcodebuild 在构建失败时没有返回非零值。无论返回错误行如何,您的 shell 脚本都会继续运行,这可能是您没有使用“-e”选项运行脚本的结果。

尝试将 #!/bin/bash -e 放在脚本文件之前。

【讨论】:

【参考方案6】:

通常,您可以随时通过以下方式检查 Unix bash 中上次运行进程的存在值:

$ echo $?

其中$? 是最后执行命令的存在值的内置占位符。有关其他 bash 内置变量的更多详细信息,请参阅here。

所以,首先运行您想要调查其返回码的命令,然后像上面一样运行 echo。

【讨论】:

【参考方案7】:

编译后的产品(.a或.ipa文件)是否存在

【讨论】:

以上是关于如何获取xcodebuild的返回值?的主要内容,如果未能解决你的问题,请参考以下文章

请问Ajax如何获取回调函数的返回值?

如何获取AsyncTask 异步处理的返回值

wpf messagebox 的返回值如何获取

如何获取c++类中的返回值

Android Studio的Java程序如何打开网页并获取返回值

JAVA 如何获取modelandview的返回值,如果把一个对象放在map集合里(假如集合名字是