1 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
看來你應(yīng)該能夠通過exec.ExitError
, see?exec package獲得它。請注意,您可能需要 Go 1.12。這是一個(gè)可運(yùn)行的示例(但它不會(huì)在 go Playground 上為您提供實(shí)際的輸出):
package main
import (
? ? "fmt"
? ? "io/ioutil"
? ? "os"
? ? "os/exec"
)
func main() {
? ? cmd := exec.Command(`/bin/bash`, `-c`, `FOO=bar ls /foo`)
? ? cmd.Stdin = os.Stdin
? ? cmd.Stderr = os.Stderr
? ? stdOut, err := cmd.StdoutPipe()
? ? if err != nil {
? ? ? ? fmt.Println("Error 1")
? ? }
? ? if err := cmd.Start(); err != nil {
? ? ? ? fmt.Println("Error 2")
? ? }
? ? bytes, err := ioutil.ReadAll(stdOut)
? ? if err != nil {
? ? ? ? fmt.Println("Error 3")
? ? }
? ? if err := cmd.Wait(); err != nil {
? ? ? ? fmt.Println("Error 4")
? ? ? ? if exitError, ok := err.(*exec.ExitError); ok {
? ? ? ? ? ? fmt.Printf("Exit code is %d\n", exitError.ExitCode())
? ? ? ? }
? ? }
? ? fmt.Println(string(bytes))
}
在我的系統(tǒng)上打?。?/p>
$ go run main.go
ls: cannot access '/foo': No such file or directory
Error 4
Exit code is 2
如果這對您不起作用,也許值得遵循 @JimB 的建議并直接調(diào)用 helm ?Go 標(biāo)準(zhǔn)庫也應(yīng)該支持管道:
它包裝了 os.StartProcess 以便更輕松地重新映射 stdin 和 stdout、使用管道連接 I/O 以及進(jìn)行其他調(diào)整。
- 1 回答
- 0 關(guān)注
- 223 瀏覽
添加回答
舉報(bào)