当前位置: 首页 > 面试题库 >

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

钱展
2023-03-14
问题内容

我一直在尝试运行命令并解析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()


 类似资料:
  • 问题内容: 我正在用C语言编写一个Python扩展,它需要CoreFoundation框架(除其他外)。可以使用以下命令进行编译: (“ -framework”是仅适用于Apple的gcc扩展,但这没关系,因为无论如何我都在使用它们的特定框架) 我如何告诉setup.py将此标志传递给gcc? 我尝试了这个,但是它似乎不起作用(它可以编译,但是当我尝试运行它时会抱怨未定义的符号): 编辑: 这似乎

  • 问题内容: 我需要稍后再运行一个mail.php文件,而不是让用户在提交register.php时等待发送验证电子邮件。 因此,我选择在1分钟后使用 at 命令在命令行中运行mail.php( 在register.php 中 调用 ): 但是,当我处于at命令的交互模式时,我只能将参数发送到该php文件。 由于我希望这是自动的,因此我需要在运行时使用shell脚本: 但是我找不到传递 {email

  • 问题内容: 假设我Button在Python中使用进行了以下操作: 当我按下按钮时会调用该方法,但是如果我想向该方法传递一些参数呢? 我尝试使用以下代码: 这只是立即调用该方法,而按该按钮则无济于事。 问题答案: 我个人更喜欢lambdas在这种情况下使用,因为imo更加简单明了,并且如果你无法控制被调用的方法,也不会强迫你编写很多包装方法,但这当然是一个问题。 这就是使用lambda的方式(请注

  • 我是ansible的新手,不知道如何做到这一点,因为以下内容不起作用 其中,是我的变量。

  • 是否有方法将命令行参数传递给Gradle中的buildSrc项目。buildSrc位于主项目中,如果我用-p传递命令行args,那么主项目将接收它们,但不接收buildSrc。我需要这样做的原因是,我试图将maven Repository的凭据传递给buildSrc,buildSrc反过来使用它来解决其子项目的依赖关系。