2014-11-21 2 views
1

Я новичок в Голанге. Я написал функцию, которая будет принимать переменные args и передать ее другой функции, которая принимает переменные args. Я использовал «exec.Command()» для второго. Вот моя программаcmd.Output возвращает странные результаты

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] 

Что я делаю неправильно

ответ

3

Вы печатаете кусочек байт.

fmt.Println("Output =", out) 

Преобразуйте его в string.

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

Большое спасибо. Он работал –

+0

@JosephSwaminathan Если это сработало, пожалуйста, отметьте решение как принятое. Для этого нажмите галочку рядом с кнопками «вверх» для голосования. – nemo

Смежные вопросы