Golang bash脚本自动创建一个go工程
原作者的代码里面,存在智能引号问题,所以他的代码并不能正常运行;
这个是我微调后的版本。
代码如下:
- #!/bin/bash
- #————————————–
- # Module : mk_go_pro.sh
- # Author : Blair Zhong
- # Created : 2013.07.
- # Modify :
- # Version : 1.0
- # Useage : ./mk_go_pro.sh
- # ./mk_go_pro.sh porject_name
- # Description: 创建一个go可编译的工程
- #————————————–
- # 根据 Go语言学习园地博客的帖子编写,如有侵权请联系本人
- # http://blog.studygolang.com/2012/12/go项目的目录结构/
- # 默认情况下运行本程序,会生成如下目录和文件
- # test
- # ├── bin
- # ├── install.sh
- # ├── pkg
- # └── src
- # ├── config
- # │ └── config.go
- # └── test
- # └── main.go
- #
- # directories, files
- #
- # 其中:
- # , install.sh为安装文件,
- # , config.go为test项目的配置文件
- # , main.go这个你懂的
- # 生成完毕之后运行进入test目录,运行install.sh会生成如下文件和目录
- # ├── bin
- # │ └── test
- # ├── install.sh
- # ├── pkg
- # │ └── darwin_amd64
- # │ └── config.a
- # └── src
- # ├── config
- # │ └── config.go
- # └── test
- # └── main.go
- # directories, files
- #
- # 多了两个文件
- # , bin目录下的test,这个是可执行稳健
- # , pkg/darwin_amd64下的config.a,这个是config编译后产生的文件
- #
- # enjoy it!
- PWD=$(pwd)
- cd $PWD
- if [[ "$1" = "" ]]; then
- echo "Useage: ./mk_go_pro.sh porject_name"
- echo -ne "Please input the Porject Name[test]"
- read Answer
- if [ "$Answer" = "" ]; then
- echo -e "test";
- PRO_NAME=test;
- else
- PRO_NAME=$Answer;
- fi
- else
- PRO_NAME=$;
- fi
- #创建目录
- echo "Init Directory …"
- mkdir -p $PRO_NAME/bin
- mkdir -p $PRO_NAME/pkg
- mkdir -p $PRO_NAME/src/config
- mkdir -p $PRO_NAME/src/$PRO_NAME
- #创建install文件
- echo "Create install/install.sh …"
- cd $PRO_NAME
- echo '#!/bin/bash' > install.sh
- echo 'if [ ! -f install.sh ]; then' >> install.sh
- echo "echo 'install must be run within its container folder' 1>&2" >> install.sh
- echo "exit 1" >> install.sh
- echo "fi" >> install.sh
- echo >> install.sh
- echo "CURDIR=\`pwd\`" >> install.sh
- echo "OLDGOPATH=\"\$GOPATH\"" >> install.sh
- echo "export GOPATH=\"\$CURDIR\"" >> install.sh
- echo >> install.sh
- echo "gofmt -w src" >> install.sh
- echo "go install $PRO_NAME" >> install.sh
- echo "export GOPATH=\"\$OLDGOPATH\"" >> install.sh
- echo >> install.sh
- echo "echo 'finished'" >>install.sh
- chmod +x install.sh
- #创建config.go文件
- echo "Create src/config/config.go …"
- cd src/config
- echo package config > config.go
- echo >> config.go
- echo func LoadConfig\(\) { >> config.go
- echo >> config.go
- echo } >> config.go
- #创建main.go
- echo "Create src/$PRO_NAME/main.go …"
- cd ../$PRO_NAME/
- echo "package main" > main.go
- echo >> main.go
- echo "import (" >> main.go
- echo " \"config\"" >> main.go
- echo " \"fmt\"" >> main.go
- echo ")" >> main.go
- echo >> main.go
- echo "func main() {" >> main.go
- echo " config.LoadConfig()" >> main.go
- echo " fmt.Println(\"Hello $PRO_NAME!\")" >> main.go
- echo "}" >> main.go
- echo "All Done!"
参考链接:http://blog.studygolang.com/2012/12/go%E9%A1%B9%E7%9B%AE%E7%9A%84%E7%9B%AE%E5%BD%95%E7%BB%93%E6%9E%84/ 作者的评论在13楼
转载请注明出处:http://www.cnblogs.com/ficow/p/6553344.html
Golang bash脚本自动创建一个go工程的更多相关文章
- 创建一个Android工程
Creating an Android Project 原文演示了怎么通过Android Studio和命令行两种方式来创建一个Android工程. 原文链接:http://developer.and ...
- 使用idea创建一个maven工程
使用idea创建一个maven工程 一.创建maven工程 二.输入工程名 三.指定maven仓库 四.点击finish 五.修改工程结构(file->project structure) 六. ...
- Eclipse创建一个mybatis工程实现连接数据库查询
Eclipse上创建第一mybatis工程实现数据库查询 步骤: 1.创建一个java工程 2.创建lib文件夹,加入mybatis核心包.依赖包.数据驱动包.并为jar包添加路径 3.创建resou ...
- 利用Zynq Soc创建一个嵌入式工程
英文题目:Using the Zynq SoC Processing System,参考自ADI的ug1165文档. 利用Zynq Soc创建一个嵌入式工程,该工程总体上包括五个步骤: 步骤一.新建空 ...
- django学习笔记【001】django版本的确定&创建一个django工程
2.3 查看当前的django版本 python3. -m django --version 2.3.1 创建一个django工程 django-admin startproject mysite 在 ...
- 使用Idea第一次创建一个Mavne工程时没有src目录
在使用idea创建一个maven工程时没有src目录,可能出现的问题很多,我先把我自己的问题分享上来 因为没有src,可能是因为maven插件还没下载到本地仓库.maven插件的版本和jdk版本冲突或 ...
- 通过node指令自动创建一个package.json文件,并封装发布使用
通过node指令自动创建一个package.json文件,并封装发布使用:https://blog.csdn.net/scu_cindy/article/details/78208268
- 创建一个Portlet工程
使用Liferay的SDK创建一个简单的Portlet,此Portlet不包括业务逻辑.不包括数据库,只有简单的页面展现,用以说明Portlet的开发过程. 一.创建Portlet工程 1.打开Lif ...
- UE4编程之C++创建一个FPS工程(一)创建模式&角色&处理输入
转自:http://blog.csdn.net/u011707076/article/details/44180951 从今天开始,我们一起来学习一下,如何使用C++将一个不带有任何初学者内容的空模板 ...
随机推荐
- Linux下异常信号
我们介绍一些标准信号的名称以及它们代表的事件.每一个信号名称是一个代表正整数的宏,但是你不要试图去推测宏代表的具体数值,而是直接使用名称.这是因为这个数值会随不同的系统或同样系统的不同版本而不同,但是 ...
- 仿苹果app下载动画-煎饼
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Spring Boot应用的启动和停止(Spring Boot应用通过start命令启动)
Spring Boot,作为Spring框架对“约定优先于配置(Convention Over Configuration)”理念的最佳实践的产物,它能帮助我们很快捷的创建出独立运行.产品级别的基于S ...
- System表空间大小有10Gb,使用率达到95%,
System表空间大小有10Gb,使用率达到95%,很好奇, 随后执行如下SQL,查看system表空间中使用空间最多的对象 SQL>SELECT * FROM DBA_SEGMENTS T W ...
- 【Todo】秒杀系统 & 乐观锁 & Nginx反向代理
http://www.csdn.net/article/2014-11-28/2822858 1. 单点帐号验证,不用读,而是用写入,Redis,看是否加watch 2. 抢宝的最终购买冲突.包装称“ ...
- [RxJS] Implement RxJS `switchMap` by Canceling Inner Subscriptions as Values are Passed Through
switchMap is mergeMap that checks for an "inner" subscription. If the "inner" su ...
- javascript是什么?
JavaScript 是脚本语言 JavaScript 是一种轻量级的编程语言. JavaScript 是可插入 HTML 页面的编程代码. JavaScript 插入 HTML 页面后,可由全部的现 ...
- 为RAC私有网络配置网卡Bonding
在RAC的安装部署过程中.并不不过简单的安装完毕了事.整个安装过程要考虑可能出现的单点问题,当中比較重要的是私有网络. 私有网络是RAC节点间通信的通道.包含节点间的网络心跳信息.Cache fusi ...
- LoaderManager使用具体解释(四)---实例:AppListLoader
实例:AppListLoader 这篇文章将是我的第四篇,也就是最后一篇该系列的文章.请在评论里面告诉我他们是否实用.前面几篇文章的链接例如以下: 一:Loaders之前世界 二:了解LoaderMa ...
- canvas鼠标点击划线
今天学习了canvas,打算写一个鼠标划线的效果. <!DOCTYPE html> <html lang="en"> <head> <me ...