Go:执行bash脚本

4

我该如何在Go程序中执行一个bash脚本?以下是我的代码:

目录结构:

/hello/
  public/
    js/
      hello.js
  templates
    hello.html

  hello.go
  hello.sh

hello.go

cmd, err := exec.Command("/bin/sh", "hello.sh")
  if err != nil {
    fmt.Println(err)
}

当我运行hello.go并调用相关路由时,我的控制台上会显示以下内容: 退出状态127 输出为 我期望得到["a", "b", "c"]
我知道stackoverflow上有一个类似的问题:从Golang执行Bash脚本,但是我不确定我是否正确获取了路径。感谢帮助!
3个回答

5

exec.Command() 返回一个结构体,可用于像 Run 这样的其他命令。

如果您只想要命令的输出,请尝试以下方法:

package main

import (
    "fmt"
    "log"
    "os/exec"
)

func main() {
    out, err := exec.Command("date").Output()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("The date is %s\n", out)
}

2

0

请访问http://golang.org/pkg/os/exec/#Command查看示例。

您可以通过使用输出缓冲区并将其分配给您创建的cmd的Stdout来尝试,具体如下:

var out bytes.Buffer
cmd.Stdout = &out

然后,您可以使用命令运行它

cmd.Run() 

如果这个程序执行良好(即返回nil),则命令的输出将在out缓冲区中,可以通过获取其字符串版本来获得。
out.String()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接