在Go中调用外部命令

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

Calling an external command in Go

问题

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

package main

import (
	"fmt"
	"os/exec"
)

func main() {
	cmd := exec.Command("command", "arg1", "arg2") // 替换为你要执行的命令及参数

	err := cmd.Run()
	if err != nil {
		fmt.Println("命令执行失败:", err)
		return
	}

	fmt.Println("命令执行成功")
}

在上面的代码中,你需要将"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等待执行完成。

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

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

英文:

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

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

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

答案2

得分: 2

package main

import (
	"fmt"
	"os/exec"
	"log"
)

func main() {
	cmd := exec.Command("ls", "-ltr")
	out, err := cmd.CombinedOutput()
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n", out)
}

在线尝试

英文:
package main

import (
  "fmt"
  "os/exec"
  "log"
)

func main() {
  cmd := exec.Command("ls", "-ltr")
  out, err := cmd.CombinedOutput()
  if err != nil {
    log.Fatal(err)
  }
  fmt.Printf("%s\n", out)
}

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:

确定