如何获取 instruments 的 return 值?

How to get the return value of instruments?

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

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

instruments 向控制台显示 LOG ERROR,但我没有成功获得 return 值。

我怎样才能做到这一点?

如果有:

instruments -w "iPhone 6 (8.3 Simulator)" -t

可以这样做:

if(...)
then ...

提前致谢

相当简单:

instruments -w "iPhone 6 (8.3 Simulator)" -t
if (( $? > 0 ))
then
    echo "instruments commands failed with error: $?" >&2
fi

(( )) 符号用于算术比较。使用 [[ ... ]] 完成字符串模式比较。注意使用正确的间距,通常在 shell 中使用空格作为分隔符,因此它可能很重要。

另一种语法可以是:

if instruments -w "iPhone 6 (8.3 Simulator)" -t
then
    echo "it worked"
else
    echo "it failed"
fi

这通常更可取。但我认为在这种情况下,我展示的样式更符合您的需求。

特殊变量?给出前一个命令的return值。前缀 $ 为我们提供了变量的值。按照惯例,return 值为零表示成功,1-255 表示错误(UNIX/Linux 的范围是 0-255,一个字节)。每个错误编号的意义是特定于应用程序的,因此您必须阅读文档以了解其含义。

请记住,$? 为我们提供了 上一个 命令的 return 值,因此即使是 echo 也会重置它!

>&2表示"send the output to the standard error stream"。错误消息应该放在这里,也称为 stderr,文件描述符 2。如果您要重定向脚本的输出,这是一件好事。

编辑:毕竟,Apple 似乎没有记录 instruments 命令的退出代码,我检查了 man 页面。我认为这很糟糕,但你无能为力。在像 C(可能还有 ObjC)这样的语言中,如果程序在没有设置退出代码的情况下结束,你只会得到内存中的任何旧值。所以你甚至不能相信零就是成功 - 除非你知道否则?