00:00
好,我们接着来聊shell编程中的循环,那在shell编程中呢,它有五种循环方式,那我会按照这个循环使用频率的从高到低依次进行排序,那其实在shell中呢,循环用的最多的话就是这个V啊,那我们先来看。那while呢,我们来看一下它的语法,那我们可以看到它有很多的书写方式,书写这个语法的话也是比较松散的啊,那我推荐使用第一种方式,也是最常用的一种使用的方式,好,我们来直接来看一下这个well啊好。我们做一个练习,比如打印一到100之间的数字,I等于一,那这里大家需要注意一点的话,就是语法中要求这里一定要有空格,空格小于100冒真好。
01:21
D,嗯,大家可以看一下这个语法格式,在well的这个位置和方括号的这个位置,这个位置,这个位置和这个位置都是要有空格的,如果你没有空格的话,大家可以看一下啊,他也不会报什么错误,但我执行过程中呢,我们来执行一下啊,我们先按正确的方式来执行一下吧,看一下这个程序是否有编写成功哈,那这个程序呢,也是打印一到100的一个数字,我们看一下。
02:01
看打印到了一到100对吧?在屏幕中输出一到100,那我们把这个空格去掉呢,大家可以看到哈,会报一个错误,语法错误,所以这里大家切记一定要写空格,空格空格啊,这也是我们新手经常犯的一个错误啊,那这是V循环,那除了打印一到100的数字以外呢,我们还可以去打印啊,一到100之间的一个偶数,那偶数怎么打呢?同样啊,那我们写一个temp啊,临时的一个变量,然后我去判断什么呢?我去判断I100分号二啊,除商取余,这叫磨除对吧?磨除除商取余是否等于零。那我们嵌套一个shall,呃,一个if循环,如果I看啊绝对等于零的话,怎么样说明什么?它是一个偶数对吧,就是除商取啊,它是一个偶数,那没有否则哈,那紧接着的话就是I呢,等于I加一啊,那也是其其实就是这句话V判断是否小于等于100,如果小于等于100的话,I初尺值是一,那紧接着I磨除二是否等于零,那一除以二是否等于零,不等于零对吧,那不等于零的话,这句话不成功,那就直接略过了这句话,就到了这这一句话,那这句话呢,就会I等于I加一,那I这时就等于二,二是否小于等于100呢?小于等于100,那二模除二的话是否等于零了,计划满足对吧?如果等于零的话,就会打印出来,所以这就是一个啊。
03:50
做一到100之间偶数,打印偶数的一个案例,我们看一下。
04:01
啊,这个位置写错了啊,又有写错了,少了一个括号,好,这就打印到了,呃,偶数对吧?那好,除了我打印数字,在屏幕上打印数字以外呢,比如说我现在要创建一到100之间的一个偶数文件夹啊,一到100之间的一个偶数文件夹怎么创建呢?我创我make,先make d一个临时的这个文件夹,我把我的程序呢,复制到临时的文件夹,哦,进入到这临时的文件夹中,那其实就是把这句话eo对吧,换一换,替换成make t I就好,好我打我执行一下啊,大家可以看到没有报任何错误,说明这个啊,She小本形成。
05:02
成功了,这时候啊,LS一下当前的目录呢,大家可以看到哈,已经帮我创建了一个数字的文件夹,一到100之间的偶数啊,一到100之间的偶数,那这是这个。命令替换的一个用法,好,我们看下一个案例啊,下一个案例,那这里还有一种用法的话,就是它可以读文件,怎么读文件呢?Well read why do的,我要把ETC下的PSSWD文件呢二行打印出来,就这样打印就可以了,其实我直接一下十点SH啊,大家可以可以看到哈,它已经打印出来了啊,按行打印出来了ETC下PSSWD中的所有的文件行数啊,大概执行的一个过程就是line啊,把ETC下的你要打印这个文件每一行的文件呢,重定向到这个while语句中啊。
06:18
从定向到外语句中,它就会按read line来读每一行的形式,直到读到行尾啊,同时把这个一行了打印到屏幕上,那在打印文件行的话还有一种写法啊,这种写法可能会更容易理解一些哈,是我cat一下ETC下PSSWD对吧,管道重定向到这个well循环,再把把它打印出来,那这里我更推荐上面这种方式哈,更推荐上面这种方式,它的执行效率会比下边这种方式呢,会更快一些,好,那这是打ETC下这个PSD的信息这样一个案例,好,我们接接着往下看哈,外循环中的最后一个案例就是死循环。
07:12
怎么死循环呢?其实就是while true。Welltu,啊,Do,我执行。没有保存,大家可以可以看到哈,它就会往屏幕上不断的打印这个hard work啊,不断的打印hard work,因为它的循环是一个死循环啊,是一个没有结束状态的一个循环,所以它会不断的打印出来,那么退出怎么退出呢?按CTRL加C。
08:11
CTRL加C好,CTRL加C退出,那我们再来看一下啊,这种死循环啊,死循环well true,也就是说这个条件呢,永远不会为假对吧,永远为真啊,那它就会不断的执行中间这句话,那这是一个死循环,那通常这个死循环用于什么呢?啊,通常用于这种程序的检查,比如说我判断一个文件的状态是否有变化,对吧?那我就会写一个死循环,然后不断的判断这个文件的MD5值,如果有变化的话,说明它被篡改过,我就会通知。这个服务器的管理员啊,这是VS循环,或者说我们可以写一些守护进程啊,不断的在后台运行的这样一些程序,那都适用于这种啊,死循环的一种方式,那这是well中的死循环,嗯,好,那这就是well的所有的案例啊,我们再来回顾看一下哈,那这里看到我们介绍了well啊的话,它有多种的书写方式,甚至你可以把它写成一行也是可以的哈,但是这里我们如果要是写文件的话,写需要文件的话,就是需要脚本的话,更推荐大家写这种方式啊,更推荐大家写这种方式,那我们书写的过程中呢,建议大家怎么写呢?Well对吧,条件冒号度do,先把这个语法的整个结构写出来。
09:53
啊,先把语法整个结构写出来,那中间位置的话是你要做的一些东西。
10:02
然后再去写这个条件,大概是这样一种写写书写的方式,那这是well的几种写法,同时呢,我们也介绍了一下V的案例,打印一到100的数字,打印一到100间的偶数和读,按文行来读,那更推荐按行来读文件的话,推荐这种书写方式哈,那这种这种方式的话,对于我们初学者来讲的话,更加容易理解,但是效率上没有上面这种方式更快一些,所以我推荐上面这种书写方式。那最后一个案例的话就是死循环啊,永远为帧,如果要退出的话,死循环的话呢,就用CTRL加C的方式,那这种呃死循环的方式通常用于写一些守护进程,或者是这个守护进程检测一些文件的状态,那比较适合这种死循环的一个。应用场景那就是well,好,那这节课呢,我们就介绍到这里。
我来说两句