У меня есть набор системных команд, которые немного похожи на добавление нового содержимого в файл. Я написал простой script для выполнения системных команд, который хорошо работает, если есть такие слова, как "ls", "date" и т.д. Но если команда больше, программа умирает.
Ниже приведен код
package main
import (
"fmt"
"os/exec"
"sync"
)
func exe_cmd(cmd string, wg *sync.WaitGroup) {
fmt.Println(cmd)
c = cmd.Str
out, err := exec.Command(cmd).Output()
if err != nil {
fmt.Println("error occured")
fmt.Printf("%s", err)
}
fmt.Printf("%s", out)
wg.Done()
}
func main() {
wg := new(sync.WaitGroup)
wg.Add(3)
x := []string{"echo newline >> foo.o", "echo newline >> f1.o", "echo newline >> f2.o"}
go exe_cmd(x[0], wg)
go exe_cmd(x[1], wg)
go exe_cmd(x[2], wg)
wg.Wait()
}
Ниже приведена ошибка, которую я вижу
exec: "echo newline >> foo.o": executable file not found in $PATHexec:
"echo newline >> f2.o": executable file not found in $PATHexec:
"echo newline >> f1.o": executable file not found in $PATH
Я думаю, это может быть связано с тем, что не отправляйте cmds и аргументы отдельно (http://golang.org/pkg/os/exec/#Command). Мне интересно, как подорвать это, так как я не знаю, сколько аргументов будет в моей команде, которая должна быть выполнена.