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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。