Shell 脚本 和语句

shell脚本与其他编程语言所编写的程序不同,脚本运行时需要调用相应的解释器来翻译脚本中的内容,根据我们编写的脚本格式不同,需要的解释器也不同。

一、脚本格式范例
每一个完善的脚本都要遵循一些既定的规则,下面来看一个完整的脚本:
在这里插入图片描述
在上述例子里,我们给出了一个相对完善的脚本所应该具有的基本框架。
第一行#!的作用时指定该脚本程序的命令解释器,例子中时/bin/bash。也就是说,脚本执行后,系统内核读取#!后面的路径查找解释器,最终使用该解释器翻译脚本代码并运行。
#后面为注释,在脚本执行时,该部分会被忽略。
接下来就是脚本的代码部分,这些代码会按顺序依次执行,但通过控制语句控制执行顺序除外。

二、运行脚本的方式
脚本编写完成后,我们需要运行并实现脚本程序的功能,下面时运行脚本的方法:
1.赋予权限,直接运行脚本
在这里插入图片描述
2.没有权限,通过bash或sh运行脚本
在这里插入图片描述

三、判断语句应用

1.if 语句

语法格式1语法格式2语法格式3
if 条件if 条件if 条件
thenthenthen
命令序列命令序列命令序列
fielseelif 条件
命令序列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 $变量名称 incase $变量名称 in
模式 1)模式1 |模式2)
命令序列命令序列
;;;;
模式 2)模式3|模式4)
命令序列命令序列
;;;;
模式 N)模式5|模式6)
命令序列命令序列
;;;;
*)*)
esacesac

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 值Nfor (( 初始化变量值;结束循环条件;运算))
dodo
命令序列命令序列
donedone

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
dodo
命令序列命令序列
donedone < 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.csdn.net/taranfly/article/details/80253416

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱音乐的哒哒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值