栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

go 执行shell 命令

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

go 执行shell 命令

go 执行shell 命令
  • 搭建环境,运行dome
  • go执行shell命令
    • 一个demo
    • 文件操作
      • 解压文件
      • 打包文件
      • 文件内容替换

搭建环境,运行dome

安装go,设置path,go_path
参考文章:linux下GO的环境搭建及go代码程序编译示例
.bashrc写入

创建go项目
~/projects/goprj/test/src/packs# mkdir test
写入内容

package main

import (
	"fmt"
)

func main () {
	fmt.Println("aaaa")
}


编译:go install packs/test
运行:
进入bin文件 ./工程名称

go执行shell命令 一个demo
func main() {
	in := bytes.NewBuffer(nil)
	cmd := exec.Command("sh")
	cmd.Stdin = in
	in.WriteString("echo hello world > /home/aadmin/doc/res.txtn")
	in.WriteString("exitn")
	if err := cmd.Run();
		err != nil{
		fmt.Println("ERROR--> fail to write something to file, msg:"+err.Error())
		return
	}else{
		fmt.Println("SUCCESS--> the file is written something")
	}
}

执行shell封装

func Exec(command string) error {
	in := bytes.NewBuffer(nil)
	cmd := exec.Command("sh")
	cmd.Stdin = in
	in.WriteString(command)
	in.WriteString("exitn")
	if err := cmd.Run();
		err != nil{
		return err
	}
	return nil
}
文件操作 解压文件
//"cd /mnt/hgfs/test && tar xf 1111tgz && rm -rf 1111.tgzn"
cdPackStr := "cd /mnt/hgfs/test && tar xf 1111.tgz && rm -rf 1111.tgzn"
in.WriteString(cdPackStr)
打包文件
packstr := "sleep 3 && tar cf 1111.tgz 1111 && rm -rf 1111n"
in.WriteString(packstr)

为什么要sleep,我做的是修改打包文件的内容,首先要解压,然后进入文件去修改信息,修改完后打包。sleep就是让修改的命令全都执行了,再去执行打包命令。

文件内容替换

xml文件内容替换

//替换xml的文件内容 行,匹配内容 替换内容
//sed -i '1s/>.* aaa .* %s  

yaml文件内容替换

//替换yaml的文件内容 行,匹配内容 替换内容
//sed -i '3s/".*"/"1111"/' rest.txt
substr = "sed -i '"+line+"s/"+`".*"/"`+updatemsg+`"/' `+fileName+"n"
in.WriteString(substr)
fmt.Print("执行命令:",substr)

字段串里面有双引号,转义符,你想要让这些含有特殊意义的字符变成普通字符就用``,让他愣是啥都不会转义。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/903626.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号