我一直在尝试运行命令并解析 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()
- 1 回答
- 0 关注
- 173 浏览
添加回答
举报
0/150
提交
取消