深度学习pipeline提速10倍,pipelines

【深度学习pipeline提速10倍,pipelines】
Linux中,如何取得pipeline中每一个命令的返回值?

深度学习pipeline提速10倍,pipelines


老胡的看法:pipeline是我们使用Linux的日常操作,一般来说使用pipeline是为了简化交互流程,目的在于得到最后的结果 。缺点就是在设计pipeline语句的时候,只能看到最后的输出值,不太方便调试 。老胡在这里给出几个办法,可以输出pipeline中每一个阶段语句的返回值:一、使用shell选项pipefailpipefail是ksh、zsh和bash中都使用的一个shell选项,它的作用是告诉shell输出pipeline中未成功执行返回的其它状态值 。
这大概是最简单最方便的一个方式了 。不过这个方法的缺点是只能输出pipeline中最后一段返回值不为0的值 。使用的方法是在shell中用set指令指定这个选项:set -o pipefail二、使用shell变量$PIPESTATUSshell有一个内置变量,它是一个数组,用来存放pipeline中每一段的返回状态,bash中的变量名字是大写,zsh中是小写的$pipestatus 。
如果我们想获取pipeline中每一段的返回状态,只需要按照访问数组的方式访问$PIPESTATUS就可以了 。如果想要得到所有段的返回值,数组下标使用@:三、利用输出重定向在多段pipeline中,我们还可以利用打印语句和输出重定向来实现每一段的pipeline返回值输出 。具体思路是:打开1个文件描述符,并重定向到标准输出;设计pipeline,将需要的段中命令返回值输出到新描述符;其余段的命令返回值均使用类似的方式输出到新描述符;将新描述符重定向到先前声明的描述符;比如:总结一下,关于pipeline各段命令返回值的输出,老胡大致上就这么几个思路了 。

    推荐阅读