我的第一次shell

最近我们的项目需要进行优化,整体架构进行改造。

然后我们红超哥就看我骨骼惊奇,说小伙子你想不想当做掌门人呀。(我说不想哈哈)

想不想也没用了,红超哥说我们现在的架构有所改变,需要你写一套自动部署脚本。(弱小的我没有说出一个不字)

Shell可以干啥

  • 如果说小伙伴们使用过Linux操作系统那肯定使用过shell命令,cdls 再或者你们一定看过 rm -rf xxxx 哈哈,这些其实都是我们的shell命令,我们将程序部署到系统上面去的时候每次都需要输入一推命令,如果一天部署一个程序你还受得了,但是如果红超哥一定要我部署50个程序。那当然我也不会说一个不字 ,但是我们经常会出现多打一个字母,少打一个字母的情况,当前一个两个项目的工作量我还能接受,但是红超哥说的50个程序部署,那我也能完成。但是为了早点下班,多摸鱼。所以我们还是要弄自动化。

Shell是个啥

  • Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。
  • 不管他三七二二的先把菜鸟教程文档看一遍,你就已经是菜鸟了。然后就是编写脚本测试脚本。一步一步进化成为大鹏叉烧

开搞之前

  • 所以我先将菜鸟教程文档都看了一遍,然后在园子看了其他大佬写的shell博文,先吸收一点经验,减少一些没必要的弯路(而且最近红超哥也挺忙的,哈哈,不过虽然问红超哥虽好,但是程序人生中该踩的坑,还是要踩) 推荐博文

搞搞

  • 因为写自己写的代码肯定需要给别人看的,所以我们需要先定义这个脚本是干嘛的。(#!/bin/bash告诉系统使用shell那种核心执行脚本)

  • 日志信息一定要有。这个很重要,因为我们不像红超哥一样写代码一次过,所以我们还是需要使用日志记录我们的信息。

  • 也可以更好的返回提示给执行脚本的人看到脚本执行情况。

  • 在我编写的过程中会发现很多方法都是一样的,作为码农练习生的我肯定会想到封装啦。

  • 然后我们的可以使用 . 或者source 进行包含外包shell脚本。

  • 如果我们在之心执行教程出现换行符报错的问题我们可以通过 sed -i 's/\r$//' xxl.sh 进行转换。

  • 或者将脚本字符格式进行修改LF格式就可以了。

  • 我们在执行脚本的时候如果出现权限不够的是时候,我们可以使用 sudo sh xxx.sh 让脚本提升一下权限。

  • 当我们的功能比较多的时候,尽量将功能封装成为一个一个的方法。

总结

  • 这也是我第一次写shell脚本,总结的一些经验,后续还会持续补充一些自己的经验。

最新文章

  1. 体验阿里云SSD云盘+ECS(I/O优化)的性能
  2. 软件安装失败,导致ubuntu软件中心软件消失
  3. 关于mysql中int(1)中int后面的数字
  4. MyEclipse2014中SVN的使用方法
  5. 详细介绍java中的数据结构
  6. 使用express搭建第一个Web应用【Node.js初学】
  7. Hadoop在win7下部署的问题
  8. 在TCP协议下的数据传送
  9. C++----练习--引用头文件
  10. Django源码解析
  11. laravel 服务容器
  12. 20175236 2018-2019-2 《Java程序设计》第六周学习总结
  13. MT【60】几个不常见的函数图像
  14. gearman(异步计算)学习
  15. git将本地项目发布到远端
  16. 查看nginx | apache | php | tengine | tomcat版本的信息以及如何隐藏版本信息【转】
  17. thunderbird中如何设置QQ邮箱
  18. 一个有趣的python排序模块:bisect
  19. CPAN镜像使用帮助
  20. uoj311 【UNR #2】积劳成疾

热门文章

  1. css子选择器 :frist-child :nth-child(n) :nth-of-type(n) ::select选择器
  2. 微信小程序生成二维码并且扫码跳转并且携带参数
  3. 光棍节程序员闯关秀writeup
  4. bash反弹shell检测
  5. 解决Maven项目中pom.xml文件报错(Failure to transfer....)的问题
  6. day008|python之函数
  7. 迭代器原理gif
  8. 不使用 MQ 如何实现 pub/sub 场景?
  9. java集合源码分析(三):ArrayList
  10. PHP作业记录