Метод exec.Cmd.Run

Метод exec.Cmd.Run запускает команду, представленную структурой Cmd, и ожидает ее завершения. В первый параметр метод не принимает никаких значений, он работает с уже сконфигурированным экземпляром Cmd. Метод возвращает ошибку типа error, которая будет равна nil, если команда завершилась успешно. В случае ошибки возвращается подробное описание проблемы.

Синтаксис

goerr := cmd.Run()

Пример

Давайте запустим команду echo с аргументом и дождемся ее завершения:

gopackage main

import (
  "os/exec"
  "fmt"
)

func main() {
  cmd := exec.Command("echo", "Hello, World!")
  err := cmd.Run()
  if err != nil {
    fmt.Println("Error:", err)
  } else {
    fmt.Println("Command executed successfully")
  }
}

Результат выполнения кода:

go"Command executed successfully"

Пример

Давайте попробуем запустить несуществующую команду и обработаем ошибку:

gopackage main

import (
  "os/exec"
  "fmt"
)

func main() {
  cmd := exec.Command("nonexistent-command")
  err := cmd.Run()
  if err != nil {
    fmt.Println("Error occurred:", err)
  } else {
    fmt.Println("Command executed successfully")
  }
}

Результат выполнения кода:

go"Error occurred: exec: \"nonexistent-command\": executable file not found in $PATH"

Пример

Давайте запустим команду, которая завершится с ошибкой, и обработаем этот случай:

gopackage main

import (
  "os/exec"
  "fmt"
)

func main() {
  cmd := exec.Command("ls", "/nonexistent-directory")
  err := cmd.Run()
  if err != nil {
    fmt.Println("Command failed:", err)
  } else {
    fmt.Println("Command executed successfully")
  }
}

Результат выполнения кода:

go"Command failed: exit status 2"

Смотрите также

  • метод exec.Cmd.Start,
    который запускает команду без ожидания завершения
  • метод exec.Cmd.Wait,
    который ожидает завершения уже запущенной команды
  • метод exec.Cmd.Output,
    который запускает команду и возвращает ее стандартный вывод
  • метод exec.Cmd.CombinedOutput,
    который запускает команду и возвращает объединенный вывод