Bash Shell 脚本编程(二)

3 篇文章 0 订阅

回顾一下如何编译一个简单的脚本:

条件测试语句:

条件测试语句能够让 shell 脚本根据实际工作灵活调整工作内容,例如判断系统的状态后执行指定的工作,或创建指定数量的用户,批量修改用户密码,这些都可以让 shell 脚本通过条件测试语句完成!

if 条件语句

if条件语句分为:单分支结构、双分支结构、多分支结构,复杂度逐级上升,但却可以让 shell 脚本更加的灵活,首先来说单分支结构,仅用 if 、then、fi 关键词组成,只在条件成立后执行:

单分支 if 语句:判断目录是否存在,若不存在则自动创建:

下面这个例子: ①如果是的话,就显示"Hello,how are you ?";

                          ②如果没有加任何参数,就提示使用者必须要使用的参数方法

                          ③如果加入的参数不是 hello ,就提醒使用者仅能使用 hello 为参数。

Shell 实验1       if...fi 语句

                   

双分支结构是由 ifthenelsefi 关键词组成,做条件成立或条件不成立的判断:

Shell 实验2      if...else...fi 语句

多分支结构相对就比较复杂了,是由 if、then、else、elif、fi 关键词组成,根据多种条件成立的可能性执行不同的操作:

Shell 实验3      if...elif...fi 语句

case 条件语句可以依据变量的不同取值,分别执行不同的命令操作:

一般来说,使用[ case $变量 in ] 这个语法中,当中的 $变量 有2种形式:

①直接给予 $(变量) 这个变量的内容

②交互式:通过 read 这个命令来使用变量内容

Shell 实验 4     case...esac语句

for 条件语句会先读取多个不同的变量值,然后逐一执行同一组命令:

Shell 实验 5   使用 for 循环跨越通过给定的数字列表:

while 条件语句用于重复测试某个条件,当条件成立时则继续重复执行:

Shell 实验 6       使用 while 循环语句计算 1+2+3...+100 这个数值:

        

shell 实验 7      until 命令

until 命令和 while 命令工作方式相反,until 命令要求你指定一个返回非零退出状态码的测试命令,如果返回的退出状态码为零,循环就结束了。

和 while 命令类似,你可以在 until 命令语句中放入多个测试命令,只有最后一个命令的退出码决定了 bash shell 是否执行已定义的其它命令集:

shell 实验 8      嵌套循环(混用 until 和 while 循环)

嵌套循环也称为内部循环,会在外部循环的每次迭代中遍历一次它所有的值。(两个循环的 do 和 done 命令没有任何差别)

外部的 until 循环以值数3开始,并继续执行到数值等于零。内部 while 循环以数值1开始并一直执行,只要小于5。每个循环都必须改变测试条件中用到的值,否则循环就会无止尽进行下去。

shell 实验 9    控制循环:break 命令跳出循环 

当 shell 执行break命令时,它会尝试跳出(终止)当前正在执行的循环。

跳出外部循环:

  

跳出内部循环:

跳出单个循环:

shell 实验 10     continue 命令 

continue 命令可以提前中止某次循环中的命令,但不会完全终止整个循环,在 for 循环中使用 continue 命令:

continue 命令来停止处理循环内的命令,但会继续处理外部循环:(continue n  : 其中 n 定义了要继续的循环层级)

  

  

shell 可以将 for 命令的结果重定向到文件中,而不是显示在屏幕上:

shell 创建了文件 chd9.sh 并将 for 命令的结果输出重定向到这个文件,shell 在 for 命令之后正常显示了 echo 语句。这种方法同样适用于将循环的结果管接给另一个命令:

for 命令的输出传给了 sort 命令,该命令会改变 for 命令输出结果的顺序,运行这个脚本实际上说明了结果已经在脚本内部排好序了。

实例11        查找可执行文件

循环是对系统数据进行迭代的常用方法,如果你想找出系统中有哪些可执行文件可供使用,只需要扫描 PATH 环境变量中的所有目录就行了:

计划任务服务

能够让系统自动化运行,无需人工的干预就可以让各个服务、命令在指定的时间段运行、停止。实际上这些操作都是由系统的计划任务功能完成的,计划任务可分为:①一次性    ② 长期性

一般用 at 命令创建计划任务,有交互式和非交互式2种(输入完成后敲击 ctrl+d 来保存退出):

使用 atrm 命令删除任务编号就可以了:

cron 服务是用来创建长期可循环的计划任务

在默认情况下用户的 cron 时间表并不存在,要为 cron 时间表添加条目 可以用 -e 选项

查看 cron 目录      cron 脚本默认配置了4个基本目录:hourly、daily、monthly、weekly

如果脚本需要每天运行一次,只要将脚本复制到 daily 目录,cron 就会每天执行它。

anacron 程序

anacron 程序只会处理位于 cron 目录的程序,比如 /etc/cron.monthly,它用时间戳来决定作业是否存在正确的计划间隔内运行了,每个 cron 目录都有个时间戳文件,该文件位于 /var/spool/anacron 

anacron 程序使用自己的时间表(通常位于 /etc/anacrontab)来检查作业目录:

cron 程序的唯一问题是Linux系统要 7×24 小时运行,如果某个作业在 cron 时间表安排运行的时间已到,但这个时间Linux系统处于关机状态,那么这个作业就不会被运行,当系统开机时, cron 程序不会再去运行那些错过的作业。但是 anacron 程序就完美的解决了这个问题,如果 anacron 知道某个作业错过了执行时间,它会尽快运行该作业,这意味着Linux系统关机了几天,当它再次开机时,原定在关机期间运行的作业会自动运行。这个功能常用于进行常规日志维护的脚本,通过 anacron 可以保证系统每次启动时整理日志文件。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值