I am trying to create a generic function in go that takes in input a shell command (with arguments) and execute it.
Note the shell commands may have a different number of arguments.
I understand that the exec.Command()
in Go takes as input the format ("ls", "-la", "/var")
for the command + arguments.
This code snipped below doesn't work:
func exe_cmd(commandarray []string) {
var shell_command string = ""
for i := 0; i < len(commandarray); i++ {
shell_command = shell_command + " " + commandarray[i]
}
cmd := exec.Command(shell_command)
fmt.Println("Command is: ", shell_command)
fmt.Printf("==> Executing: %s
", strings.Join(cmd.Args, " "))
out, err := cmd.Output()
fmt.Printf("OutVar: %s
", out)
fmt.Printf("ErrVar: %s
", err)
}
func dummy() {
dummycmd := []string{"ls", "-la", "/var"}
exe_cmd(dummycmd)
}
A the end of the for
the shell_command
variable will contain "ls -la /var"
and I am having a hard time to figure out how to form it in a way that is what the input format requires i.e. "ls", "-la", "/var"
I have also tried to set dummycmd
as a variable with "ls -la /var"
but I figure that was even worse if requirement is to pass it to the exec.Command in the format above.
Thoughts?
Thanks.