当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


GO Command用法及代码示例

GO语言"os/exec"包中"Command"函数的用法及代码示例。

用法:

func Command(name string, arg ...string) *Cmd

命令返回 Cmd 结构以执行具有给定参数的命名程序。

它仅在返回的结构中设置 Path 和 Args。

如果 name 不包含路径分隔符,Command 会尽可能使用 LookPath 将 name 解析为完整路径。否则它直接使用名称作为路径。

返回的 Cmd 的 Args 字段由命令名称后跟 arg 的元素构成,因此 arg 不应包含命令名称本身。例如,命令("echo"、"hello")。 Args[0] 始终是名称,而不是可能解析的路径。

在 Windows 上,进程将整个命令行作为单个字符串接收并进行自己的解析。 Command 使用与使用CommandLineToArgvW 的应用程序兼容的算法(这是最常见的方式)将 Args 组合表示到命令行字符串中。值得注意的例外是 msiexec.exe 和 cmd.exe(以及所有批处理文件),它们具有不同的取消引用算法。在这些或其他类似情况下,您可以自己进行引用并在SysProcAttr CmdLine 中提供完整的命令行,将 Args 留空。

例子:

package main

import (
    "bytes"
    "fmt"
    "log"
    "os/exec"
    "strings"
)

func main() {
    cmd := exec.Command("tr", "a-z", "A-Z")
    cmd.Stdin = strings.NewReader("some input")
    var out bytes.Buffer
    cmd.Stdout = &out
    err := cmd.Run()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("in all caps: %q\n", out.String())
}

示例(环境):

package main

import (
    "log"
    "os"
    "os/exec"
)

func main() {
    cmd := exec.Command("prog")
    cmd.Env = append(os.Environ(),
        "FOO=duplicate_value", // ignored
        "FOO=actual_value",    // this value is used
    )
    if err := cmd.Run(); err != nil {
        log.Fatal(err)
    }
}

相关用法


注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 Command。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。