设为首页 收藏本站
查看: 649|回复: 0

shell一周学习心得

[复制链接]

尚未签到

发表于 2018-8-28 08:43:04 | 显示全部楼层 |阅读模式
  学习shell脚本的心得

  •   shell脚本运行的环境:shell 脚本,就是把多条命令,有组织的编写到一个文件中,来实现一系列动作,方便的执行的一个文件。
  Shell脚本主要应用在shell环境中,我们使用的rhel6,主要使用的bash shell解释工具来完成人机的交互。在日常的操作系统中还有其他的shell解释工具,如csh,tcsh,dash,zsh等等。Shell脚本可以实现一系列的动作的自动化运行。是自动化运维的利器,也是Linux系统管理的有力工具。学习好shell脚本,对以后的工作,有很大的意义。

  •   shell脚本的基本结构和基本知识
  一个shell脚本,主要有两部分构成,第一部分就是声明shell的解释环境
  “#!/bin/bash”如上面这句,就是声明系统用/bin/bash来解释和运行该脚本,然后是你的命令部分。命令部分通过程序的顺序执行,或者通过各种分支判断,循环结构,来控制程序的运行。最终达到完成工作任务的目的。
  在shell中,首先需要了解的是基本命令,也就是我们日常管理维护操作系统的指令,如常用的cd , pwd,useradd,passwd,touch,sed,awk等等,这些都是构成shell脚本,实现功能的基本元素。通过多个命令的不同组合,和流程控制,来实现部署环境,管理系统的任务。
  在我们的系统中,有许多的变量,其中系统变量($PWD,$USER,$UID…),是固化在系统中的,我们就可以直接调用。还有很多的预定义变量($?,$*,$#),自定义变量等。是灵活编写脚本不可缺少的基本思路。要学会使用变量可以有效的减少脚本的书写工作。
  如何让程序更好的运行,有时候就需要使用到分支判断循环结构控制,这里我们学习到了,if,for,while,case等等一系列流程控制结构。用它们来灵活的控制脚本的运行。
  使用expect来实现人机交互的自动应答部分,解决掉我们需要在终端输入的交互问题。
  通过一周的学习,基本获得了一个编写shell脚本的思路和方法。当然,对与系统命令与系统的了解,越深入,对我们编写shell脚本就越得心应手,这需要我不断的学习,思考和总结。

  •   编写shell脚本的思路
  为什么编写一个shell脚本?基本都是自己需要实现一个动作,或者让shell脚本帮助我们完成一系列繁冗,或枯燥的操作。减少自己的工作强度。也是实现自动化运维的基本功。
  编写脚本,要从实际出发,不要一下把功能写的十分全面,强大。我的原则是只要实现就好,不择手段。然后在逐步完善。
  首先要把你的任务明确,然后用试验机做测试,成功了,或者遇到问题了,在想解决办法。把这些命令收集起来,组成shell脚本,把问题逐一解决掉,或者绕开,完成脚本的功能是最重要的,不要进行破坏性操作。
  有时候绕开是很好的办法,比解决要更有效。

  •   shell脚本的实现
  脚本的实现,需要经过一个痛苦的过程,有时候一个看似很简单的shell功能脚本,也许会花费你很大的心思。最好的办法就是做切片,分段调试,分段测试,整体组合。精简代码。调整思路,完善脚本。
  不要试图一次性编写一个复杂的脚本。除非你对shell和系统服务如火纯青。

  •   shell脚本的局限性和在工作中的实际应用
  可以尝试在日常生活中使用shell脚本帮助你完成一点简单的工作。比如每天备份下你的boot目录,etc目录等。配合计划任务等工作。因为有些时候,很多工作是shell脚本自己搞不定的。不能太依赖shell。让它发挥自己的优点就可以了。比如一些风险性操作,比如磁盘格式化,lvm管理,需要谨慎操作的,还是远程登陆等比较靠谱点。万一你一个脚本下去,整个数据全部完蛋。尽管脚本都是我们辛辛苦苦编写,和测试的。谁也不能保证它不会出这样那样的问题。
  最后,通过一周的学习,我初步了解了shell脚本的编写方法,自己对操作系统,和各种功能的实现方法和shell脚本的实现方式,方法还要认真学习和总结。以上是我的一点小小的心得和体会。还有很多缺点和不足,希望老师和同学多多帮助。
  任  浩  . 北京


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-557523-1-1.html 上篇帖子: shell条件-循环-分支-函数 下篇帖子: 使用Shell脚本查询服务器硬件信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表