golang执行linux命令
-
要在Golang中执行Linux命令,可以使用`os/exec`包提供的函数和方法来实现。
首先,我们需要导入`os/exec`包:
“`go
import (
“fmt”
“os/exec”
)
“`然后,可以使用`Command`函数创建一个`Cmd`类型的命令对象。我们可以指定要执行的命令和命令的参数:
“`go
cmd := exec.Command(“ls”, “-l”)
“`在上面的例子中,我们创建了一个`ls -l`命令对象。
接下来,我们可以使用`Run`方法来执行命令,并等待命令执行完成:
“`go
err := cmd.Run()
if err != nil {
fmt.Printf(“命令执行出错:%v\n”, err)
return
}
“`如果命令执行成功,没有出错,则可以继续处理命令的输出。可以使用`Stdout`和`Stderr`字段来获取命令的标准输出和标准错误输出:
“`go
stdout, err := cmd.StdoutPipe()
if err != nil {
fmt.Printf(“获取命令输出出错:%v\n”, err)
return
}stderr, err := cmd.StderrPipe()
if err != nil {
fmt.Printf(“获取命令错误输出出错:%v\n”, err)
return
}
“`然后,可以使用`bufio`的`NewScanner`函数来读取输出:
“`go
stdoutScanner := bufio.NewScanner(stdout)
stderrScanner := bufio.NewScanner(stderr)go func() {
for stdoutScanner.Scan() {
fmt.Println(stdoutScanner.Text())
}
}()go func() {
for stderrScanner.Scan() {
fmt.Println(stderrScanner.Text())
}
}()// 等待命令的输出读取完成
err = cmd.Wait()
if err != nil {
fmt.Printf(“等待命令执行完成出错:%v\n”, err)
return
}
“`如果想要捕获命令的退出码,可以使用`ExitCode`方法:
“`go
exitCode := cmd.ProcessState.ExitCode()
fmt.Printf(“命令退出码:%v\n”, exitCode)
“`以上就是在Golang中执行Linux命令的简单示例。可以根据实际需要调整代码,处理命令执行结果和错误输出。
2年前