一尘不染

你如何在 Go 中获得系统命令的输出?

go

假设我想在 go 程序中运行 ‘ls’,并将结果存储在一个字符串中。似乎有一些命令可以在 exec 和 os 包中派生进程,但是它们需要 stdout 等的文件参数。有没有办法将输出作为字符串?


阅读 135

收藏
2021-12-12

共1个答案

一尘不染

现在有一个更简单的方法:

package main

import (
    "fmt"
    "log"
    "os/exec"
)

func main() {
    out, err := exec.Command("date").Output()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("The date is %s\n", out)
}

out标准输出在哪里。它的格式为[]byte,但您可以使用以下命令轻松将其更改为字符串:

string(out)

您还可以使用CombinedOutput() 代替Output()which 返回标准输出和标准错误。

执行命令

2021-12-12