通过exec.Command在控制台中工作

时间:2014-11-10 18:25:26

标签: go console

请帮忙。我必须使用一定数量的参数传递控制台突击队。有很多。

那就是理想情况下应该如下: test.go --distr 例如: test.go --distr mc curl cron

我创建功能

 func chroot_create() {
        cmd := exec.Command("urpmi",
                "--urpmi-root",
                *fldir,
                "--no-verify-rpm",
                "--nolock",
                "--auto",
                "--ignoresize",
                "--no-suggests",
                "basesystem-minimal",
                "rpm-build",
                "sudo",
                "urpmi",
                "curl")
        if err := cmd.Run(); err != nil {
                log.Println(err)
        }
}

通过flag.Parse()

捕获参数distr

我如何摆脱                  “rpm-build程序”,                  “命令”,                  “URPMI”                  “卷曲”) 这不会与计数数据包绑定。请原谅我愚蠢,我刚开始学习golang。特别是当出现问题时。

完整代码http://pastebin.com/yeuKy8Cc

1 个答案:

答案 0 :(得分:0)

您正在寻找...运营商。

func lsElements(elems ...string) {
        cmd := exec.Command("ls", append([]string{"-l", "-h", "/root"}, elems...)...)
        if err := cmd.Run(); err != nil {
                log.Println(err)
        }
}

您收到函数参数...string,它实际上是[]string,除了当您调用该函数时,您将单独传递字符串。

为了使用它,(并且它适用于任何切片),您可以将切片“转换”为具有...后缀的元素列表。

对于exec,如果你只有这个,你可以直接使用elem...。但是,如果您还有固定参数,则需要使用append构建切片并使用...

将其延伸回来

示例:http://play.golang.org/p/180roQGL4a