如何获得工具的回报价值?

时间:2015-05-06 06:48:32

标签: ios macos bash teamcity instruments

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

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

仪器向控制台显示LOG ERROR,但我没有成功获得返回值。

我怎样才能做到这一点?

如果有:

if (!isValid) {
    AppDatePickerDialog datePicker = new AppDatePickerDialog();
    datePicker.show(getSupportFragmentManager(), "YOUR_TAG");
}

可以执行以下操作:

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

提前致谢

1 个答案:

答案 0 :(得分:1)

相当容易:

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

这通常更可取。但我认为在这种情况下,我展示的风格更符合你的需要。

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

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

>&2表示"将输出发送到标准错误流"。错误消息应该放在这里,这也是已知的stderr,文件描述符2.如果你从脚本重定向输出,这是一件好事。

编辑:毕竟,Apple似乎没有记录instruments命令的退出代码,我检查了man页面。在我看来这很差,但是你做的并不多。在像C(和可能是ObjC)这样的语言中,如果程序在没有设置退出代码的情况下结束,那么你只需获得在内存中存在的任何旧值。所以你甚至不能依靠零成功 - 除非你不知道其他?

相关问题