在Go中调用外部命令

huangapple go评论120阅读模式
英文:

Calling an external command in Go

问题

在Go语言中,你可以使用os/exec包来调用外部命令。下面是一个示例代码,展示了如何调用外部命令并等待其执行完成后再执行下一条语句:

  1. package main
  2. import (
  3. "fmt"
  4. "os/exec"
  5. )
  6. func main() {
  7. cmd := exec.Command("command", "arg1", "arg2") // 替换为你要执行的命令及参数
  8. err := cmd.Run()
  9. if err != nil {
  10. fmt.Println("命令执行失败:", err)
  11. return
  12. }
  13. fmt.Println("命令执行成功")
  14. }

在上面的代码中,你需要将"command"替换为你要执行的外部命令,"arg1""arg2"替换为命令的参数(如果有的话)。cmd.Run()方法会启动命令并等待其执行完成。如果命令执行成功,你可以在cmd.Run()之后的代码中继续执行其他操作。

请注意,上述代码中的错误处理部分只是简单地打印错误信息。在实际应用中,你可能需要根据具体情况进行更详细的错误处理。

英文:

How can I call an external command in GO?
I need to call an external program and wait for it to finish execution. before the next statement is executed.

答案1

得分: 13

你需要使用exec包:使用Command启动一个命令,并使用Run等待执行完成。

  1. cmd := exec.Command("yourcommand", "some", "args")
  2. if err := cmd.Run(); err != nil {
  3. fmt.Println("Error:", err)
  4. }

如果你只想读取结果,可以使用Output代替Run

英文:

You need to use the exec package : start a command using Command and use Run to wait for completion.

  1. cmd := exec.Command("yourcommand", "some", "args")
  2. if err := cmd.Run(); err != nil {
  3. fmt.Println("Error: ", err)
  4. }

If you just want to read the result, you may use Output instead of Run.

答案2

得分: 2

  1. package main
  2. import (
  3. "fmt"
  4. "os/exec"
  5. "log"
  6. )
  7. func main() {
  8. cmd := exec.Command("ls", "-ltr")
  9. out, err := cmd.CombinedOutput()
  10. if err != nil {
  11. log.Fatal(err)
  12. }
  13. fmt.Printf("%s\n", out)
  14. }

在线尝试

英文:
  1. package main
  2. import (
  3. "fmt"
  4. "os/exec"
  5. "log"
  6. )
  7. func main() {
  8. cmd := exec.Command("ls", "-ltr")
  9. out, err := cmd.CombinedOutput()
  10. if err != nil {
  11. log.Fatal(err)
  12. }
  13. fmt.Printf("%s\n", out)
  14. }

Try online

huangapple
  • 本文由 发表于 2013年8月25日 00:31:11
  • 转载请务必保留本文链接:https://go.coder-hub.com/18420685.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定