Shell脚本语言是实现linux系统自动化管理的重要且必要的工具,几乎每一个合格的linux系统管理员或者高级运维工程师都要熟练shell脚本语言的编写,只有这样才能提升工作效率,解决工作中的重复劳动。(shell就是运维中的米饭,馒头,其他高级语言都是锦上添花,运维首先要掌握shell,再去研究其他)

一、什么是shell 和shell脚本

shell是一个命令解释器,在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户。这种对话方式是交互式的方式(键盘输入并立即得到结果),或者非交互(脚本)的方式。

shell的英文就是贝壳,他在操作系统中的位置如图:这里要注意,系统核心包括内核和各种库。shell在其中就是一个跑腿的角色。

当linux命令或者语句不在命令行下执行,而是通过一个程序文件执行时,就是一个shell脚本或者shell程序。shell程序就像是DOS下的批处理(*.bat)。说白了就是命令、变量和流程控制的语句。

二、shell的编写一定要规范严谨,只有这样才能形成好的编写习惯,事半功倍,并且有好的注释,才能方便自己以后看或者方便他人进行查看。另外在脚本的开头加上版权,时间、作者、email、作用、版本。

所谓的规范:统一,就是大家都这样干

三、shell脚本在运维工作中的地位和作用

shell脚本擅长处理纯文本类型的数据。而linux系统绝大多数服务都是纯文本的。如apache、nginx、mysq、crond、nfs等软件,你启动、配置等都是用shell语言写的,自然执行的shell脚本进行,因此地位超然就不言而喻了。

四、脚本语言的种类

1.  bash\csh\tcsh,当前此contos系统支持的shell  如下,它是一个弱语言,最常用的就是bash,系统默认的也是bash,一个用户的执行命令也是根据passwd中指定的shell语言进行解释的

2.php是网页程序,也是脚本语言,更专注于web网页开发,但也可以处理系统日志、配置文件等。

3.perl脚本语言,比shell强大,语法灵活不易读,团队协作困难

4.python是脚本语言、web开发,中等以上的公司对python都有要求。

五、shell与php/perl/python语言的区别和优势?

shell优势是处理操作系统底层业务,因为有大量的系统命令支持,比如grep,awk,sed等,一键安装、优化,监控报警脚本等,常规的应用,shell开发更简单快速,符合运维大原则。(简单、易用、高效)

其他语言在于web运维工具的开发,web管理工具,web业务开发有优势,对于常规业务,完全可以用shell,用其他语言也可以实现,但你终究还是要调用系统函数,不如直接用shell实现。

总之,对于一个脚本、一个功能,可以用shell处理,可以用其他语言,那么不能说绝对,但是大多数情况下是shell占优势,但是,大环境下,企业都喜欢可视化,web工具的优势,喜欢一键就ok了,这也是python流行的原因所在,但还是要调用shell下的系统函数!

六、shell脚本的第一行

#!/bin/sh

1)如果第一行没有上边的内容,那么系统会调用默认的shell进行解释脚本 ;当然也可以在执行脚本的时候进行指定,例如:bash  xx.txt,这样也是bash解释器进行解释

2)上面的内容可以用#!/bin/bash进行替换,sh只是bash的一个软连接

  [root@djw1 ~]# ls -l /bin/sh 
    lrwxrwxrwx 1 root root 4 Jun 10 10:12 /bin/sh -> bash

七、shell版本,不同种类shell也是有版本,如下bash

八、shell脚本的执行

当shell脚本以非交互的方式运行时,它会先查找环境变量ENV,该变量指定了一个环境文件(.bashrc,.bash_profile,/etc/bashrc,/etc/profile等),然后从该环境变量文件开始执行,当读取了ENV文件后,shell才开始执行脚本中的内容

例子:source  xx.sh   /    . (点) xx.sh 这样在xx.sh中如果有定义的变量,那么在外面的shell就可以调用此变量。

最新文章

  1. CSS行内元素和块级元素的居中
  2. CSS布局一
  3. lighttpd的超时参数详解
  4. thinkPHP配置项
  5. python项目练习地址
  6. GWAS
  7. SQL游标使用及实例
  8. ffmpeg日志调式
  9. #Java学习之路——基础阶段(第二篇)
  10. PHP APP端支付宝支付
  11. JavaScript之BOM五大对象(window;location;navigator;screen;history)
  12. 潭州课堂25班:Ph201805201 并发(通信) 第十三课 (课堂笔记)
  13. [Beego模型] 五、构造查询
  14. No symbol "xxx" in current context解决
  15. Mysql 强行Kill 连接
  16. MYSQL基础知识小盲区
  17. CentOS 7 - 创建新用户
  18. P3089 [USACO13NOV]POGO的牛Pogo-Cow
  19. systemd自启动java程序
  20. Graph

热门文章

  1. meta标签小结
  2. 7.CSRF攻击和文件上传漏洞攻击
  3. 题解 Luogu P5434: 有标号荒漠计数
  4. 【mac相关bash文件】
  5. HDU-2087 C - 剪花布条(KMP基本)
  6. Numa解释
  7. 【转帖】使用了 Service Mesh 后我还需要 API 网关吗?
  8. [极客大挑战 2019]PHP
  9. linux-线程同步之信号量
  10. 37. docker swarm docker service 的更新