我希望在 Go 中执行一个 shell 命令,并将结果输出作为我的程序中的字符串。我看到了Rosetta Code版本:
package main
import "fmt"
import "exec"
func main() {
cmd, err := exec.Run("/bin/ls", []string{"/bin/ls"}, []string{}, "", exec.DevNull, exec.PassThrough, exec.PassThrough)
if (err != nil) {
fmt.Println(err)
return
}
cmd.Close()
但这并没有以我可以通过编程方式访问的方式捕获实际的标准输出或错误——那些仍然打印到常规的标准输出/标准错误。我看到使用 Pipe 作为 out 或 err 可以在其他地方提供帮助,但没有示例说明如何这样做。有什么想法吗?
最佳答案
包“exec”是changed一点点。以下code为我工作。
package main
import (
"fmt"
"os/exec"
)
func main() {
app := "echo"
arg0 := "-e"
arg1 := "Hello world"
arg2 := "\n\tfrom"
arg3 := "golang"
cmd := exec.Command(app, arg0, arg1, arg2, arg3)
stdout, err := cmd.Output()
if err != nil {
fmt.Println(err.Error())
return
}
// Print the output
fmt.Println(string(stdout))
}
我希望这会有所帮助!
关于go - 在 Go 中执行 shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6182369/