安装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.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 ' %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)
字段串里面有双引号,转义符,你想要让这些含有特殊意义的字符变成普通字符就用``,让他愣是啥都不会转义。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)