SHELL回声$?在命令中间
SHELL echo $? in the middle of command
你好。我想问你,我怎样才能知道命令中的某些动作是否运作良好。
例如当我有 command1 | xargs -ls -lA | command2 | command3
我如何找到 return 个函数 xargs ls -lA 可能有问题的地方。
或者更好,我怎样才能将错误重定向到 STDOUT 之外(因为当我访问根目录时,有 ls: 无法访问错误)谢谢
不清楚您要实现的目标,因此我将尝试回答几种可能性。我还将把答案限制在 Bash,因为那是当今大多数 *nix 用户的 shell:
- 您希望管道在四个命令中的任何一个出现错误时停止。你不能真正做到这一点,除非你愿意通过
read
ing 来自 command1
的每一行输出,然后使用 break
或 set -o errexit
来减慢管道速度到 return 到失败时的适当级别。
- 您想记录
ls
命令的错误输出。您可以使用 redirection 执行此操作:command1 | xargs -ls -lA 2>ls.log | command2 | command3
- 您想知道,管道完成后,是否有任何命令失败。您可以通过检查
PIPESTATUS
. 的内容来执行此操作
你好。我想问你,我怎样才能知道命令中的某些动作是否运作良好。
例如当我有 command1 | xargs -ls -lA | command2 | command3
我如何找到 return 个函数 xargs ls -lA 可能有问题的地方。
或者更好,我怎样才能将错误重定向到 STDOUT 之外(因为当我访问根目录时,有 ls: 无法访问错误)谢谢
不清楚您要实现的目标,因此我将尝试回答几种可能性。我还将把答案限制在 Bash,因为那是当今大多数 *nix 用户的 shell:
- 您希望管道在四个命令中的任何一个出现错误时停止。你不能真正做到这一点,除非你愿意通过
read
ing 来自command1
的每一行输出,然后使用break
或set -o errexit
来减慢管道速度到 return 到失败时的适当级别。 - 您想记录
ls
命令的错误输出。您可以使用 redirection 执行此操作:command1 | xargs -ls -lA 2>ls.log | command2 | command3
- 您想知道,管道完成后,是否有任何命令失败。您可以通过检查
PIPESTATUS
. 的内容来执行此操作