go 执行shell 命令

go 执行shell 命令,第1张

go 执行shell 命令 搭建环境,运行domego执行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.txt\n")
	in.WriteString("exit\n")
	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封装

/*
Exec:执行命令
输入参数:执行命令
 */
func Exec(command string) error {
	in := bytes.NewBuffer(nil)
	cmd := exec.Command("sh")
	cmd.Stdin = in
	in.WriteString(command)
	in.WriteString("exit\n")
	if err := cmd.Run();
		err != nil{
		return err
	}
	return nil
}
文件 *** 作 解压文件
//"cd /mnt/hgfs/test && tar xf 1111tgz && rm -rf 1111.tgz\n"
cdPackStr := "cd /mnt/hgfs/test && tar xf 1111.tgz && rm -rf 1111.tgz\n"
in.WriteString(cdPackStr)
打包文件
packstr := "sleep 3 && tar cf 1111.tgz 1111 && rm -rf 1111\n"
in.WriteString(packstr)

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

文件内容替换

xml文件内容替换

//替换xml的文件内容 行,匹配内容 替换内容
//sed -i '1s/>.* aaa  rest.txt
substr := fmt.Sprintf("sed -i '%ss/>.* %s \n",line,updatemsg,fileName)
in.WriteString(substr)
fmt.Print("执行命令:",substr)

yaml文件内容替换

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/990404.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存