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

时间:2017-09-11 21:27:48

标签: go exec

我试图编写一个简单的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]

我觉得这是常见的事情,但无法在任何地方找到它。

1 个答案:

答案 0 :(得分:5)

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

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

fmt.Println(string(out))

或者:

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