2017-04-09 36 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() 
} 
相關問題