一、Shell脚本高级编程实战第一部
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就可以调用此变量。
一、Shell脚本高级编程实战第一部的更多相关文章
- 四、Shell脚本高级编程实战第四部
一.比较两个数的大小 #!/bin/shread -p "Pls input two num:" a b[ -z "$a" ] || [ -z "$b ...
- 三、Shell脚本高级编程实战第三部
保养好自己的发动机:身体的和心里的身体健康:打打球,跑跑步心里健康:多和大家接触,保持家人.朋友的良好关系一.$*和$@的区别 $*:获取shell的所有参数,将所有的参数视为单个字符串. $ ...
- 二、Shell脚本高级编程实战第二部
一.什么是变量? 变量就是一个固定的字符串替代更多更复杂的内容,当然内容里面可能还有变量.路径.字符串等等内容,最大的特点就是方便,更好开展工作 1.变量有环境变量(全局变量)和局部变量 环境变量就是 ...
- 九、Shell脚本高级编程实战第九部
一.监控mysql主从同步是否异常,如果异常,发送短信给管理员 1)开发一个守护进程脚本每30秒实现检测一次. 2)如果错误号是:1158.1159.1008.1007.1062,请跳过 3)请使用数 ...
- 七、Shell脚本高级编程实战第七部
一.写网络服务的系统启动脚本 利用case语句开发类似系统启动rsync服务的脚本 代码: #!/bin/sah. /etc/init.d/functionspidfile="/var/ru ...
- 六、Shell脚本高级编程实战第六部
一.写一个start_nginx脚本,当启动.停止.重启时利用系统函数模拟实现系统脚本启动的特殊颜色效果 (用if实现) #!/bin/sh. /etc/init.d/functions if [ $ ...
- 八、Shell脚本高级编程实战第八部
一.使用for循环在/oldboy目录下创建10个文件名为oldboy-x的文件 #!/bin/sh[ ! -d /oldboy ] && mkdir -p /oldbfor i in ...
- 五、Shell脚本高级编程实战第五部
一.条件表达式 在bash的各种流程控制结构中通常要进行各种测试,然后根据测试结果执行不同的操作.有时也和if结合,让我们方便判断. test: 1)判断文件是否存在:test -f file 2) ...
- Shell脚本高级编程笔记一
http://www.cnblogs.com/ygj0930/p/8184277.html 一:函数 1:创建函数 法一: function name{ commands } 法二: name() ...
随机推荐
- SASS - 使用Sass程序
SASS – 简介 SASS – 环境搭建 SASS – 使用Sass程序 SASS – 语法 SASS – 变量 SASS- 局部文件(Partial) SASS – 混合(Mixin) SASS ...
- js事件函数中function(e){}
简单来说就是指向了当前发生的事件(click.mouseover等等),保存了当前事件的信息.如鼠标点击事件,有鼠标的坐标信息.其中,e是标准浏览器传递进去的事件参数,低版本IE不会传递,事件参数放置 ...
- h5-全屏插件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 《C Primer Plus》- 第一章 初试C语言
本笔记写于2020年1月25日. 从今天开始,我要全面的.彻底的将未来计划中所有的知识重新规划学习一遍,并整理成一套全面的笔记体系.为我将来的职业打下坚实的基础.而所有的一切从C语言开始. 本系列文章 ...
- transform—3D立方体
1.思路分析 第一步:首先需要一个大盒子,承载立方体的六个面: 第二步:立方体的六个面需要3D转化在特定的位置,拼接成一个立方体: 第三步:设置动画: 2.代码实现 第一步:创建div并且设置样式: ...
- 吴裕雄--天生自然 JAVASCRIPT开发学习:函数调用
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- F - Moving Points树状数组
题:https://codeforces.com/contest/1311/problem/F 题意:给定x轴上的点以及他们的速度v,只在x轴上运动,求最小的dis之和,注意,这里的时间是可随意的,比 ...
- 201771010123汪慧和《面向对象程序设计JAVA》第九周实验总结
一.理论部分 1.异常 (1)异常处理的任务就是将控制权从错误产生的地方转移给能够处理这种情况的错误处理器. (2)程序中可能出现的错误和问题:a.用户输入错误.b.设备错误.c.物理限制.d.代码错 ...
- Necroptosis|Apoptosis|CTC|
大数据-外周血研究 Necroptosis与Apoptosis...区别:肿瘤导致和自身凋亡. CTC,肿瘤细胞脱落进入外周血,CTC(循环肿瘤细胞,CirculatingTumorCell)是存在于 ...
- python3转义编码
s = 'dy电影' print(s) # dy电影 print(type(s)) # <class 'str'> print(s.encode('utf-8')) # b'dy\xe7\ ...