- 搭建环境,运行dome
- go执行shell命令
- 一个demo
- 文件操作
- 解压文件
- 打包文件
- 文件内容替换
安装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文件 ./工程名称
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 ' rest.txt
substr := fmt.Sprintf("sed -i '%ss/>.*> %s ' %sn",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)
字段串里面有双引号,转义符,你想要让这些含有特殊意义的字符变成普通字符就用``,让他愣是啥都不会转义。



