00:00
大家好,欢迎大家继续收看上硅谷的云计算课程。我是沈超老师,这节课我们继续来学习12编程,我们来看看多分之if语句。这个其实也不太难理解,也很好理解。那么它的格式是这样。If判断条件,如果条件一成立,那么执行这个动作。二或者。条件二成立,则执行这个动作还可以继续r if,然后条件三,如果条件三成立,执行这个,如果前面的条件都不成立,最后执行这个这个动作。它的区别啊,和前面这个我们的双分支和单分之一啊,它都是只能判断一个条件,就说条件成立则怎么办,不成立则怎么办。而这个多分之F呢,它就可以干嘛判断多个条件。那我们先写一个简单的例子,然后我们待会儿再做一个复杂的例子,先写一个,比如说我想写一个例子,判断用户输入的这个文件是一个什么类型,什么类型文件。
01:07
哎,那我们干嘛写一个,比如说这里是F几啊,3.sh,那我们写一下。那我们首先干嘛,我是不是首先要求你来给我输一个文件read,然后杠P 30秒杠P。那我们请输入一个文件名。A fair。Name。好,把它就保存在发内当中,这个变量当中可以吧,那干嘛输了之后呢,我现在是不是要进行判断了,但是我问你啊。你觉得这个用户他这么听话吗?你让他这个输一个文件名,他是不是就输了,他是不是有可能啥也不输,或者乱输一气啊,我是不是都要考虑在内啊,所以我第一件事先判断的事情是你有没有输东西。
02:04
杠C,咱们讲过变量为空,这个变量事物为空是吧?如果为空则为真,那么就报错,直接报错了,杠C是不是就是证明你啥都没说我就报错,请你输入一个文件名对吧?那我们先判断第一个为负。杠Z,杠Z里面的内,我判断内。哎。好,我就判断你有没有输入东西,如果有。如果没有,那么如果没空来直接干嘛艾?呃,直接就报第一个错吧,比如说111,这是第一种错误,你没有输入东西。对吧,那接下来怎么办呢?那我们他输了对吧。但是有可能他输的不是一个文件,他乱输了一通,所以我说不还要检测你输的是不是一个文件,对吧,那杠议是是为件文,是这个文件为振,那我现在要干嘛,如果是不是文件,我是不是就要报错,否则不能执行,所以各位我前面加了个取反,目的是为了干嘛让他不是文件的时候则执行这个如果不加取反杠一是是文件就为真。
03:20
对吧,那时候就要往里嵌套了,那我觉得还是别嵌套,就直接l if往下判断更合理,对吧,所以我就是啥。然后呢?取反杠一,然后Dollar name Dollar name写的有点长了,那么各位这里是判断什么,你输的是不是一个文件名,那如果不是取反,我再说一遍,这个之间有空格啊,否则会报错啊,如果不是,那么。如果你输的不是一个文件名,报第二个错二二,这是报错了。那么R,然后呢,怎么办?
04:04
然后怎么办?我判断那前面两个词啊,第一个判断你输入内容了,第二个判断了,你输入的是一个文件,那我是不是就可以判断文件类型了,你输的是普通文件还是目录文件,如果是普通文件,就说你这是一个普通文件,如果这是一个目录,就说这是一个目录,如果最后都不是,既不是普通文件也不是目录文件,那我就说那他就是其他文件类型,那也就是说其实就是什么。就是什么,就是比如说是链接文件啊呃,块设备的块设备文件啊等等,那么就行了,我判断两个就行了,对吧,如果他这个Dollar。是普通文件。对吧,那么。就不做错IQ。这个家伙。Fair,就是普通可以吧。然后呢,艾瑞。
05:01
如果你输了,这个东西是一个目录。对吧。That。Echo这个家伙生录这个文件名变量没下回起短点,这敲起来太别太别扭了啊,到direct,哇塞。D,行,就这样吧。好了,否则else。这就打错了啊。RFL,否则L干嘛?如果这些都不是,则说这是一个其他文件,OK。I。Dollar PH。It'other好,行了,就这样吧,各位。非常简单的一个FA的这样一个多分支,但是我这里多说一句啊,啥事那我问你。
06:03
我说过程序是不是顺序执行的。说过了。那我问你,如果我第一个东西就已经判断他是报错了,比如说你没有输东西,我这里是不是就已经执行了报错信息了,但是我问你。我如果这里只不过按照我这样写的,我第一个其实已经判断完了,我后续的程序还会不会执行。还会吧,因为我的程序是不是顺序执行,我说过这事儿对不对,那我说了,我第一个都已经判断他是报错了,那后面他肯定不是普通文件,也不是目录,那我执行后续的内容是不是就浪费资源了,对不对?所以啊,我认为什么,那这样的情况下,我是不是如果第一个判断它确实在这里干嘛,如果他在这里确实是没有输入东西,我没必要让他执行后续的内容,我就应该跳出程序执行怎么办?讲过吧,那我后面可以加个值。这个值就是命令的返回值。
07:00
啥意思,我再打开一个终端。你看我们前面讲过,LS正确执行到了,问里面保存的是不是就是零,如果不正确执行,命令打错了。这里面是不是就会是其他的值,非零返回值,各位我前面咋说了,我说这个值返回到底返回多大的数,其实是写LS命令或者写Linux的人说的,如果你写的这个命令是不存在的,它就报这个127返回值,那我这里就是我在定义返回值。如果你没有在这里输入文件名,那么我退出,同时把这个值附在Dollar问这个Dollar问这个变量中,那如果是第一个报错,那我去查道论论,它的值就应该是一,或者我随便编,比如说101。诶,我可以自己来进行这个返回值啊,那第二个是不是也有这个问题啊,第二个是不是也有问题,你输入了虽然有东西,但是不是文件面你乱输了一种,我是不是也没必要再去检测后面的东西,那我干嘛e sit对吧,我来返回是换成102,我自己可以定义。
08:07
我就只就我能看懂,我用来调试程序用的,比如说我没有让他报这个明显的错误,没有让他报我的程序,可能不想看这样的一些输出,那我这种情况下,我是不是就直接进去返回值就行,然后如果程序不正确执行,我查到了问我一看是101,我就知道这一段程序出了问题,诶这个都可以用来调试程序,哎,其实输出一行信息也是个典型的调试程序的这样一个方法。程序执行到后面没有正确执行,我要判断哪个里边出错了,我是不是可以在中间输出一下,如果这里正确输出了,证明前面就没问题,如果到这没输出出来,那就证明这一段出了问题了,对不对?那好啊,返回值也可以做,那我这里就是输出报错,返回值报错都有。行了,那后面这个你不要再加返回值了,为啥你判断它不是文件对吧,那你帮机在这里e sit退出了,那它是不是就不会再判断它是不是目录了,那是不是就不对了,所以只有前两个这种报错的情况下,把它退出出。
09:12
这样就合理了,那我们试试。那我们赋予职权限。F3,好,那么我们F3下让我输入一个文件名,我啥也没输,他报了是不是111错误,那么AQ到问,看着。里面是不是101。那让我输入一个文件名,我乱输入一通,那么是不报二二的错误啊,那我开口到的问是不是报102看到了吗?他会把exit X后面这个值给附入到Dollar文当中看到吧?好,那那我们写一些普通文件,比如说我这有个ABC。那我们就干嘛输入文件名ABC,他就说这是一个普通文件,那目录呢,比如说我输入一个root目录,他告诉我这是一个目录。
10:04
对吧,那如果你还有其他文件,比如说DV下的SDA3,那他就说了,这是一个其他文件类型看到了,诶,那这样的话,我的这个F3是不是就可以正常执行了。好各位,非常简单的一个多分之因素啊,这个用于判断什么,有多个条件用于判断,哎,是这样的,那双分制和单分支只能判断一个条件,对吧,好了,非常简单的一个被复语句,被复语句啊大各位。If语句确实不难,但是这是程序中最主要的语句,大家可能要熟练掌握好了,那这节课的内容就是这样,我们下节课再见。
我来说两句