回答

收藏

在 Go 中执行 shell 命令

技术问答 技术问答 269 人阅读 | 0 人回复 | 2023-09-12

我希望在 Go 中执行一个 shell 命令,并在我的程序中输出结果作为字符串。我看到了Rosetta Code版本:  n0 K9 e( t1 F4 v* b
    package mainimport "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()
    9 Z2 Y: d7 J8 V7 w, R0 a2 l; [' M
但这并没有捕获实际的标准输出或错误实际标准输出或错误 - 那些仍然打印到常规标准输出/标准错误的人。我看到了 Pipe 作为 out 或 err 可以在其他地方提供帮助,但没有例子解释如何这样做。你有什么想法吗?
5 `2 ?# w/ f* l/ f. Q: M: @                                                                ) y0 @, w7 G) A$ Q. T. S! F
    解决方案:                                                                ( q7 e, F8 [2 h3 d
                                                                包“exec稍有变化。以下代码对我有用。
7 ?% ^' t  \6 D+ @8 K" S
    package mainimport  "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))}9 B. ^: i3 I& d9 i+ F- \
希望这有帮助!
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则