00:00
好了,我们继续来学习这编程基础啊,那在前面呢,我们曾经看到过这种用法,就是如果有多个命令。我们想把它作为一个整体一块来执行。那如果我们按照。命令顺序这么写在一起啊,比方说LSRD和name,那么我们这样写它并不是作为一个整体执行,而是按照你这写的分别执行。如果我们期望把所有的执行结果作为一个整体,那我们有两种写法啊,一种写法就是小括号写法啊,还有一种是花括号写法。
01:05
这两种写法都可以做到把多个命令咱们合在一起整体来执行的效果。那最终执行完了以后,我们可以把这个命令的执行结果给他发送到,比方说我们发送到一个文件里去保存起来啊,比方说啊得了,那这时候大家看这里面放的就是三个命令的总的执行结果。那除了这种方法,我们也可以选择用花括号写法。不过这个这个通用命令需要加一个分号。那再来看。跟我们刚才小括号的写法似乎结果是一样的,对吧?那么这个到底这两个括号虽然说都能够把多个命令组合在一起,成为一个整体执行。
02:10
但是他们在执行的时候,背后的逻辑是不一样的。如果你用发括号。它将影响当前我们的环境,因为它会在当前的进程中执行。而小括号它将运行在子进程中,也就是运行在它的下级线里。大家记得我们曾经用这个命令是可以看到当前的进程的编号的。啊,我们也可以用PH了解当前的竞争负关系,我们看到1592。那在这对吧,啊,那如果用小括号,它将会在里面开启紫禁城。而画画画它就会运行在当前线中,不会在里面开启图形程,那这个怎么去证明这一点呢?啊,我们可以这么来写,就是我们。
03:09
哎,在里面我们直接去写。那我们把它停下来。我在花括号里面,刚才说了,它会运行在当前的进程中,所以我们在执行,大家看1592,那现在我再开一个新窗口,我们观察一下它的这个执行的。怎么给看那。在这吧。好,在这我们用PH来看看。啊,在这1592,大家看它这里面有一个sleep,但是前面我们显示的时候,好像这写的是1592对不对,哎,那么也就意味着我们现在它不会开启紫,但这个sleep的运行,它还会开启紫禁城啊,那但是我们现在这个内部命令啊,或者是一些这个变量啊,它是在当前的实验中执行的。
04:17
啊,如你要开启一个单独的这样的一个进程啊,比方说一个外部命令,它就会开启紫禁程啊,那现在我们把它停下来,如果我们换成小括号,咱们再来看一下。啊,小括号的话,最后这个分号就可以可以加了啊,大家看2211不一样了啊,你再看。发现了吗?是不是开启了一个子进程,而sleep成了它的子子进程了?发现了吗?那这就是它的逻辑,那当然如果我们这样做带来的结果呢,就是因为你开启紫禁程,在紫禁程中我们定义了一个变量,比方说我们在这儿定一个叫内容的变量。
05:10
啊,我在这儿去把它打印出来。打印出来啊。那在这我去定义内,然后我执行完之后。那请问我这里面能不能看到这个内容。能不能看到马哥呀?为什么看不到呢?你这个地方你在上面看,它是在紫禁城里定义的,所以负进程是不是不可能访问到子进程的变量,但是如果我们又换成了花括号写法。
06:00
啊,然后再来看是不是就值了理解了吗?哎,所以我们在负进程中。当然现在实际上用画括号写法,因为你是在当前share执行啊,实际上我们这样写就跟你没有加画括号一个道理,实际上你这样写就跟一样,就就就这样就行了。啊,在当前12月就行啊,所以面试的时候呢,曾经也面试过这样的题目啊,我这儿有一个类似的面试题,大家可以看一下啊,啊就这个。这个命令,这个命令呢,大家看一下,你不看答案的话,你能不能想出它的执行结果啊,啊,我退出来重新把变量清理一下,重新连一下啊,大家看现在执行这个命令,你觉得这次打印,这次打印以及最后一次打印。分别他们显示的结果是什么?
07:06
第四打印是什么啊,你看你想象的对不对啊。啊,这个地方呢,略微可能有一些出乎意料的地方,就是我们这这这个变量是在紫禁程里,对不对,紫禁程我们这个是附进程定义的变量,对吧,那附近的变量这紫禁程既然看到了,那但是它这个是一个环境变量吗?不是环境变量,环境变量是需要加port的。对吧,既然也看到了,然后在第二次打印的时候看到的时候,这里面王的纸第三次把打印看到的仍然是什么。
08:05
看到吧,所以这个结果跟我们之前讲的略微不同,所以小括号的特性呢,希望你能把它记住了啊,那么在官方的文档里面,这边有划括号和小括号的一个文档说明,看这就慢,里面有,他说小括号里面写的指令将在子sub中执行。看到吧,然后他说变量的赋值和内置的变量,他没说外部命令啊,就是变量赋值和内置命令将怎么样呢?在share环境不保留,在这个命令结束以后会保留影响什么意思?就是说当我们这个命令执行完毕以后,这两个操作是不会影响。执行完毕以后的环境,也就是说你执行完了就完了,只是在你自己内部的小括号里面产生影响,执行完了不会影响外面的环境。
09:05
看明白了吗?这句话稍微有点绕啊,大家看这句话啊。而画括号写法这个呢,它是在当前现环境中执行的,发现了吗?哎,所以呢,这个地方是不太一样的地方啊。啊,所以我们现在把刚才的命令呢,再换成花括号。再换成花括号。哎,那如果换成画括号,大家想象一下,第一次打印,第二次打印,第三次打印分别的结果是什么?啊,你自己想清楚啊,看看你是不是答案。这也算是一个互联网的大厂问的一个题。
10:02
看看,你答对了吗?对吧。嗯。好,这是咱们看到的这样的一个结论啊,希望大家把这个结论呢啊记住了,这个将来也是面试呢,经常问到的题目啊,问到的题目。好,这是咱们给大家说的这两个符号的区别。那这个符号是我们经常会用小括号来实现一个目的,就是比方说我就想临时生效。那执行完了我就不想要了,这时候你就用小括号,因为小括号只是在这个小号里内部有效,比方说我现在就想执行一个这个切换,这个目录切换完了以后呢,打印一下行了,我就完事了。
11:00
完事了,那当我执行这个时候,一回车他就会把data下的文件列表列出来。但是等你执行完了,他还是还会在哪个目录里。是在对待下,还是在当前入加里,是不是他还在当前用户的加盟的,它不影响后续的环境,它在小括号里面就是一次性生效,临时性的理解了吧,所以这个是很有意义的啊,再加上比方说我们曾经提到的you must。比方说我想建一个文件,这个文件生成的权限是600,那么我们就可以改成066,然后我们建一个文件,哎,我把它用小号括起来。
12:00
执行完了以后,那你看一下这个文件,它的权限是不是就是600。同时影响了我们以后的用must吗?不影响明白了吗?这就是小括号的经常的常见用法,就是如果是一次性的,你就把它小号括起来,不要用画括号啊,画括号的话,它会影响后续的所有环境了。啊,那你把它换成括括号,那就麻烦了,你换成括括号以后的事,大家都是这个了。哎,你看这个画括号,哎,你看你这样做的话,你看你跟牛妈之间是不是变了对不对,理解吧,哎,所以呢,在用的时候呢,现在就明白了,小括号这个小写法是非常有意义的啊,就是临时性的,一次性的,哎我又不想影响别人,你就可以放到小括号里面。啊,执行一次就算了,当然我们这个也没关系啊,因为我大不了重新注销,又马上又回到原处了,是吧,因为我们写到文件里嘛,没写到文件里它也存不住的是不是,嗯。
13:08
好了,这是啊,小括号的这个写法。那在我们前面呢,给大家学过这个短路与短路破,那么。在系统中如何来实现与或这些操作呢?我们在单中号里面,它可以支持杠A和杠O。它可以支持叹号,就是虚反。嗯,那中括号,注意这个中括号。反而双中的话,还真的不支持杠A和杠O,那如果你要想支持,那就换成啊这个两个at的括号,而且要用短路与短路过,所以这个稍微有点特殊啊,这个地方咱们说双共号呢是呃增强版,但是呢,个别地方还是有一些区别的啊,那么这个地方它可以把两个啊判断表达式放在。
14:05
杠A的左侧、右侧实现了并且的关系,也就是说,如果这两个条件都成立及最终结果才是真,那么将来我们就可以利用这种。判断啊,实现一些并且的关系啊,比方说我就想判断一个文件是否可读并且可写啊,那这时候我们就可以这么来下来试了,这个文件可读吗?这个文件可写吗?哎,我们就可以用这种方式来实现了,那判断完了以后呢,我们看看结果吧。是吧,两个条件都成立,因为我是root呀,啊root什么都不能干呀,啊但是呢,他有执行权限吗。
15:00
还能读,能执行吗?能执行吗?不能执行对吧?啊,这个文件它没有执行权限,哎,所以这就是杠A-一。好,那么还有就是杠O,或者那我现在把它变成杠O的话,那就成了或者的关系了,或者的关系是不是只要有一个条件为真,结果就是真,所以那现在按照这个逻辑,我们现在应该是真了吧,对不对,而因为有毒吗?有毒就行了嘛,哎。这就是他的这个,当然你也可以再接接着加啊,比如说我们还可以再过。明白吧,或者在杠A都可以串起来啊,串起来你可以多个条件累积啊,啊,当然也可以去反啊,你像我现在有没有执行权限呢,现在是没有执行权限的,没有执行权限啊,我们也可以取反,取反呢,这加个叹号,那取反。
16:08
当然这个叹号呢,我们在前面讲,在前面讲。在这加,在这加实际上也是可以啊,取反的吗?啊取反啊啊这就是这个雨货啊货。那将来我们如果我们用双中括号,看看它这有没有支持啊,那刚才我们写的这段代码啊,换成双中卧号。换成双中号,你看这个语法它真的有问题,看到没有真的有问题,所以这个地方略微有些区别啊,略微有些区别好。说。那我们用这种方式实现了多个条件的组合。
17:02
那这个组合呢?我们上午还提到了一个叫短路语的问题。短路与短路过是什么意思来着,我们上午说的所谓的短路,那是不是就是跳过了不执行了,哎,大脑短路了是吧?哎,那我们短路语的逻辑就是当第一个命令执行成功。短路语,短路语用的是这个括号,那如果我们这么写它的实现逻辑,我上午讲过了,大家记得它的什么逻辑啊,就是第一个命令如果为真,要不要执行命令二啊,要如果命令一为假,那就不执行命令二了,对不对,这不就是实现了一个条件判断嘛,啊,所以还有就是短路或,那短路或呢,就是竖线这两个竖线。那它的逻辑呢,跟这个短路语就反了,那就是条条件一真反而就不执行命令二了,不过假我还要执行命令二是不是意思,哎,它是这个意思,所以我们在这呢,大家明白了这个了逻辑以后呢,你再看这个图啊,大家看这个图你就能看懂了啊,你不学这块,这个图很。
18:18
慢动漫你都看不懂啊,大家看这边什么意思呢?他说你疯了吗?对吧,快停下来,你会死的是吧?这是一个什么呀?诺夫玩的游戏啊,这可不是一个诺夫玩的游戏啊,这个你得有赌气玩一玩啊,很刺激,什么刺激呢?看看这个命令大家看啊,你看中括号,然后Dollar中括号等百分号,六等百分六,这是不是就对六取模是不是取出模来等于等不等于零对不对,等于不等于零,那如果等于零,那么我们就要执行RMRM那这是短路语啊短路语那如果前面成立了就执行RM,那如果不成立,那是不是就执行A口lucky boy对不对?那也就是说1/6的几率吧,是吧?1/6的几率这个模拟的什么呢?就是手枪,左轮手枪里面有六颗子弹啊,实际上模拟的就是这个1/6的几率是吧?经常不有堵这个的吗?
19:31
嗯。啊,所以咱们现在可以来试一试,这个到六等于零吗?等于就三根不等于,那click再试一试是吧,再接着敲啊在这接着敲click。那咱们来试试啊,看看这回运气好不好啊,如果命中了,咱们今天买彩票啊,哎,你看就一次机会啊,走,哎呀,看来没中上是吧?没中啊,没中呃,发给你们,你们自己中去吧,你们可以试试了啊,可以玩一玩是吧?Click直接来,有没有中的同学啊,咱们班这么多同学呢,应该有中的啊,这个有中的同学你可以提前今天考虑考虑买个彩票,明天刺激一下。
20:53
啊,咱们上午呢,讲了一下这个T的指令啊,T指令呢,去比较两个字符串相同啊,它实际上是用一个等号,然后比较数字相等呢,应该是用EQ的,所以这个图呢,实际上画的还有点小问题的啊,这个图画的它用的是双等号。
21:21
看到吧,哎哟,这个胡胡大虾厉害啊啊大侠啊,这个地方它写的是双等号,双等号实际上这个地方有问题,你看我这用的就是什么呢?我写的是EQ是吧,因为双等号是在谁用的是双中文号用啊你们运气挺好啊,运气挺好是吧。文杰也比较运气好啊。对,一次不行,再来个六次,怎么也得碰上他中了才对,是不是?
22:05
好,这是这样的一个指令啊,看来大家运气都不错啊,这位同学可以买彩票,郝总你这个运气不行啊,你这个啊,郝总你你这个连着好几次都中不了,哎。你是不是拿别人的电脑一试就中了,自己的机器不行啊?好了,那这是刚才我们给大家讲的啊,这样的一个短路语啊,当然这个短路语呢,我们现在就可以来做点事了啊,干嘛呢,就是我们去实现一些真正有价值的东西啊。啊,比方说我们去判断某个数字是不是大于多少多少大于80,大于80咱们就报警。啊,那现在我们就可以来实现了,比方说根据利用率现在不是不到才13嘛,对吧,那我们就自己先编一段脚本吧,这个脚本那我们的作用就是来检查分区利用率是不是大于80啊,我们就起个名字叫disc check。
23:17
把我们之前用过的那个写了一部分的命令题拿出来了,我们就挑分区利用率最大的那个数字,把它附到柚子这个变量里面,然后将来我们再写一个报警的变量,叫war。这个比方说我们现剩阈值80,如果啊,如果柚子啊大于,当然这个大于是呃GP啊,当然这个你也可以用小括号啊,也可以用小括号,两个小括号这个也都可以啊,两个小区括号呢,这个高了都可以不写了。
24:00
啊,直接是数字运算啊,数字运算,比方说warning,那这个直接大于号就行,这算术它允许这么写啊,哎,Warning如果大于80,那么我们就怎么样呢?就执行邮件报警,邮件报警我们就可以写一个什么Dis这个这个比方说磁盘磁盘报警。然后利用管道发邮件杠S。啊,我这写一个这个warning的报警啊。然后给谁发呢?比方说给这个这个我的我的邮箱发我的邮箱是。把我的QQ写上,怎么给放这去了?这个小键盘,这个键盘咋。
25:22
开了灯是亮着呢,不好使,你看这个小键盘有问题了啊,终端。这是没有这个有问题啊,那我就先这样啊,293820这Q号,然后直接给我发,当然我这个邮箱还没配呢啊,这个咱们说了要发邮件怎么发来着,这个不支持吗?这个插线。
26:05
这个需要调一下是吧。没改吗?这个是不是这个小键盘没开开是在终端键盘是吧?呃。上面。不在这儿。普通,你看他这个普通。那普通不行吗?确定啊,看看好,这小键盘不好使了,好了,那现在我们这样做完,做完以后呢,我们回到这边来啊,那还是不行啊,一进来还是不行啊。
27:02
好,那我先这样吧,然后我这个邮邮邮箱,我现在还没有那个配置呢,啊,等我把这个邮件拿过来,我之前那个邮箱把它转过来。呃,在这邮邮件没有。好。第三个。先考到桌面上吧。然后再给他拉过来,要拉的话呢,我放到呃放到放到这吧,放在家目录里也行,然后我追加到ETC没有RC放在这里面吧,这样就可以了,那这样的话,我现在登录一下QQ来收一下这个邮件报警啊,我QQ。
28:22
好,然后接着我来试一下,看能不能发这个邮件,我先测一下,然后然后没有杠S。呃,没有,他说邮件没发出去,杠S。29308686,那这个应该也没关系啊。
29:01
去吧。诶,来了是吧,那邮箱写错了,然后现在我们在这儿就可以来,当然我们现在怎么去得到这个邮件的,就是这个磁盘空间的利用率呢。那我们现在要想拿到分区利率,我们前面讲过方法了,首先怎么做拿到这个图序利率啊,啊,我们先可以把那个硬盘先过滤出来,咱说脱字符DVSD开头的,这是我们关注的是吧,关注的然后我们要要这个数字对吧,这个数字怎么去取出来呢?啊加加就是我们把多个空格换成百分号,哎,然后我们再去取他的第几列呀,第五列是吗?来第五列,然后用他,你咋知道特你这是运气好了。
30:18
它不一定每次都在最下面呀,对不对,那你先排完序啊,排完序以后啊,我们再取第一个,哎这样就行了,对不对啊,当然这个我们先把它命令先拿出来放到这,哎,这个是不是我们就取出这个利用率来了,对吧?哎,利用率当然我这个空间因为实在是没有达到,所以我就设个十吧。这样的话超过十就报警了是吧,超过十我们就报警,哎,好好看一下这个脚本,哎,这是我们目前咱们实现的。那现在我们就来跑一下这个脚本,看看能不能报警,应该达到我们定义的这个了,看来了,看到没有,是不是邮件来了,你能看见的,这不就实现了吗?当然我们现在还做的不是很完美,因为我们是不是希望计算机自动的去执行这段脚本,比方说每隔十分钟,每隔半个小时跑一遍,你想现在我们写好以后,难不成我们手工去写吗?
31:25
手工写我看它干嘛,我还不如自己敲一敲命令呢,对不对啊,那事实上将来我们是可以让计算机自动执行的,将来我们可以定一个啊,这个任务让他到期每十分钟自动执行,不过这个脚本你需要自己写就行了,明白了吧,这样就行了啊,这样就行了。所以初步的咱们这个报警脚本已经实现了磁盘空间的检查,这个是经常做要做的事,经常做的事啊。
32:02
好,那现在我们还有一个需求希望能实现,就是我们要判断某个用户是否存在。如果不存在,就创建此用户,并且给他设置初始口令。那这个我们实现一个出创建用户的指令,那这个指令怎么去实现呢?比方说我们用这个命令,这个脚本来判断用户存在不存在,那这个用户呢,我们用do一传进来啊,我们叫user,哎,他到一。传进来,我们对DOLLAR1进行判断,DOLLAR1应该传进来是个用户名,但是我怎么知道这个用户存在不存在呢?如果用户用户存在,那我就直接执行,那么判断用户存在的方法实际上很多种,实际上我们有一个最简单的方法就是ID,那如果看到的,你看这是不是显而易见是不存在的,对不对?哎,所以我们现在就可以用这种方法可以判断用户的存在性。
33:20
因此我们就在这就可以写了ID Dollar u,当然它有没有错误结果有可能会有输出,因此我们都要把它扔到垃圾箱里。嗯,如果。输出结果,这个执行的命令是为真,那说明成功了,成功了,存在了,存在了,那我们就创建用,就是提醒我们此用户存在,请你重新输入一个新的用户,对吧?所以这时候我们怎么办呢?哎,我们就可以这么写,说这个用户已经存在,Apple说这个user啊,Isit是吧?哎,存在了。
34:07
那请你重新输入,请你重新执行啊,那当然你也这样,执行完了以后呢,你就退出了,后面就不执行了,那退出怎么写啊,这但你这样写这样行吗。你这样写的话,那。这样写的话,这两个是不是想相当于这是一个命令,这是一个命令,那换句话说,不论你这个找到找不到用户都要退出,所以我们只是说这个存在了才执行这个,并且退出,我们是不是要把它作为一个整体,这个整体诶当然用小括号,还是说画括号啊。我们说把多个命令放在一起的话,有两种写法,画括号和小括号是吧,那现在用花括号小括号啊啊,如果用小括号行不行呢?
35:04
那我们先写个小括号好吧,来先写个小括号,那现在如果这个用户是存在的,那我就要执行打印,说这个用户存在了就退出了,如果不存在,那紧接着我们是不是就把这个账号建起来,那不存在怎么做呢?不存在咱们再写一遍吗?那事实上用不着,我们可以来两个竖线。就把它两个串起来一块用,那大家想前面的命令不成功。前面令命令成功了就执行它,那不成功了,这就为甲了嘛,对不对,因为甲了,那么我们是不是就是不执行后面的命令,那固定命令呢,它已经,那我们就接着去看这个为甲,后面就执行后面的命令的,那干嘛呢?我们去把它建立起来,User and建立起来啊叫user。建立起来以后,并且打印一句话说这个用户已经创建出来了,当然你也可以顺便把密码初始化一下啊,比方说我们给他设个初始化密码,123456对吧?哎,给他把密码设一下,当然这个密码我要给它初始化了,但是我不能用交互式方式设,对吧?那我们怎么去把这个密码给它设一下,并且不需要敲两遍对不对?诶那我们方法有很多种,比方说有一个最简单的方法就是Dollar user,然后pass。
36:27
还记得这个写法吗?用CH还咱D这不可以啊,这是不是就可以直接把密码给他初始化了啊,然后并且打一句话说此用户已经创建成功是吧?User is啊,Pretty啊,然后呢,我们把它作为一个整体啊,比方说我们就会用花划括号。来执行。
37:02
好,这样的话呢,你看这个命令我们就差不多了啊,当然我们现在看看中间有没有问题啊,好,我们先检查一下语法吧,语法没有问题啊,我们加上执行权限,然后跑一下。但是这个时候呢,我们有可能有人就忘了敲东西了,直接回车了,直接敲回车,这时候会导致什么结果,导致个结果就是有点空的,那么U空的的话呢,那这个ID就相当于它执行了个ID,但是ID是不是也算是成功啊,那这时候它就为真,为真的话,它是不是就要执行这个命令,说是是存在的,然后这个空是存在的,是不是退出了。啊退出了,那这样的话,这个也就是不合理的啊,这应该说如果我们用户没有输入这个到一,我们是不是应该提醒他说请你输东西啊对不对,所以我们这前面还可以再判断一下,就是如果你输的。
38:02
这个ID啊是不存在的,我们应该提醒你重新输入一个ID是吧?啊,所以我们这儿可以再把它完善一下,完善一下,那我们在这儿可以判断,那当然这个怎么判断到这个U点一是个空值呢?那我们说过有一个方法就是直接是不是就是U的,这是不是就是判断它是不是为空。对吧,它如果为空。那这个这个写法呢,就是如果不为空才是真。是吧,为空就是甲了,对不对,是不是这个写法,那现在它要是为空,那它是不是就自然是甲,那么甲的话呢,我们现在就想退出,那怎么办呢?哎,那是不是短路语啊啊短路语说这个优点。哎,比方说打印一个提示,说我这个脚本应该这么写,说create user sh后面跟一个用户名是吧,是不是应该打一句话说我的这个命令的用法是UC啊,你像咱们有些命令呢,如果你写错了的话呢,它会提醒你说这个命令怎么用。
39:18
是不是啊,他会告诉你怎么用,那比方说我这找一个啊,看看有没有这个这方面的一个提示啊,然后这个那随便敲你看这就有提示。是不是告诉你怎么用啊,对不对,告诉你怎么用啊,所以呢,你就可以参考它啊,这个UC值啊,然后告诉你怎么用usage这个单词。Usage啊,然后这么用,后面跟上用户名对吧?哎,这样就行了,并且退出啊退出那我们可以这么来写退出啊,退出的话,那我们写一个错误编号表示退出了,退出的话呢,我们这边用一个放到包括号里面。
40:15
啊,然后我们这边加一个封号好,这样就可以了,这样的话用户如果没有输这个DO1的话,我就直接退出了,对吧,退出了。啊,然后呢,我们再来看一看这个脚本,如果故意的就这么什么也不加,你看是不是退出了,告诉你用法了,那当然我们接下来就跟用户了,比方说跟一个王用户。你看王用户是存在的,退出了,哎,王是退出了,王是存在的,对吧,王是存在的退出了,哎,当然那我们现在表面上看好像没有问题啊,比方说我们再建一个新的账户啊,比方说哈哈。哎,哈哈,创建好了,看起来很美,是不是看起来很美,那中间实际上这有一些小问题啊,就这个地方,我们刚才这用的是小括号,这个小括号啊,它这退出了吗?实际上没有真退出来。
41:16
啊,那为什么这样说呢?你看我这如果加一个这样的指令。我这再加一个指令,说这个finish finish啊,我现在还是执行一下这个好,我再写个啊,发现问题了吗。发现啥问题了,这是不是根本就没推出来,如果推出来这是不应该在执行是不是,那为什么没推出来,就是因为用的是小括号,小括号它是退出一个子线,而不是退出你整个外面的这个附近程。所以它只是退出子进程,整个外面的线,它没有退出,所以一定要退出的是当前的正在执行的线,因此我们这必须要用花括号,听懂吧,这个地方一定要用划括号,当然这个退出的数字呢,你比方说我写个二表示另外一种错误啊,然后再看。
42:20
这回就可以了吧,啊,当然他退出了,那么它里面保存了一个二号错误,是不是我们就知道错误的原因是什么,你自己定义的嘛,一代表啥,二代表啥,你是不是自己查就知道了,对不对,哎,你像刚才我们说的这个,这个是一号错误,一号错误呢,这边它是有这个呃结果的。啊,那这样的话,我们这个脚本就可以带有了一定的啊实际价值了,那我们用它就可以来解决一些实际问题了啊创建账号。啊,这是我们实现的逻辑上的。
43:02
与和护,那当然请大家思考一个问题啊。这个问题我可以不可以换成这种写法?我把这条命令放在前面。然后。这再写二的符号。这样写行不行?就刚才是先逻辑上的短路语,再货,我现在变成了先逻辑上的货,再短路语。那大家看这个命令的执行逻辑大概是这样的,就是存在不存在呀,如果存在,那存在的话,是不是就不执行它了。
44:05
对吧,如果是不存在,是不是就执行它。那我这样行不行?如果是存在不执行他不执行它,能不能执行它。就是换了个次序啊。会不会执行啊,行不行啊,那现在咱们来看一下啊。啊,如果是存在的,那我们就直接写个存在的。如果不存在。出岔子了。不存在,他怎么说说也说信息是存在,不是的。
45:09
这不是说这个意思。它的逻辑是这样的,你这样写,最终实现的效果就是这样,如果是存在,那么它将不执行这条命令,那不存在,那是是存在,那这个是真了是吧,然后这个不执行了,但是整体上已经真了,真的话要不要执行,后面的要执行要执行。好,那如果不存在,这个是不存在的,不存在它是不是要执行它,执行它了以后呢,这个结果成功了吗?成功了,成功了,那么是不是要执行不明的命令要执行,所以换句话说,我们这个命令不论成功失败他都会执行,所以这个逻辑上就错了,我们要想实现目标,是说这条命令是成功在执行,失败就别执行的,失败执行它,所以呢,这里面就告诉大家,就是我们这个与一定要在前面写或一定要在后面写。
46:07
如果你反过来,这个逻辑上是错的。明白吧,所以我们要写的话,也是这一段放在前或放在后。啊。所以希望大家明白啊啊,当然我们一般来讲,在复杂的条件下。用这种写法,那我们画一个图,大家来琢磨一下。啊,我们现在假设有了这样的一个命令。这个命令呢叫CMD,然后at。然后CMD2。然后竖线CMD3,这是我们写好的一个命令。那你这样写,最终实现的逻辑是什么逻辑呢?实现的逻辑是这样,如果命令一,也就这个是命令一为真,它将执行命令二。
47:16
啊,这就实现了这样一个逻辑。那如果命令一为甲。他将执行命令三。啊,这是。啊,这就是实现了这样的一个功能啊,但是如果你要把它换成利润写法。换成了先或后语,那么它的实践逻辑就不一样了,那它的命令是命令E为。
48:09
命令一为真,按照刚才说的,要不要执行命令二,不执行命令二。那他是不是就反而去执行命令三去了?啊,那就是执行命令三呗。啊,那么他就执行命令。三,这是真。那什么时候会执行命令二呢?为甲,为甲。命令,那命令一为甲的时候,它会执行命令二。但是这里面略微有一些区别。就是如果命令一。
49:08
执行的这个完了以后,命令二也是真,如果它为真,命令一为真,呃为为假,然后执行命令二了,它为真了,它为真了,它就会继续执行命令三,当然命令三如果为命令二要为甲。那自然就不执行了呗,啊如果后面还有一个命令。那他就执行命令四去了。啊,当然这个命令四呢,实际上是所有命令最后结束他都要执行。那实现的逻辑就成这个样子。
50:04
看看明白了吗?啊,成了这样的一个逻辑了。所以这种逻辑基本上不用,因为不符合我们希望的实现的目标。这个逻辑我们不用它听了吧,不要这么写,要写就写成这个,你不觉得这种写法很啰嗦,也很难理解,而且不符合我们逻辑吗?正常逻辑应该是第一种吧,对不对?所以我们将来写的话,短路语一定在前,短路或要放在后面,你不要把短路或放在前面去。对不对,因为你这样放的话,这个命令三将来会导致可能啊,成功失败他都要执行命令三。是不是啊?好,这就是他背后的这个概念啊。
51:01
有点绕吧,绕吗?同学们可以吧?这个不算绕啊啊,咱们班里头。有有有有做开发的是吧,咱们那个你们班里头肖丹同学,人家就是做开发的,你们要是脚本不会了,你可以问问。肖丹同学是吧?那个小姐姐啊,不能说大姐姐年龄或许。嗯,好,那他是做Python的啊这个,所以你们将来如果学Python学share啊,觉得有问题可以向他请教啊请教。那刚才我们给大家讲了一下这个写法,希望大家能搞清楚啊。那这个就是短路与短路获得一个组合使用这些,我这里面有大量的案例啊,你们下来可以自己看一下啊。
52:04
那我们现在可以利用这个来实现网络状态的判断啊,什么意思呢?就是我想判断一下我的这个主机是否是可以访问的啊,那么怎么访问呢?我们就可以这么来写P,用P就可以测PIN10.0.0点,比方说七,这个七。现在是拼通的,当然它是不停的P,实际上我们要测它能不能访问,P一次就够了,P一次的话呢,我们加个C1 C1就是P一次,你看我现在随便随便P一个77。你看它是不是就拼不通,当然这个拼不通呢,它这个时间有点长啊,他等了好像有五秒钟,所以我把这个时间缩短一点啊,我把这个缩成一秒,也就是说一秒钟之内,如果对方没有回应,我认为就没有问,就就就就是有网络问题了,对吧,我也不用等五秒,局域网里面用不了一秒。
53:06
如果互联网呢,也许时间比较久,但是在局网中一秒回不来,往往就有问题了啊,所以我们现在当然通不通,我们也不是眼睛观察,我们现在是不是有程序来帮我们判断了对不对,所以我们这样做就行了,然后如果拼通了,那我们是不是就可以把一句话说磁主机是up的,如果拼不通,我们是不是就可以打印,这话说磁机是啊当的。这不就完了吗?对吧,那你看我现在呢,把这个地址给它替换成可以了吧,是不是就可以判断出来了啊,那这段脚本将来就可以判断网络的连通性啊。当然,我们现在还缺少一个。
54:03
全部都判断的手段,比方说我们要判断从10.211直到10.254,总共二百五四个机器是不是都通或者不通。那我们显而见不可能手工的去写这么二百五四个IP对不对啊,所以我们将来接下来还要学习循环,循环写法啊,循环写法它可以让我们同一段代码反复执行,把有些信息稍微改改,比方说这个IP地址换一换,从一一直变到254,执行二百五四次就行了啊。啊,这个是一个网络状态的判断啊,这个是磁盘检查,磁盘检查呢,刚才我们已经写过了,这个写法跟我刚才写的是一样的啊一样的。发邮件报警啊,我刚才做的是磁盘空间的判断,但是工作中是不是可能节点编号也可能会满,节点编号是不是也应该要检检查呀,所以我们不仅要检查磁盘空间,是不是应该在把节点编号的空间也要把它取出来,这两个只要任何一个满了,是不是都是空间满了。
55:16
是吧,所以我们将来可以把这两个都判断一下,所以你看我这就加了两个啊,一个是磁盘空间的利用率,一个是节点编号的利用率,这两个任何一个满足杠O-O就是或者嘛,任何一个满足我们就怎么样呢,执行报警。看懂了吧,哎,这就是磁盘。我们用这种测试条件可以实现多个条件的组合判断了,那刚才呢,我们在判断这个磁盘。啊,或者用户账户的时候,那我们需要事先用DOLLAR1啊这种参数方式实现,但是对于刚拿到你脚本的人,通常来讲上来就给你执行脚本,不会在后面加参数,所以他可能不会用,那所以我们更好的方式啊是就是提醒用户,比方说请你输入。
56:14
什么什么什么啊,你再输这样的话呢,他不就看的清楚,但是你要知道他要怎么用这个脚本了吗?那问题来了,怎么去让用户输入信息呢?诶我们这边有一个叫read的。命令,这个RA的命令呢,它可以支持变量的这样的一个动态交互赋值啊,那这个动态交互布置说的是什么呢?就是它可以人为的。来实现提醒你对某个变量交互赋值,这个用的这个命令呢,是一个内部命令,这个内部命令的用法咱们可以看一下它的说明啊。那大家看Z的后面跟了一大堆参数选项,然后这这个name,这个name呢,放在中号里了,可有可无。
57:09
如果我们内蒙没有输的话,它的功能是什么呢?就是读入一行,从标准输入,并且把它切分成一个一个的字段。啊,那么切成一个字段以后放哪去啊?读进去从哪啊,哎,这地方呢,它有提示说如果没有名字定义,那么你读物的这行将付给谁呀?将付给reply这个变量,那也就是说,如果你直接光读,那么我们就意味着。将来可以来实现变量的,这样回子回车,比方说吧。到哪去了?Reply reply,看,放进去了。
58:01
看到没有啊,当然我们一般来讲还是更喜欢用自己定义的变量,比方说内啊啊啊,现在呢,我们来看一下这个name里面是不是有局了。那现在我们利用这个东西能对变量交互赋值,那这样的话就比较方便了,那比方说我们就想探测一下某一个IP是否是可以连接,所以我们刚才写了一个检查check主机的一个脚本就可以来做了,怎么做呢?就是我们可以用read对输入的IP进行判断啊,这个判断完了以后呢,我们去进行一个。探测啊,比方说P-CW,然后Dollar IP,那如果他拼通了。
59:13
如果拼通了,那我们就执行一个操作,说表示词组机是健康的。是吧?Dollar IP是健康的,健康的啊,健康的,那就是APP吧。如果P不通,就是词组机已经到了啊,那现在你看我们直接执行输IP,比方说10.0.0.7。Up的对吧,啊,随便输一个,这估计能连到互联网去了,那这互联网它真的能通啊这个啊,那输一个我们局域网里的地址吧。这应该是拼不通的,看了吧,但是这个感觉不太好,为什么他不提示我要我干什么,那你自己写的脚本当然知道了,所以我们可以提醒,那提醒的话呢,它这有一个小P选项,这个P选项呢,它能告诉我们去一些提示信息。
60:19
啊,大家看这有个杠P的选项,这个杠P的选项就是在输入之前提醒你一句描述信息让你干什么,所以我们这边可以加一个杠P的一个说明,比方说请输入一个IP。明白了吧,好,这回我们再执行,是不是就好看多了?对不对啊,比方说我们现在就输入一个IP。这不就行了吗?但是是不是仍然还有一种可能性,就是用户输入一个非法的IP?
61:09
这时候你的机器是不是现在对这个是没有判断的,它还会傻乎乎的去拼对不对,而且既然拼出来还up对吧?啊,这个就不对了,所以我们是不是应该判断一下,如果你输入的是一个非法IP,是不是直接就应该提醒他你输入错误是不是,那我们刚才上午好像提到了过一个方法,就是判断你那个IP是不是合法的,是不记得,那怎么怎么判断来着,那我们就把它来完善完善嘛,那我们要判断这个IP是不是合法的,我们是不是用正则表达式去匹配啊,啊,当然这个要用正则表达匹配,我们要用双中括号,然后Dollar IP,哎,Dollar IP。这个判断是用等号波浪弧吧,是不是?呃,前后加上这个东西咋写来着,还记得吗?
62:08
啊,咋写的就是零到九,那我们先零到九啊零到九零到九表示我们个位数对吧,个位数啊,个位数完了以后还有啥货是吧。或那不是个位数,那有可能就是十位数,十位数是第一个数字是多少?一到九,然后后面这个数呢,零到九,哎,我们发现都有零到九,这有零到九,这有零到九,我是不是就可以把它合了啊,合了咋和呀?这是不是就是我们上午说的那个问号,有,那不就十位数没有十位没有那不就是个位数了吗?所以我们就二和二为一,这是不是就可以省略不行对不对,哎,省了省了以后呢,接着我们还有那个百位数了,是吧?这个已经表示出个位数和十位数,呃,个位数和十位数了,就是到99了已经,对不对,那接着还有100到。
63:16
到199那一是固定的那个,剩下的数是零到九,那零到九的话呢,这是几个呀,是不是就是两个呀。是吧,两个吧,哎,两个,然后再竖线还有啥。还有是那这个已经到199了,应该200了二那是固定的,然后二到多少,零到四是吧,零到四,因为它最大二百55,然后这边呢,是零到九零到九,这样的话是不是可以表达到249之间了,对吧?然后接着再货,再货的话是25是固定的,是不就是零到九啊呃,零到五零到五,这样的话是不是就把二百五到255就表示出来了,然后再加个斜杠点,这个点必须要加线,而且它表示点嘛,啊,所以要转移对吧,这是不是就成了那个IP地址的第一段,第一段我们是不是要括起来作为一个整体吧?哎,然后这个东西我们是不是要重复三次啊,重复三次那怎么表示。
64:38
重复三次呢,三对不对,这不就表示出来了吗?然后再加一个什么,再把这个数字再整一下。这就行了吧,那这个点不能要了啊,这点不能要了啊,这样写有没有问题啊。
65:09
好,那大家可以观察一下啊,那现在我们把这些数字已经就是数字点,这已经表示了三次,然后再加一个什么数字啊,这里面呢,有一些这个或的关系表示出来了啊,这个谁谁谁括,然后这样表示,然后有小括号括起来,那这个地方也有小括号括起来。然后做些组合啊,从而实现了这个数字范围的表示,那现在这个我们先这么写,然后如果这个不是数字,那是不是他就违反了咱们这个IP地址的合法性了,那我们现在或者如果就是不成立,那是不是就是这个IP是不合法的是吧?IP不合法不合法咋写那个单词。是不是,哎,还是什么东西的那个单词咋写啊,英语好的同学不合法啊,英就是无效的意思是吧,外的是无效的啊,这个IP地址是无效的。
66:18
啊,然后退出用画括号对吧,这样的话呢,我们这个地址就可以了啊就可以了。那这样我们就实现了合法IP的一个判断啊,那现在我们来判断一下,看能不能判断出来啊,那我们随便胡写一个。随便ABB随便写,诶好像可以,那然后呢,我们现在写一个超过它的地址,这个也不符合法,因为超了嘛,是吧,可以吧,那输一个合法的吧。啊,这个这个一点一点一点。
67:04
这个也不合法,怎么回事?那有问题了吧,那这个有问题了,那我们来查一查,中间出了什么问题。等号不让符。嗯,看着点哪儿出了问题了。不能都不合法呀,都不合法那不是有问题了吗?好盯着点啊,然后这个是一到九。可有可无。然后。这是零到九或二两位数是吧,二零到四。0.9255斜杠点三三个以上。
68:03
啊,我们现在是三个逗,这怎么写了个逗号是吧?啊,你看真是,你看这个眼神好啊,这个是点不是逗号是吧?啊,那那现在我们再来,这怎么还是笑的呀。后面还有吗?应该没有了呀。就是无效,那不符合这个正则表达式呗,啊。中括号双中括号IP,然后IP输入一个合法的IP。是无效的。在这中间,因为这个命令比较长啊,那得慢慢检查一下。竖线,竖线。
69:01
竖线。竖线。小括号括起来。然后这边。括起来做一个整体三次。斜杠哦,这个地方有问题,你这有问题了,这个斜杠。前面应该有个括号,嗯。你没括号的话,它这个斜杠点就成了255组合了。是不是这个括号。他们作为一个整体。啊,整体上来括起来,这些数字作为一个整体,再和斜杠点组合。是不是,然后再来看,随便写一个,哎,这回对了,然后再胡写一个。
70:05
可以了吧,哎,那到时候我们通个通一下呗,可以吧。看明白了吗?啊,看没看明白是吧,看不明白。啊,这是这样的一个命令啊,当然这个命令呢,写起来确实是比较不过呢,倒好,为什么呀,这个鞋不是老写。你写完一次以后就用就得了,以后涉及到IP地址的这个有效性检查,这段代码你生产中就可以拿着用了。现成的啊,你复制粘贴以后不会犯错了吧,是吧?哎,这样的话就可以了啊,所以这段代码你们可以拿回来试了啊,就是地址的一个有效性检查啊,我看我这有没有有没有。
71:08
啊,把这个这个范例给他放在这,检查网络主机的网络状态啊,这个脚本就OK了。啊,当然我这儿还有一些这个。上刚刚我们曾经上午提到的寄兔同笼,寄度同虫呢,我们是用环境用参数方式实现的,那现在是不是也可以把它改成这种交互式的方式了,对不对,这个可以了。
72:06
哎,利用read可以来实现输入的信息,所以这样的话呢,我们这个交互起来就更方便。哎,我现在想实现功能就是判断用户输入的是yes no。那大家看这段代码,实现的就是判断yes诺。你看这段代码它怎么判断yes no的啊,你看它的实现效果是这样的,首先你很富有吧,Yes or no。是吧,那接着我们用户可能就要输yes no了,那问题是我怎么判断他输的是yes还是no呢?那这个yes no呢,用户有的时候输个Y,有时候输个啊no,而且大小写可能还各种变化,我们现在很宽容。他说这种yes咱们信任,说这个也可以,顺着特殊的yes也咱们也忍了啊,No的话呢,这些咱们都可以接受,当然除此之外的别的你不能接受。
73:13
啊,必须是这种像一看就是正常的yes no,那这个要判断用户输的是一种奇奇怪怪的大小写的yes no,那怎么做呢?诶大家看我是这么写的,这什么意思,大Y或小Y这个呢,或啊然后或什么。或者是这个啊,所以这个地方应该写个小括号,小括号如果不是小括号可能有问题啊,如果不带小括号,它的什么意思了,它是这个以Y开头,或者以这些结尾,听了吧。结尾,哎,好,那我们就判断它是不是yes,如果不是yes,那自然你就是no呗,哎,那你很有钱,如果不是yes,那你就好好学习吧,是吧,哎,你就天天好好学习。
74:16
希望以后变成有钱人,那我们就yes,哦,No啊,把这段脚本写进来,写进来以后你是不是很有钱,那我们现在就可以判断了,走,比方说我输一个特殊yes。是吧,很有钱,呃,输一个这个Y,你看是不是也可以啊,我输个no,当然这个就不好好学习啊,这就只能好好学习了,是吧,只能好好学习了,看懂了吧,哎,这就是一个条件判断啊,条件判断来实现。
75:01
啊,那这个readid呢?在面试的时候还会有这样的问题问你,Readid既然是个交互式命令,大家想过没有,它需要键盘输东西,那你马上就想到了,我们是不是也可以支持重定向啊,那重定向是不是就是把标准输入内容重定向,那既然这样,那我们是不是就可以利用比方说A口对这个变量进行一个赋值,比方说马哥。然后用管道对这个变量进行赋值,比方说这个这个换一个吧,换一个叫什么呢啊。起个名字,那现在这个Y这个变量有没有值啊?有没有啊?既然没有值。那没有直是什么原因造成的呢?这个就和我们平常想象的不太一样,大家看在慢方速中,关于这个管道它有一句话,就这句话,他说管道图的前后。
76:14
每个命令是执行在一个什么?紫禁城里大家看懂了吗?紫禁城啥意思啊?哎,是不是说你确实是执行了,但是你是在紫禁城里,我现在执行完了,是在附近城里查,当然就查不到了,对不对?要想执行查到,那你就在同一个子禁程去查,那怎么查呢啊,你放在一块儿,你俩在一起就行了。大家看明白了吗?有了吧,明白意思了吧?哎,这个也是面试曾经也问到过的啊。
77:04
啊,面试出过这样的题目。所以他不是不支持,是支持,只不过他在紫禁城里支持啊。当然,那用这个并列也可以对多个变量赋值。比方说我们用对的有。多个变量分别是XYZ,你也可以对三个变量同时赋值啊,比方说我们赋予一个啊。值,那就是ABC,那现在那我们来看看它的X,它的Y,它的Z有值了吧。也就是说我们是可以同时对多个变量赋值的,但是这个有一个小问题,就是你一定要确保变量的数量和你赋值的结果一定是一一对应的,那如果出现这种情况,比方说这咋办?
78:10
变量只有三个,结果你一下整了四个。是不是就对不上号了,那对不上号了,那X的值是多少?Y的值是多少?Z的值是多少?是不是,那他最后的都给的最后一个。嗯。所以要用这样的写法,一般来讲,你要确保必须一对一,要不就可能会出现这种对不上号的情况。啊。哎,那么有了这个东西以后,我们可以再把我们之前写的那个磁盘管理那个做一个优化了,现在是这样的,我们刚才报警的时候只是提醒我们说磁盘空间满了,那到底是哪个磁盘满了,没收吧。
79:07
是不是我现在想知道谁买了。是他难了,还是他满了?那这个我先希望能说的清楚一点。对不对,哎,我希望能提醒我,比方说谁满了,比方说boot满了,Date满了,还是跟满了谁满。是不是,那这个怎么办呀,那我们是不是把这两个东西都给它留下来,一个是利用率,一个是挂载点都给它留下来,那怎么留下来呢?那咱们刚才写的那个第四课四盘怎么写的,是不是我们现在只是留了一个分区利用率,我们现在不光留分区利用率了啊,我们现在光留了一个数字,那我们这边呢,多留几个,哎,五六。五六哎,这样的话是不是就我们就可以把这个呃boot也给它取出来了啊,当然这个中间我们不希望用不需要用这个百分号作为这个显示的一个结果,那这个输出的时候,我们也可以指定空格作为分格符,那这个用什么作为分隔符输出啊。
80:22
啊,看看有没有一个选项可以输出的时候指定分格符啊用什么来着,用这个out de是不是就输出的时候它默认不用百分号吗?啊那我现在输出的时候用空格作为空格符。这不就成了?对不对,哎,然后再付给read,第一个就是磁盘的利用率,第二个就是文件夹或者是那个分区啊,就是空间分区,还说第四个吧,这是不是就直接有值了,今天有值以后呢,你现在看右子。
81:05
是不是又是被放到了子share里了啊,所以你要想看就必须要在这里面去看啊,这里面去看啊,当然那我们现在负局去以后,我们它放在了子线里面,那将来我们要想在负线里用,你直接这么负的话,还有点问题了。啊,你附进去,它没有放在那个当前的这个线里啊,那所以我们怎么做呢?我们要这样做,我们是不是就在在这附进去,附进去以后。铺进去以后,那管道我还得放在一起吧?啊,你在这儿可以看柚子和第四。啊,这有个封号。诶,哪哪有问题了,前面有个空格,空格是吧?哎,这样的话呢,我们就可以看到它的值了,但是你后续呢,你这样做的话,你用的一些变量你都得在这里面去写,因为放在子线你外面还不能用啊,那你要写的话,接着在这里面写,那在这里面写去判断这个13是不是大于多少,大于多少发邮件都在这里面发啊,所以我们可能这个写起来就不是很方便了,那我们把这个柚子,哎,这个是U点的,打U的柚,这样就可以了,然后你可以判断这个变量是不是一个,呃,合法的大于多少,多少的大于多少,我们就报警,那你在这里面你可以判断,比方说我们可以用中括号啊,判断一下这个Dollar柚子啊,这个值是多少,比方说大于一。
82:59
就我这个是现在很小啊,所以我们就大于十吧,大于十我们就报警嘛,对吧,那大于十报警怎么报啊。
83:07
啊,如果大于十,那我们就加二的符号是吧,比方说发个邮件啊,这个Apple括一下,所以这个磁盘磁盘谁是吧,Is for满了,然后给发邮件啊模女,然后我再写一个邮箱。啊,这样的话呢,我们就发出去了,发出去以后看能不能发,发出去能不能收到。来了吧,看到没,不满了,看到没,这不就成了吗?是吧,如果这个写法实在是括号里面写不方便啊,所以这个知道这样写就行了,好,这是我们给大家实现的。
84:07
Read啊read read呢它还有一些选项啊,这个选项呢,比方说有什么P选项我用过了,S呢是静默,这个静默是适合于输密码的,比方说我们有的时候请你输入,你要改口令,哎,请输入一个密码,请输入你的密码,那密码的话,大家想密码你要放在这一回车,你说123456,别人都看见了,大家知道吗?在Linux里好像我们输密码是不在屏幕显示的。对不对,那它是怎么做到的呢?非常简单,就加一个选项就行了,哎,就是把这个选项给它加上,就这个S选项,S选项一加它就没有密码了啊,那我们来看就不是没有密码就不显示了,你看123456。
85:02
哎,然后呢,你看一下这里面有没有值。是不是有值啊对吧?哎,它就附进去了,所以用这个呢,可以对变量隐藏输出,然后这个是长度,说多长我就停下来不让你输了,然后这个是见到什么符号就停下来,不让你输了,多长时间超时,如果你不停不设置,它永远在这等着,那就一直在这等着啊,比方说我们设一个内容,你看你这要不输,他一直这等等等等,所以呢,我们可以设一个超时时间,这个时间一到你不输,那我就退出来了。啊,它有一个超时时前啊时间T,那我们加上一个T就可以了啊加T比方说在三秒钟之内,我不输就退出,你看三秒123,你看他退出不退出。是不是啊,这就是read的用法啊,好,那read呢,是适合于我们平常写脚本交互式的,所以这个还是挺好,挺常用的一个命令啊,希望大家记住了,好了,关于线脚本,我们基础的这部分已经说了,那么后面还有些配置啊,包括一些控制,这个我们下次课就是堂课再讲,休息一会啊,休息会,待会回来。
我来说两句