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
Author by
user3918985
Updated on June 10, 2022Comments
-
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!