你如何在 golang 中打印多行 exec 输出

How do you print multiline exec output in golang

我正在尝试编写一个简单的 golang 程序来列出目录中的文件。每当我的 shell 命令产生多行时,它都会在 Go 中注册为数组

例如,当我尝试以下操作时:

import (
    "log"
    "os/exec"
    "fmt"
)
func main (){

    out,err := exec.Command("ls").Output()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(out)

}

我最终得到输出 [101 108 105 109 115 116 97 116 115 46 105 109 108 10 101 110 118 10 115 99 114 97 116 99 104 10 115 114 99 10]

我觉得这是一件很常见的事情,但在这里的任何地方都找不到。

Output 中第一个值的 return 类型是 []bytefmt.Println显示的是每个切片元素的数值。

要显示命令输出的预期结果,您可以将字节切片转换为字符串或使用带有 %s 动词的格式字符串:

fmt.Println(string(out))

或者:

fmt.Printf("%s\n", out)