admin 发表于 2021-12-21 23:12:01

golang:执行shell命令1(阻塞执行,等待结果)

■实例说明
我们经常需要执行本地shell命令,或者是执行其他二进制可执行文件
1)执行本地二进制可执行文件
2)阻塞执行,等待执行完成再继续

■实例代码
package main

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

// 执行shell命令
func execShell(cmd string) (string, error) {
      shell := exec.Command("/bin/bash", "-c", cmd)

      // 重定向执行命令的标准输出和标准错误
      var out bytes.Buffer
      shell.Stdout = &out
      shell.Stderr = &out

      // 执行命令,这里会等待命令执行完成
      err := shell.Run()

      // 返回执行结果
      return out.String(), err
}

func main() {
      // 等待10秒,然后输出hello world
      cmd := "sleep 10;echo hello world"
      out, _ := execShell(cmd)
      fmt.Println(out)
      // 输出:hello world

      // test是我本地二进制可执行文件,打印系统参数os.Args
      // 传入参数abc和bcd1
      cmd = "/Users/工具方法/test abc bcd1"
      out, _ = execShell(cmd)
      fmt.Println(out)
      // 输出:
}


页: [1]
查看完整版本: golang:执行shell命令1(阻塞执行,等待结果)