shell脚本编程

课程总目标:

学习前奏:

1. 编程语言分类

程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++

程序不需要编译,程序在运行时由解释器翻译成机器语言,每执行一次都要翻译一次。因此效率比较低。比如Python/JavaScript/ Perl /ruby/Shell等都是解释型语言。

语言分类

编译型语言比解释型语言速度较快,但是不如解释型语言跨平台性好。如果做底层开发或者大型应用程序或者操作系开发一般都用编译型语言;如果是一些服务器脚本及一些辅助的接口,对速度要求不高、对各个平台的兼容性有要求的话则一般都用解释型语言。

2. shell介绍

00_shell介绍

总结:

3. shell脚本

  1. 尽可能记忆更多的命令
  2. 掌握脚本的标准的格式(指定魔法字节、使用标准的执行方式运行脚本)
  3. 必须熟悉掌握脚本的基本语法(重点)

多看——>多模仿——>多练多写

一、bash的基本特性

1. 命令和文件自动补全

Tab只能补全命令和文件 (RHEL6/Centos6)

2. 常见的快捷键
3. 常用的通配符
4. bash中的引号

二、变量的定义(重点)

2.1 变量的分类

2.2 什么时候需要定义变量?

2.3 变量的定义规则

 

三、简单的四则运算

算术运算:默认情况下,shell就只能支持简单的整数运算

总结:

 

四、条件判断

4.1 语法格式

说明:

man test去查看,很多的参数都用来进行条件判断

4.2 条件判断相关参数

4.3 示例

 

五、流程控制语句

5.1 基本语法结构

F:false 假

T:true 真

流程判断1

 

流程判断2

 

流程判断3

流程判断4

5.2 应用案例

需求1:判断当前主机是否和远程主机是否ping通

需求2:判断一个进程是否存在

需求3:判断一个服务是否正常(以httpd为例):

思路:

  1. 可以判断进程是否存在,用/etc/init.d/httpd status判断状态等方法
  2. 最好的方法是直接去访问一下,通过访问成功和失败的返回值来判断

课堂练习:

1、输入一个用户,用脚本判断该用户是否存在

2、判断vsftpd软件包是否安装,如果没有则自动安装(yum源已配好)

3、判断当前内核主版本是否为2,且次版本是否大于等于6;如果都满足则输出当前内核版本

4、判断ftp服务是否已启动,如果已启动输出以下信息:

vsftpd服务器已启动... vsftpd监听的端口是: vsftpd的进程PID是:

 

课后作业:

1、 判断/tmp/run目录是否存在,如果不存在就建立,如果存在就删除目录里所有文件 2、 输入一个路径,判断路径是否存在,而且输出是文件还是目录,如果是字符连接,还得输出是有效的连接还是无效的连接 3、交互模式要求输入一个ip,然后脚本判断这个IP 对应的主机是否 能ping 通,输出结果类似于: ​ Server 10.1.1.20 is Down! 最后要求把结果邮件到本地管理员root@localhost和mail01@localhost 4、写一个脚本/home/program,要求当给脚本输入参数hello时,脚本返回world,给脚本输入参数world时,脚本返回hello。而脚本没有参数或者参数错误时,屏幕上输出“usage:/home/program hello or world” 5、写一个脚本自动搭建nfs服务