为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
呼啦一阵风 2021-11-08 10:16:50
我一直在尝试运行命令并解析 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。
查看完整描述

1 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

您可以通过向函数传递更多参数来向程序传递参数 - 它是可变参数:


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

https://golang.org/pkg/os/exec/#Command


这是您将在大多数语言中看到的 exec 样式函数的一个非常常见的约定。另一种常见的模式是建造者。


有时,您需要传递的参数布局在编译时是未知的(尽管向系统发送任意命令不是一个好主意 - 保持安全!)。如果要传递未知数量的参数,可以使用具有一些特殊语法的数组:


// Populate myArguments however you like

myArguments := []string{"bar","baz"}


// Pass myArguments with "..." to use variadic behaviour

out,err := exec.Command("foo", myArguments...).Output()


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信