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

标签 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 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;
}

最佳答案

像这样:

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

关于bash - 将命令作为输入并在终端中运行的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43307491/

相关文章:

bash - 我需要一些关于 SRT 字幕文本处理的想法

bash - 带有 "-pattern_type glob"和 bash 脚本中的变量的 ffmpeg

linux - go-scp 库无法工作,但 scp 工作正常

Golang 的 Github Oauth token

http - http.HandleFunc始终匹配“/”

json - Bash 脚本输出 JSON 变量到文件

xml - sed 查找并替换 xml 文件中的值

multithreading - Perl 或 Bash 线程池脚本?

memory - Go:重用映射键时会占用大量内存

go - 如何在go中动态更改函数参数类型