怎么能同时做所有这两个函数(bash,pipe)

时间:2016-11-30 03:18:26

标签: bash shell logging pipe xcodebuild

我正在尝试同时完成所有这两项功能,

xcodebuild || exit

xcodebuild | tee xcodebuild.log | xcpretty

在脚本文件中,

build.sh

现在我这样做,但最后一个命令'exit'不起作用。

xcodebuild | tee xcodebuild.log | xcpretty || exit

我希望命令'xcodebuild'不仅可以将日志打印到文件中,而且还可以在错误时“退出”我的脚本文件。

如果有人能给我一个正确方向的提示,我应该怎么做才真的很感激。

已更新 它适用于我:

xcodebuild | tee xcodebuild.log | xcpretty
if [ "${PIPESTATUS[0]}" != "0" ]; then
   exit 1
fi

2 个答案:

答案 0 :(得分:0)

如果我正确理解你的要求,你可以发送一个到后台,让它在子shell中运行,并保持另一个在前台(根据我们的需要,你也可以将这个发送到后台):< / p>

{ xcodebuild || exit ;} & xcodebuild | tee xcodebuild.log | xcpretty

或者你可以使用像GNU parallel这样的真正的多处理工具。

答案 1 :(得分:0)

| - 是管道,因此LHS上的输出变为RHS的输入(LHS =符号的左侧)

- 无论上一个命令的退出状态如何,下一个命令都将运行

&安培;&安培; - 表示如果LHS的退出状态为0,则RHS命令将仅执行,这意味着成功

|| - 与

正上方相反

以上是所有串行命令。

使用mpi或至少线程

完成Paralell运行

exit没有退出,因为xcpretty返回SUCCESS,即使你想将条件挂起到xcodebuild