首页 > 解决方案 > 从管道中的先前命令读取退出状态

问题描述

我试图在执行我的应用程序之前检测管道序列中的任何命令是否失败。

我正在通过读取$PIPESTATUS(bash)或$pipestatus(zsh)环境变量来接近解决方案,这些环境变量应该包含一个包含每个命令的退出代码的数组。

可悲的是,我无法使用os.Getenv. 这是概念的快速证明:

package main

import (
  "os"
  "fmt"
)

func main() {
  fmt.Printf("$PIPESTATUS is /%v/\n", os.Getenv("PIPESTATUS"))
  fmt.Printf("$pipestatus is /%v/\n", os.Getenv("pipestatus"))
}

这导致以下输出:

$ true | false | go run read_pipestatus.go
$PIPESTATUS is //
$pipestatus is //

我怎样才能使这种方法起作用或替代方法?

标签: goenvironment-variablespipecommand-line-interfaceexit-code

解决方案


推荐阅读