Shell 脚本 和语句
shell脚本与其他编程语言所编写的程序不同,脚本运行时需要调用相应的解释器来翻译脚本中的内容,根据我们编写的脚本格式不同,需要的解释器也不同。
一、脚本格式范例
每一个完善的脚本都要遵循一些既定的规则,下面来看一个完整的脚本:
在上述例子里,我们给出了一个相对完善的脚本所应该具有的基本框架。
第一行#!的作用时指定该脚本程序的命令解释器,例子中时/bin/bash。也就是说,脚本执行后,系统内核读取#!后面的路径查找解释器,最终使用该解释器翻译脚本代码并运行。
#后面为注释,在脚本执行时,该部分会被忽略。
接下来就是脚本的代码部分,这些代码会按顺序依次执行,但通过控制语句控制执行顺序除外。
二、运行脚本的方式
脚本编写完成后,我们需要运行并实现脚本程序的功能,下面时运行脚本的方法:
1.赋予权限,直接运行脚本
2.没有权限,通过bash或sh运行脚本
三、判断语句应用
1.if 语句
语法格式1 | 语法格式2 | 语法格式3 |
---|---|---|
if 条件 | if 条件 | if 条件 |
then | then | then |
命令序列 | 命令序列 | 命令序列 |
fi | else | elif 条件 |
命令序列 | then | |
fi | 命令序列 | |
else | ||
命令序列 | ||
fi |
命令序列代表命令集合,可以是一条命令,也可以是多条命令。
也就是说,当判断条件满足时,可以仅执行一条命令,也可以执行一系列命令,格式中对条件的判断可以使用test命令,也可以用[ ] 测试。
if 语句实例:
实例1.判断当前用户是否为root管理员,如果是,则执行tar对/etc/目录执行备份。
/dev/null 黑洞文件,这里指不显示输出结果。
实例2.要求用户输入密码,判断密码是否正确。
read 读取标准输入的输入
read -p 指定一个提示
实例3.要求用户输入密码,判断密码是否正确,若正确,显示OK;若不正确,显示ERROR
实例4.读取参数判断成绩,成绩小于60分显示Fail;成绩大于或等于60分但小于70分,则显示Pass;成绩大于或等于70分但小于80分,则显示Fine;成绩在80分以上显示Excellent。
2.case 语句
shell脚本里,除了使用 if 语句进行判断,还可以使用 case 语句进行判断,它是多重 if 判断语句的替换解决方案,它易读、易写,*)下的命令为case默认动作,当变量与所有的模式都没有匹配时,case 将执行 *)下的命令序列。最后以esac结尾下面是 case 语句的格式.
语法格式1 | 语法格式2 |
---|---|
case $变量名称 in | case $变量名称 in |
模式 1) | 模式1 |模式2) |
命令序列 | 命令序列 |
;; | ;; |
模式 2) | 模式3|模式4) |
命令序列 | 命令序列 |
;; | ;; |
模式 N) | 模式5|模式6) |
命令序列 | 命令序列 |
;; | ;; |
*) | *) |
esac | esac |
case 语句实例:
实例1.根据时间备份/var/log 日志目录,仅备份周三、周五的数据。实例2.根据用户输入的参数不同返回不同的提示字符,如果用户输入字符,则提示You have type a character;如果用户输入数字,则提示You have type a number,否则提示ERROR
实例3. 编写firefox火狐浏览器启动脚本,支持start、stop、restart功能。
四、循环语句应用
1.for 语句
日常系统管理工作中有大量需要重复运行的指令,Shell编程提供了 for、while、until、select循环语句以实现特定指令的反复执行功能,在所有的循环语句中,变量必须要有初始值,每次运行命令序列前都需要对条件进行过滤,满足条件才会运行命令,否则不执行相关操作。
下面表格为 for 语句的语法格式:
语法格式1 | 语法格式2 |
---|---|
for 变量 in 值1 值2 值N | for (( 初始化变量值;结束循环条件;运算)) |
do | do |
命令序列 | 命令序列 |
done | done |
for 语句实例:
实例1.给多个用户群发邮件,邮件内容为/var/log/messges 文件中的内容,标题为Log
实例2.多次给NUM变量赋值,并显示变量NUM 的值
实例3.通过for 语句打印9*9的乘法表
2.while 语句
while 语句在循环前对运行条件进行判断,运行条件满足时,循环将一直被执行,直到测试条件失败时循环结束。while 语句可以通过read命令每次读取一行文件内容,文件内容有多少行,while循环就执行多少次,读取文件结束时,循环结束。
下面是while 语句的语法格式
语法格式1 | 语法格式2 |
---|---|
while [条件] | while read -r line |
do | do |
命令序列 | 命令序列 |
done | done < file |
while 语句实例:
实例1.批量添加20个用户,用户名称为userN,N为1至20的数字
实例2.打印网卡配置文件的每一行
3.until 语句
until 语句与while 语句相反
until 语句只用在条件为假的情况下才会持续的运行
until 语句与 while 语句的区别
1.until 循环执行直到返回状态0
2.while循环执行直到返回非0状态
3.until 循环总是执行至少一次
shell 函数应用
https://blog.****.net/taranfly/article/details/80253416