douyanti2808
2017-09-11 21:27
浏览 390
已采纳

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

I'm trying to write a simple golang program that lists the files in a directory. Whenever my shell command yields multiple lines, it registers in Go as an array

For example, when i try the following:

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

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

}

I end up with the output [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]

I feel like this is a common thing to do but wasn't able to find it on here anywhere.

图片转代码服务由CSDN问答提供 功能建议

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

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

  import  (
“ log” 
“ os / exec” 
“ fmt” 
)
func main(){
 
 out,err:= exec.Command(“ ls”)。Output()
 如果err!= nil {
 log.Fatal(err)
} 
 fmt.Println(out)
 
} 
   
 
 

输出为 [10110810510911511697116115461051091081010111011810115991149711699104101151149910]

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dongwu5743 2017-09-11 21:29
    已采纳

    The return type of the first value from Output is []byte. fmt.Println is displaying the numeric values of each slice element.

    To show the desired result of the output of the command, you can either convert the byte slice to a string or use a format string with the %s verb:

    fmt.Println(string(out))
    

    Or:

    fmt.Printf("%s
    ", out)
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题