Go: execute bash script

12,490

Solution 1

exec.Command() returns a struct that can be used for other commands like Run

If you're only looking for the output of the command try this:

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

Solution 2

You can also use CombinedOutput() instead of Output(). It will dump standard error result of executed command instead of just returning error code. See: How to debug "exit status 1" error when running exec.Command in Golang

Share:
12,490
user3918985
Author by

user3918985

Updated on June 10, 2022

Comments

  • user3918985
    user3918985 almost 2 years

    How do I execute a bash script from my Go program? Here's my code:

    Dir Structure:

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

    When I run hello.go and call the relevant route, I get this on my console:

    exit status 127 output is

    I'm expecting ["a", "b", "c"]

    I am aware there is a similar question on SO: Executing a Bash Script from Golang, however, I'm not sure if I'm getting the path correct. Will appreciate help!