Это не работает по двум причинам
args := []string{"go", "install", "&&", "-port", "18000"}
Во-первых, отсутствует имя проекта.Я предполагаю, что это простая опечатка.
Во-вторых, syscall Exec не использует оболочку для запуска команд.Конструкция &&
и запуск нескольких команд из одной строки - это функции оболочки
Чтобы заставить syscall Exec сделать это, вы можете вызвать его, проверить возвращаемое значение и затем вызвать его снова со второй командой
Или вы можете использовать системный вызов Exec для запуска оболочки.Ниже приведен пример запуска оболочки - (с os / exec, но в данном случае это очень похоже) для запуска двух команд с &&
package main
import (
"fmt"
"os/exec"
)
func main() {
args := []string{"-c", "touch a && ls -l"}
cmd := exec.Command("bash", args...)
stuff, err := cmd.Output()
fmt.Printf("Command finished with error: %v", err)
fmt.Printf("%s", string(stuff))
}