我一直在尝试运行命令并解析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。
您可以通过将更多参数传递给函数来将参数传递给程序-它是可变的:
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()