2017-04-09 22 views
-2

我知道如何在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; 
} 
+0

在C中,我将通过传递'argc'到'execvp'而不是调用做到这一点'系统',它将命令shell解释。你想从'go'中选择哪种行为? –

+0

@WilliamPursell我想做同样的事情,但使用GOlang。我一直在做一些研究,发现可以使用go提供的ssh包来完成。但我无法弄清楚究竟如何? –

回答

1

事情是这样的:

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() 
} 
相关问题