Выполнить любую команду в Bash - PullRequest
0 голосов
/ 16 октября 2019

Я хочу, чтобы программа Go запускала команду (включая встроенные команды) в терминале bash, а также отображала ее в самом терминале, как

$ls
trial.go output.txt hello.txt
$pwd
/home/bb/cc
$go run trial.go pwd
/home/bb/cc
$go run trial.go cd ..
$pwd
/home/bb

Как вы можете видеть, скрипт golangпринимает команду в качестве ввода и выполняет ее в том же терминале и среде, а также отображает вывод

Я пробовал приведенный ниже код, но он не работает для встроенных команд

cmd := exec.Command("<the input command>")
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    err := cmd.Run()
    if err != nil {
        log.Fatalf("cmd.Run() failed with %s\n", err)
    }

Простыми словами, строка ввода будет вставлена ​​в терминал и будет выполнена.

1 Ответ

1 голос
/ 17 октября 2019

Это работает для команд «одно слово», может быть, вы можете исправить это, чтобы работать с большим количеством слов. Надеюсь полезно.

package main

import (
"fmt"
"log"
"os/exec"
)

func main() {
    for {
    fmt.Println("Please introduce one word command (ls for example)")
    var command string
    fmt.Scan(&command)

    out, err := exec.Command(command).Output()
    if err != nil {
            log.Fatal(err)
    }
    fmt.Printf("Your output is: %s/n",out)
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...