原作者的代码里面,存在智能引号问题,所以他的代码并不能正常运行;

这个是我微调后的版本。

代码如下:

  1. #!/bin/bash
  2. #————————————–
  3. # Module : mk_go_pro.sh
  4. # Author : Blair Zhong
  5. # Created : 2013.07.
  6. # Modify :
  7. # Version : 1.0
  8. # Useage : ./mk_go_pro.sh
  9. # ./mk_go_pro.sh porject_name
  10. # Description: 创建一个go可编译的工程
  11. #————————————–
  12. # 根据 Go语言学习园地博客的帖子编写,如有侵权请联系本人
  13. # http://blog.studygolang.com/2012/12/go项目的目录结构/
  14. # 默认情况下运行本程序,会生成如下目录和文件
  15. # test
  16. # ├── bin
  17. # ├── install.sh
  18. # ├── pkg
  19. # └── src
  20. # ├── config
  21. # │ └── config.go
  22. # └── test
  23. # └── main.go
  24. #
  25. # directories, files
  26. #
  27. # 其中:
  28. # , install.sh为安装文件,
  29. # , config.go为test项目的配置文件
  30. # , main.go这个你懂的
  31. # 生成完毕之后运行进入test目录,运行install.sh会生成如下文件和目录
  32. # ├── bin
  33. # │ └── test
  34. # ├── install.sh
  35. # ├── pkg
  36. # │ └── darwin_amd64
  37. # │ └── config.a
  38. # └── src
  39. # ├── config
  40. # │ └── config.go
  41. # └── test
  42. # └── main.go
  43. # directories, files
  44. #
  45. # 多了两个文件
  46. # , bin目录下的test,这个是可执行稳健
  47. # , pkg/darwin_amd64下的config.a,这个是config编译后产生的文件
  48. #
  49. # enjoy it!
  50.  
  51. PWD=$(pwd)
  52. cd $PWD
  53.  
  54. if [[ "$1" = "" ]]; then
  55. echo "Useage: ./mk_go_pro.sh porject_name"
  56. echo -ne "Please input the Porject Name[test]"
  57. read Answer
  58. if [ "$Answer" = "" ]; then
  59. echo -e "test";
  60. PRO_NAME=test;
  61. else
  62. PRO_NAME=$Answer;
  63. fi
  64. else
  65. PRO_NAME=$;
  66. fi
  67. #创建目录
  68. echo "Init Directory …"
  69. mkdir -p $PRO_NAME/bin
  70. mkdir -p $PRO_NAME/pkg
  71. mkdir -p $PRO_NAME/src/config
  72. mkdir -p $PRO_NAME/src/$PRO_NAME
  73.  
  74. #创建install文件
  75. echo "Create install/install.sh …"
  76. cd $PRO_NAME
  77. echo '#!/bin/bash' > install.sh
  78. echo 'if [ ! -f install.sh ]; then' >> install.sh
  79. echo "echo 'install must be run within its container folder' 1>&2" >> install.sh
  80. echo "exit 1" >> install.sh
  81. echo "fi" >> install.sh
  82. echo >> install.sh
  83. echo "CURDIR=\`pwd\`" >> install.sh
  84. echo "OLDGOPATH=\"\$GOPATH\"" >> install.sh
  85. echo "export GOPATH=\"\$CURDIR\"" >> install.sh
  86. echo >> install.sh
  87. echo "gofmt -w src" >> install.sh
  88. echo "go install $PRO_NAME" >> install.sh
  89. echo "export GOPATH=\"\$OLDGOPATH\"" >> install.sh
  90. echo >> install.sh
  91. echo "echo 'finished'" >>install.sh
  92. chmod +x install.sh
  93.  
  94. #创建config.go文件
  95. echo "Create src/config/config.go …"
  96. cd src/config
  97. echo package config > config.go
  98. echo >> config.go
  99. echo func LoadConfig\(\) { >> config.go
  100. echo >> config.go
  101. echo } >> config.go
  102.  
  103. #创建main.go
  104. echo "Create src/$PRO_NAME/main.go …"
  105. cd ../$PRO_NAME/
  106. echo "package main" > main.go
  107. echo >> main.go
  108. echo "import (" >> main.go
  109. echo " \"config\"" >> main.go
  110. echo " \"fmt\"" >> main.go
  111. echo ")" >> main.go
  112. echo >> main.go
  113. echo "func main() {" >> main.go
  114. echo " config.LoadConfig()" >> main.go
  115. echo " fmt.Println(\"Hello $PRO_NAME!\")" >> main.go
  116. echo "}" >> main.go
  117. 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工程的更多相关文章

  1. 创建一个Android工程

    Creating an Android Project 原文演示了怎么通过Android Studio和命令行两种方式来创建一个Android工程. 原文链接:http://developer.and ...

  2. 使用idea创建一个maven工程

    使用idea创建一个maven工程 一.创建maven工程 二.输入工程名 三.指定maven仓库 四.点击finish 五.修改工程结构(file->project structure) 六. ...

  3. Eclipse创建一个mybatis工程实现连接数据库查询

    Eclipse上创建第一mybatis工程实现数据库查询 步骤: 1.创建一个java工程 2.创建lib文件夹,加入mybatis核心包.依赖包.数据驱动包.并为jar包添加路径 3.创建resou ...

  4. 利用Zynq Soc创建一个嵌入式工程

    英文题目:Using the Zynq SoC Processing System,参考自ADI的ug1165文档. 利用Zynq Soc创建一个嵌入式工程,该工程总体上包括五个步骤: 步骤一.新建空 ...

  5. django学习笔记【001】django版本的确定&创建一个django工程

    2.3 查看当前的django版本 python3. -m django --version 2.3.1 创建一个django工程 django-admin startproject mysite 在 ...

  6. 使用Idea第一次创建一个Mavne工程时没有src目录

    在使用idea创建一个maven工程时没有src目录,可能出现的问题很多,我先把我自己的问题分享上来 因为没有src,可能是因为maven插件还没下载到本地仓库.maven插件的版本和jdk版本冲突或 ...

  7. 通过node指令自动创建一个package.json文件,并封装发布使用

    通过node指令自动创建一个package.json文件,并封装发布使用:https://blog.csdn.net/scu_cindy/article/details/78208268

  8. 创建一个Portlet工程

    使用Liferay的SDK创建一个简单的Portlet,此Portlet不包括业务逻辑.不包括数据库,只有简单的页面展现,用以说明Portlet的开发过程. 一.创建Portlet工程 1.打开Lif ...

  9. UE4编程之C++创建一个FPS工程(一)创建模式&角色&处理输入

    转自:http://blog.csdn.net/u011707076/article/details/44180951 从今天开始,我们一起来学习一下,如何使用C++将一个不带有任何初学者内容的空模板 ...

随机推荐

  1. Linux下异常信号

    我们介绍一些标准信号的名称以及它们代表的事件.每一个信号名称是一个代表正整数的宏,但是你不要试图去推测宏代表的具体数值,而是直接使用名称.这是因为这个数值会随不同的系统或同样系统的不同版本而不同,但是 ...

  2. 仿苹果app下载动画-煎饼

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Spring Boot应用的启动和停止(Spring Boot应用通过start命令启动)

    Spring Boot,作为Spring框架对“约定优先于配置(Convention Over Configuration)”理念的最佳实践的产物,它能帮助我们很快捷的创建出独立运行.产品级别的基于S ...

  4. System表空间大小有10Gb,使用率达到95%,

    System表空间大小有10Gb,使用率达到95%,很好奇, 随后执行如下SQL,查看system表空间中使用空间最多的对象 SQL>SELECT * FROM DBA_SEGMENTS T W ...

  5. 【Todo】秒杀系统 & 乐观锁 & Nginx反向代理

    http://www.csdn.net/article/2014-11-28/2822858 1. 单点帐号验证,不用读,而是用写入,Redis,看是否加watch 2. 抢宝的最终购买冲突.包装称“ ...

  6. [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 ...

  7. javascript是什么?

    JavaScript 是脚本语言 JavaScript 是一种轻量级的编程语言. JavaScript 是可插入 HTML 页面的编程代码. JavaScript 插入 HTML 页面后,可由全部的现 ...

  8. 为RAC私有网络配置网卡Bonding

    在RAC的安装部署过程中.并不不过简单的安装完毕了事.整个安装过程要考虑可能出现的单点问题,当中比較重要的是私有网络. 私有网络是RAC节点间通信的通道.包含节点间的网络心跳信息.Cache fusi ...

  9. LoaderManager使用具体解释(四)---实例:AppListLoader

    实例:AppListLoader 这篇文章将是我的第四篇,也就是最后一篇该系列的文章.请在评论里面告诉我他们是否实用.前面几篇文章的链接例如以下: 一:Loaders之前世界 二:了解LoaderMa ...

  10. canvas鼠标点击划线

    今天学习了canvas,打算写一个鼠标划线的效果. <!DOCTYPE html> <html lang="en"> <head> <me ...