登录
首页 >  Golang >  Go问答

执行任意命令的bash操作

来源:stackoverflow

时间:2024-03-28 23:54:28 157浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《执行任意命令的bash操作》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我希望 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("")
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    err := cmd.Run()
    if err != nil {
        log.Fatalf("cmd.Run() failed with %s\n", err)
    }

简单来说,输入字符串将被粘贴到终端中并被执行。


解决方案


这适用于“一个单词”命令,也许您可​​以修复它以处理更多单词。希望是有用的。

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)
    }
 }

好了,本文到此结束,带大家了解了《执行任意命令的bash操作》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>