SHELL回声$?在命令中间

SHELL echo $? in the middle of command

你好。我想问你,我怎样才能知道命令中的某些动作是否运作良好。 例如当我有 command1 | xargs -ls -lA | command2 | command3

我如何找到 return 个函数 xargs ls -lA 可能有问题的地方。

或者更好,我怎样才能将错误重定向到 STDOUT 之外(因为当我访问根目录时,有 ls: 无法访问错误)谢谢

不清楚您要实现的目标,因此我将尝试回答几种可能性。我还将把答案限制在 Bash,因为那是当今大多数 *nix 用户的 shell:

  • 您希望管道在四个命令中的任何一个出现错误时停止。你不能真正做到这一点,除非你愿意通过 reading 来自 command1 的每一行输出,然后使用 breakset -o errexit 来减慢管道速度到 return 到失败时的适当级别。
  • 您想记录 ls 命令的错误输出。您可以使用 redirection 执行此操作:command1 | xargs -ls -lA 2>ls.log | command2 | command3
  • 您想知道,管道完成后,是否有任何命令失败。您可以通过检查 PIPESTATUS.
  • 的内容来执行此操作