Golang - 执行shell脚本,实时输出shell脚本中的日志

Golang - 执行shell脚本,实时输出shell脚本中的日志: 

package mainimport ("bufio""fmt""io""os/exec""strings"
)func SafetyShell(execName string, arg ...string) (string, error) {ex := exec.Command(execName, arg...)result, err := ex.CombinedOutput()if err != nil {return "", err}return strings.TrimSpace(string(result)), nil
}func execSH() bool {execSH := []string{"./exec.sh"}res, err := SafetyShell("/bin/sh", execSH...)fmt.Println(fmt.Sprintf("res: %+v", res))fmt.Println(fmt.Sprintf("err: %+v", err))if err != nil {return false}return true
}func executeShellScript(execName string, arg ...string) error {cmd := exec.Command(execName, arg...)stdout, err := cmd.StdoutPipe()if err != nil {return err}stderr, err := cmd.StderrPipe()if err != nil {return err}if err := cmd.Start(); err != nil {return err}go func() {reader := bufio.NewReader(stderr)for {line, err := reader.ReadString('\n')if err != nil || io.EOF == err {break}fmt.Print(line)}}()reader := bufio.NewReader(stdout)for {line, err := reader.ReadString('\n')if err != nil || io.EOF == err {break}fmt.Print(line)}if err := cmd.Wait(); err != nil {return err}return nil
}func main() {//flag := execSH()//fmt.Println("flag : ", flag)// 可以实时输出shell脚本中的echo输出,和错误输出execSH := []string{"./exec.sh"}err := executeShellScript("/bin/sh", execSH...)if err != nil {fmt.Println("Error:", err)}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/589224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

摩尔线程S80对于软件的支持

摩尔线程对软件的支持 时间:2024年1月1日 显卡型号:MTT S80 主板型号:七彩虹 igame z590 火神 V20 CPU: intel core i5 10400f 内存: 海盗船3600 16*2 存储: 致态1Tb nvme 显卡的驱动是最新的。 游戏 S…

工作纪实40-使用redis的几种姿势

线上查问题看某个redis的key值,记录一下 1.直接使用telnet进行连接(贼拉方便) telnet ip port > auth pwd1.模糊查询 scan 0 MATCH abc* 2.查看所有key keys * 3.ttl key 查看key的ttl2.使用redis-cli连接(费劲吧啦,还需要本地…

C/C++ 函数重载

函数多态是C在C语言的基础新增的功能。默认参数能够使用不同数目的参数调用同一个函数,而函数多态(函数重载)让您能够使用多个同名的函数。术语“多态”指的是有多种形式,因此函数多态允许函数可以有多种形式。类似地,术语“函数重载”指的是…

基于SpringBoot的网上点餐系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的网上点餐系统,java项目…

华为云创新中心,引领浙南的数字化腾飞

编辑:阿冒 设计:沐由 县域经济是我国国民经济的重要组成部分,是推动经济社会全面发展的核心力量之一。在推进中国式现代化的征程中,县域经济扮演的角色也越来越重要。 毫无疑问,县域经济的良性发展,需要多方…

【springboot 事件发布机制源码浅析】

springboot源码分析之事件发布机制浅析 springboot 事件发布机制浅析 文章目录 springboot源码分析之事件发布机制浅析前言一、自定义事件发布1.定义事件2.监听事件3.发布事件 二、源码分析Listener监听器注册事件发布与执行 总结 前言 事件发布机制在Spring Boot框架中扮演着…

数据的确权、流通、入表与监管研究(一):数据与确权(下)

关注WX公众号: commindtech77, 获得数据资产相关白皮书下载地址 1. 回复关键字:数据资源入表白皮书 下载 《2023数据资源入表白皮书》 2. 回复关键字:光大银行 下载 光大银行-《商业银行数据资产会计核算研究报告》 3. 回复关键字…

【NLP论文】02 TF-IDF 关键词权值计算

之前写了一篇关于关键词词库构建的文章,没想到反响还不错,最近有空把接下来的两篇补完,也继续使用物流关键词词库举例,本篇文章承接关键词词库构建并以其为基础,将计算各关键词的 TF-IDF 权值,TF-IDF 权值主…

软件工程PPT 笔记摘录(2)

分析软件需求 UML 提供了用例图来分析和描述用例视角的软件需求模型 UML 提供了交互图和状态图来描述行为视角的软件需求模型 UML 提供了类图来描述和分析业务领域的概念模型 顺序图:强调消息传递的时间序 通信图:突出对象间的合作 类图&#xff0…

掌握C++11标准库(STL):理解STL的核心概念

深入探索C11标准库STL:新特性和优化技巧 一、前言二、容器简介三、迭代器简介四、map与unordered_map(红黑树VS哈希表)4.1、map和unordered_map的差别4.2、优缺点以及适用处4.3、小结 五、总结 一、前言 STL定义了强大的、基于模板的、可复用…

python设计模式:模板方法模式

更多Python学习内容:ipengtao.com 软件设计和编程中,设计模式是一种有助于解决常见问题的强大工具。其中之一是"模板方法模式",它是一种行为型设计模式,允许你定义一个算法的骨架,但将一些步骤的具体实现延迟…

win11 电脑睡眠功能失效了如何修复 win11 禁止鼠标唤醒

1、win11睡眠不管用怎么办,win11电脑睡眠功能失效了如何修复 在win11系统中拥有许多令人激动的新功能和改进,有些用户在使用win11电脑时可能会遇到一个问题:睡眠模式不起作用。当他们尝试将计算机置于睡眠状态时,却发现系统无法进…

HarmonyOS应用程序包快速修复

快速修复概述 快速修复是HarmonyOS系统提供给开发者的一种技术手段,支持开发者以远快于应用升级的方式对应用程序包进行缺陷修复。和全量应用升级软件版本相比,快速修复的主要优势在小、快和用户体验好。在较短的时间内不中断正在运行的应用的情况下&am…

SpringBoot + Vue 抖音全平台项目

简介 本项目是一个短视频平台,拥有热度排行榜,热门视频,兴趣推送,关注推送,内容审核等功能。 源码下载 网盘 (访问密码: 8418) 登录/注册 首页 创作中心 架构设计 上传视频业务流程 视频推送流程 1.用户订阅分类后…

Day02-ES6

一.proxy代理 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head>…

2023总结

随着各大应用程序开始发送自己的年终总结&#xff0c;我的2023也只剩最后的几个小时了 &#xff0c;我的2023可以说是过的还算顺利&#xff0c;但是也算是一路坎坷&#xff0c;希望2024&#xff0c;我的本命年能够让我过的顺利点。 1&#xff0c;毕业进度 毕业进度总体来说还…

聚类:聚类的介绍及k-means算法

聚类&#xff1a;聚类的介绍及k-means算法 什么是聚类 聚类就是在输入为多个数据时&#xff0c;将“相似”的数据分为一组的操作。1 个组就叫作 1 个 “簇”。下面的示例中每个点都代表1 个数据&#xff0c;在平面上位置较为相近、被圈起来的点就代表一 类相似的数据。也就是…

如何为开源项目和社区做贡献 -- 你应该知道的十件事(一)

1. 前言 大家好&#xff0c;我叫颜国进&#xff0c;现为英特尔边缘计算创新大使、百度飞桨开发者专家。回溯至2021年12月&#xff0c;那时的我&#xff0c;身为机械专业研一新生&#xff0c;仅在C和Python编程语言上有些许基础&#xff0c;对于深度学习的殿堂还只敢在门口窥探&…

【动态规划】【字符串】C++算法:正则表达式匹配

作者推荐 视频算法专题 涉及知识点 动态规划 字符串 LeetCode10:正则表达式匹配 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 ‘.’ 和 ‘’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 ’ 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是…

web网站的工作流程和开发模式

web网站的工作流程和开发模式 基于Java Script封装的高级技术&#xff1a;Vue、Element、Nginx(前端程序部署的服务器) 初识Web前端 Web标准