如何将标志传递给 go lang 中的命令?

我一直在尝试运行命令并解析 golang 中的输出。这是我正在尝试做的一个示例:


包主


import (

        "fmt"

    "os/exec"

)


func main() {

    out,err := exec.Command("ls -ltr").Output()

        if err != nil {

                fmt.Println("Error: %s", err)

        }

    fmt.Printf("%s",out)

}

现在,当我尝试运行“ls -ltr”时,出现此错误:


Error: %s exec: "ls -ltr": executable file not found in $PATH

所以,基本上 go 是在 PATH 中寻找整个“ls -ltr”。它显然不在那里。有什么办法可以将标志传递给任何参数吗?TIA。


呼啦一阵风
浏览 174回答 1
1回答

墨色风雨

您可以通过向函数传递更多参数来向程序传递参数 - 它是可变参数:out,err := exec.Command("ls","-ltr").Output()https://golang.org/pkg/os/exec/#Command这是您将在大多数语言中看到的 exec 样式函数的一个非常常见的约定。另一种常见的模式是建造者。有时,您需要传递的参数布局在编译时是未知的(尽管向系统发送任意命令不是一个好主意 - 保持安全!)。如果要传递未知数量的参数,可以使用具有一些特殊语法的数组:// Populate myArguments however you likemyArguments := []string{"bar","baz"}// Pass myArguments with "..." to use variadic behaviourout,err := exec.Command("foo", myArguments...).Output()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go