我想做类似的事情:
command || log $error_from_last_command
有没有办法像管道一样使用||
和访问?stderr
command
我的目的是处理来自, using的错误消息log
,但前提是command
失败。我正在阅读标记的副本,但我不知道如何将其应用于我的情况。
我想做类似的事情:
command || log $error_from_last_command
有没有办法像管道一样使用||
和访问?stderr
command
我的目的是处理来自, using的错误消息log
,但前提是command
失败。我正在阅读标记的副本,但我不知道如何将其应用于我的情况。
如果您想在另一个程序中使用仅在第一个命令完成后运行的程序的输出,则将输出存储在文件中可能是最简单的。
管道输出需要命令同时运行,但我们只有在第一个命令完成时才能获得退出代码。
log < "$errfile"
上面当然会将错误消息定向到标准输入log
(就像您使用管道一样)。要将其作为命令行参数,请使用log "$(cat "$errfile")"
(一个参数),或log $(cat "$errfile")
(使用分词,log
查看多个参数),或log "$(< "$errfile")"
(非标准,至少在 Bash 中有效)。如果您知道管道的第一个元素(或任何管道的任何元素)的退出代码就足够了,您可以使用
bash
变量PIPESTATUS
,根据bash
手册页,它是:“一个数组变量。 .. 包含最近执行的前台管道中进程的退出状态值列表..."。我意识到从技术上讲,您要求的是一些不同的东西,但是您可能会考虑使用此变量是否可能以您最初没有预料到的方式满足您的需求。