Bash 将命令作为输入并在终端中运行的程序

Bash 将命令作为输入并在终端中运行的程序,bash,go,Bash,Go,我知道如何在C中实现这一点,但是如何在Go中实现呢 这是我正在使用的代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_CMN_LEN 100 int main(int argc, char *argv[]) { char cmd[MAX_CMN_LEN] = "", **p; if (argc < 2) /*no command sp

我知道如何在C中实现这一点,但是如何在Go中实现呢

这是我正在使用的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_CMN_LEN 100

int main(int argc, char *argv[])
{
    char cmd[MAX_CMN_LEN] = "", **p;

    if (argc < 2) /*no command specified*/
    {
        fprintf(stderr, "Usage: ./program_name terminal_command ...");
        exit(EXIT_FAILURE);
    }
    else
    {
        strcat(cmd, argv[1]);
        for (p = &argv[2]; *p; p++)
        {
            strcat(cmd, " ");
            strcat(cmd, *p);
        }
        system(cmd);
    }

    return 0;
}
#包括
#包括
#包括
#定义最大CMN长度100
int main(int argc,char*argv[])
{
char cmd[MAX\u CMN\u LEN]=“”,**p;
如果(argc<2)/*未指定命令*/
{
fprintf(stderr,“用法:./program_name terminal_command…”);
退出(退出失败);
}
其他的
{
strcat(cmd,argv[1]);
for(p=&argv[2];*p;p++)
{
strcat(cmd,“”);
strcat(cmd,*p);
}
系统(cmd);
}
返回0;
}
类似这样的内容:

package main

import (
    "os"
    "os/exec"
)

func main() {
    if len(os.Args) < 2 {
        panic("Usage: ./program_name terminal_command ...")
    }

    cmd := exec.Command(os.Args[1], os.Args[2:]...)
    cmd.Run()
}
主程序包
进口(
“操作系统”
“os/exec”
)
func main(){
如果len(os.Args)<2{
死机(“用法:./程序名称终端命令…”)
}
cmd:=exec.Command(os.Args[1],os.Args[2:]…)
cmd.Run()
}

在C中,我只需将
argc
传递给
execvp
即可,而不是调用
system
,这将使命令服从shell解释。你想从
go
中获得哪种行为?@williampersell我想做同样的事情,但要使用GOlang。我一直在做一些研究,发现可以使用go提供的ssh包来完成。但我不知道到底是怎么回事?