cmd.Output返回奇怪的结果

huangapple go评论93阅读模式
英文:

cmd.Output returns strange results

问题

我是一个Golang的初学者。我编写了一个函数,它接受可变参数并将其传递给另一个接受可变参数的函数。我在第二个函数中使用了"exec.Command()"。以下是我的程序:

package main

import "fmt"
import "os/exec"

func execute(command string, parameters ...string) {
    cmd := exec.Command(command, parameters...)
    fmt.Println("Path =", cmd.Path, "Args =", cmd.Args, "Dir =", cmd.Dir)
    out,_ := cmd.Output()
    fmt.Println("Output =", out)
}

func main() {
    execute("ls", "-l")
}

我期望它返回当前目录中的文件列表。但是我得到了一个奇怪的结果:

# go build command.go
# ./command
Path = /bin/ls Args = [ls -l] Dir =
Output = [116 111 116 97 108 32 57 49 52 52 10 45 114 119 120 114 45 120 114 45 120 32 49 32 114 111 111 116 32 114 111 111 116 32 50 55 53 55 57 53 50 32 78 111 118 32 50 48 32 49 55 58 50 54 32 99 111 109 109 97 110 100 10 45 114 119 45 114 45 45 114 45 45 32 49 32 114 111 111 116 32 114 111 111 116 32 32 32 32 32 51 48 55 32 78 111 118 32 50 48 32 49 55 58 50 54 32 99 111 109 109 97 110 100 46 103 111 10 45 114 119 120 114 45 120 114 45 120 32 49 32 114 111 111 116 32 114 111 111 116 32 51 52 48 49 48 51 50 32 78 111 118 32 50 48 32 49 53 58 52 51 32 110 101 120 117 115 49 48 48 48 118 10 45 114 119 45 114 45 45 114 45 45 32 49 32 114 111 111 116 32 114 111 111 116 32 32 32 32 56 57 48 52 32 78 111 118 32 50 48 32 49 53 58 52 51 32 110 101 120 117 115 49 48 48 48 118 46 103 111 10 45 114 119 120 114 45 120 114 45 120 32 49 32 114 111 111 116 32 114 111 111 116 32 51 49 55 53 52 48 48 32 78 111 118 32 50 48 32 49 55 58 50 52 32 116 101 115 116 110 101 116 10 45 114 119 45 114 45 45 114 45 45 32 49 32 114 111 111 116 32 114 111 111 116 32 32 32 32 32 52 55 56 32 78 111 118 32 50 48 32 49 55 58 50 53 32 116 101 115 116 110 101 116 46 103 111 10]

我做错了什么?

英文:

I am a beginner in Golang. I wrote a function that will take variable args and pass it to another function that accepts variable args. I used "exec.Command()" for the second one. Here is my program

package main

import "fmt"
import "os/exec"

func execute(command string, parameters ...string) {
    cmd := exec.Command(command, parameters...)
    fmt.Println("Path =", cmd.Path, "Args =", cmd.Args, "Dir =", cmd.Dir)
    out,_ := cmd.Output()
    fmt.Println("Output =", out)
}

func main() {
    execute("ls", "-l")
}

I expected it to return the list of files in the current directory. Instead I get a strange result

# go build command.go 
#./command 
Path = /bin/ls Args = [ls -l] Dir = 
Output = [116 111 116 97 108 32 57 49 52 52 10 45 114 119 120 114 45 120 114 45 120 32 49 32 114 111 111 116 32 114 111 111 116 32 50 55 53 55 57 53 50 32 78 111 118 32 50 48 32 49 55 58 50 54 32 99 111 109 109 97 110 100 10 45 114 119 45 114 45 45 114 45 45 32 49 32 114 111 111 116 32 114 111 111 116 32 32 32 32 32 51 48 55 32 78 111 118 32 50 48 32 49 55 58 50 54 32 99 111 109 109 97 110 100 46 103 111 10 45 114 119 120 114 45 120 114 45 120 32 49 32 114 111 111 116 32 114 111 111 116 32 51 52 48 49 48 51 50 32 78 111 118 32 50 48 32 49 53 58 52 51 32 110 101 120 117 115 49 48 48 48 118 10 45 114 119 45 114 45 45 114 45 45 32 49 32 114 111 111 116 32 114 111 111 116 32 32 32 32 56 57 48 52 32 78 111 118 32 50 48 32 49 53 58 52 51 32 110 101 120 117 115 49 48 48 48 118 46 103 111 10 45 114 119 120 114 45 120 114 45 120 32 49 32 114 111 111 116 32 114 111 111 116 32 51 49 55 53 52 48 48 32 78 111 118 32 50 48 32 49 55 58 50 52 32 116 101 115 116 110 101 116 10 45 114 119 45 114 45 45 114 45 45 32 49 32 114 111 111 116 32 114 111 111 116 32 32 32 32 32 52 55 56 32 78 111 118 32 50 48 32 49 55 58 50 53 32 116 101 115 116 110 101 116 46 103 111 10]

What am I doing wrong

答案1

得分: 4

你正在打印一个字节切片。

fmt.Println("输出 =", out)

将其转换为string类型。

fmt.Println("输出 =", string(out))
英文:

You are printing a byte slice.

fmt.Println("Output =", out)

Convert it to a string.

fmt.Println("Output =", string(out))

答案2

得分: 1

当使用fmt包时,格式化字符串非常简洁:

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

When using the fmt package, the formatting string is very concise:

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

huangapple
  • 本文由 发表于 2014年11月21日 09:41:28
  • 转载请务必保留本文链接:https://go.coder-hub.com/27052824.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定