簡體   English   中英

Go:執行bash腳本

[英]Go: execute bash script

如何從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並調用相關路徑時,我在控制台上得到了這個:

exit status 127 output is

我期待[“a”,“b”,“c”]

我知道在SO上有一個類似的問題: 從Golang執行一個Bash腳本 ,但是,我不確定我是否正確的路徑。 將不勝感激!

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)
}

您也可以使用CombinedOutput()而不是Output()。 它將轉儲執行命令的標准錯誤結果,而不是僅返回錯誤代碼。 請參閱: 在Golang中運行exec.Command時如何調試“退出狀態1”錯誤

請查看http://golang.org/pkg/os/exec/#Command上的示例

您可以嘗試使用輸出緩沖區並將其分配給您創建的cmd的Stdout,如下所示:

var out bytes.Buffer
cmd.Stdout = &out

然后,您可以使用命令運行

cmd.Run() 

如果執行正常(意味着它返回nil),則命令的輸出將在out緩沖區中,其字符串版本可以通過

out.String()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM