我希望我的问题不是太具体...
关于如何返回通过管道传输到另一个命令的命令的退出代码有很多问题和答案,但我的情况有点不同......
我有一个通用命令,我将输出传递到语法着色脚本。该命令通过 LSF 的 bsub 执行。像这样的东西:
bsub <switches> "command | colorize"
假设该命令返回一个非零退出值。由于 colorize 命令,bsub 返回零退出值。
如果我不管它——
bsub <switches> "command"
退出值是命令中正确的非零值。
有没有办法用管道获得非零值?
为了全面披露,这个 bsub 实际上是通过 perl 中的 system() 调用来调用的。只要 bsub 返回非零,系统调用就应该返回非零并且一切正常。
我查看了如何通过 $PIPESTATUS 从管道命令中获取退出代码,但我认为它在这种情况下不起作用,因为 1)我是从 perl 而不是 shell 运行的,2)我不知道是否 bsub会返回的。