您现在的位置是:首页 > 技术教程 正文

【golang】go执行shell命令行的方法( exec.Command )

admin 阅读: 2024-03-18
后台-插件-广告管理-内容页头部广告(手机)

所需包:

import "os/exec"

cmd的用法:

 cmd := exec.Command("ls", "-lah")      //ls是命令,后面是参数

 e := cmd.Run()

多个参数的要分开传入:

如:ip link show bond0

cmd :=exec.Command("ip","link","show","bond0")

复杂参数使用fmt.Sprintf拼接:

 cmd := exec.Command("cat", fmt.Sprintf("/sys/class/net/%s/bonding/slaves", bondName))

cmd的两种运行方式:

Run​​ 函数启动指定命令并等待它完成,而 ​​Start​​ 启动指定命令但不等待它完成;

 e := cmd.Run()

 e := cmd.Start()

例子:

  1. package main
  2. import (
  3.  "fmt"
  4.  "os/exec"
  5. )
  6. func main() {
  7. cmd := exec.Command("ls")
  8. cmd.Stdout = os.Stdout  //把cmd的输出指向标准输出,不然控制台看不到
  9. cmd.Stderr = os.Stderr   //把cmd的错误输出指向标准错误输出,不然控制台看不到
  10.  e := cmd.Run()
  11.  CheckError(e)
  12. }
  13. func CheckError(e error) {
  14.  if e != nil {
  15.  fmt.Println(e)
  16.  }
  17. }

为不同的操作系统指定命令

需要导入运行时包。

要查看所有可能的操作系统,我们可以运行 ​​go tool dist list​​ ,它将显示所有可能的操作系统和 ARCH 组合。

if runtime.GOOS == "linux" {

 cmd = exec.Command("ls")

}

命令封装

见:《golang exec.Command 执行命令用法实例》https://blog.csdn.net/whatday/article/details/109277998

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索