РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1436 of 1593 menu

Функция exec.Command

Функция exec.Command подготавливает команду для выполнения в операционной системе. Она принимает имя исполняемого файла и его аргументы, возвращая указатель на структуру exec.Cmd. Первый параметр - это имя команды или путь к исполняемому файлу, последующие параметры - это аргументы для команды. Важно помнить, что функция только готовит команду, но не запускает её. Для фактического выполнения необходимо вызвать один из методов структуры exec.Cmd, таких как Run, Output или CombinedOutput.

Синтаксис

exec.Command(name string, arg ...string) *exec.Cmd

Базовый пример

Давайте выполним команду echo с аргументом "Hello, World!" и выведем результат:

package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("echo", "Hello, World!") output, err := cmd.Output() if err != nil { fmt.Println("Error:", err) return } fmt.Println(string(output)) }

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

"Hello, World!\n"

Пример с несколькими аргументами

Давайте выполним команду ls с флагами -la для вывода содержимого текущей директории:

package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("ls", "-la") output, err := cmd.Output() if err != nil { fmt.Println("Error:", err) return } fmt.Println(string(output)) }

Результат выполнения кода (зависит от содержимого директории):

"total 0\ndrwxr-xr-x ..."

Пример с обработкой ошибок

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

package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("nonexistentcommand") err := cmd.Run() if err != nil { fmt.Println("Error:", err) } }

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

"Error: exec: \"nonexistentcommand\": executable file not found in $PATH"

Пример с использованием CombinedOutput

Давайте выполним команду, которая выводит данные как в stdout, так и в stderr, используя метод CombinedOutput:

package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("sh", "-c", "echo stdout && echo stderr >&2") output, err := cmd.CombinedOutput() if err != nil { fmt.Println("Error:", err) } fmt.Println(string(output)) }

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

"stdout\nstderr\n"

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

  • функцию exec.CommandContext,
    которая выполняет команду с контекстом и поддержкой отмены
  • функцию exec.LookPath,
    которая проверяет, доступен ли исполняемый файл в системных путях
  • метод exec.Cmd.Run,
    который запускает команду и ожидает её завершения
  • метод exec.Cmd.Output,
    который выполняет команду и возвращает её стандартный вывод
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить