当前位置: 首页 > news >正文

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

所需包:

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()

例子:

package mainimport ("fmt""os/exec")func main() {cmd := exec.Command("ls")cmd.Stdout = os.Stdout  //把cmd的输出指向标准输出,不然控制台看不到cmd.Stderr = os.Stderr   //把cmd的错误输出指向标准错误输出,不然控制台看不到e := cmd.Run()CheckError(e)}func CheckError(e error) {if e != nil {fmt.Println(e)}}

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

需要导入运行时包。

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

if runtime.GOOS == "linux" {

 cmd = exec.Command("ls")

}

命令封装

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

相关文章:

  • 机器人制作开源方案 | 智能落叶清扫机器人
  • 【unity实战】一个通用的FPS枪支不同武器射击控制脚本
  • 如何保证架构的质量
  • Android Uri scheme协议file转content
  • [最后一个月征稿、ACM独立出版】第三届密码学、网络安全和通信技术国际会议(CNSCT 2024)
  • Crocoddyl: 多接触最优控制的高效多功能框架
  • STM32_启动流程详解
  • 【数据库设计和SQL基础语法】--连接与联接--多表查询与子查询基础(一)
  • k8s中ConfigMap、Secret创建使用演示、配置文件存储介绍
  • 面试算法61:和最小的k个数对
  • 保姆级 Keras 实现 YOLO v3 三
  • Linux学习(1)——初识Linux
  • Groovy基础学习2
  • 基于QTreeWidget实现带Checkbox的多级组织结构选择树
  • Redis-数据结构
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • idea + plantuml 画流程图
  • Js基础知识(四) - js运行原理与机制
  • Js基础知识(一) - 变量
  • Mysql数据库的条件查询语句
  • PhantomJS 安装
  • Redis的resp协议
  • Vue2 SSR 的优化之旅
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 记一次用 NodeJs 实现模拟登录的思路
  • 前端技术周刊 2019-02-11 Serverless
  • 使用Swoole加速Laravel(正式环境中)
  • 微信小程序填坑清单
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 正则与JS中的正则
  • k8s使用glusterfs实现动态持久化存储
  • (pytorch进阶之路)扩散概率模型
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (转)linux 命令大全
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • . Flume面试题
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .Net7 环境安装配置
  • .netcore 获取appsettings
  • .NET导入Excel数据
  • .Net下的签名与混淆
  • @Bean注解详解
  • @JoinTable会自动删除关联表的数据
  • [ 转载 ] SharePoint 资料
  • [20161101]rman备份与数据文件变化7.txt
  • [20170705]diff比较执行结果的内容.txt