00:00
大家好,欢迎大家继续收看上硅谷的云计算课程,我是沈涛老师。这节课呢,我们来学习最后一个变量类型,预定义变量,那我们之前说过,我们Linux下的变量不是按它的这个值的类型来分的,而是按它的这种就是我们的系统里的进义的分类,那分了这样的四维用户资定义环境变量,位置参数变量和预定义变量这样四维。但是啊,我们说实话。其实这两个变量,位置参数变量和预定济变量,大家其实都可以看成是预定济变量,为啥?什么叫预定级变量?就是我事先把名字和作用确定好,你不许再改了,只能改,你改你里面的值,只能修改值,那位置参数变量其实也是这样的一种情况,它是用来是不是向我的这个脚本中传递参数,对吧?那么哥呗,那。之所以把位置参数变量给它单独拿出来,是由于什么?它的这几个变量类型,就我们上节课讲了这几个呢,它的作用有点类似,再一个它的数量也也比较多,所以有一些的资料里。
01:12
把它单独列出来,但是也有一些资料里把未知参数变量就和预定义变量放在一起了,这都是没问题的啊,那我们来看看预定义变量,那这时候它就如果把未知参数变量单独提出去,它就只剩这样三个变变量了,其中最常用的是第一个变量,后面这两个变量呢,我们简单了解一下,因为有一些东西我们暂时还没讲进程ID号,包括后台。后台运行我们都要等到后面讲系统管理的时候才能说,所以啊,这两个变量其实也用的不多,大家知道一下就行,那最关键的还是问号。这个变量里面保存的值是你上一条命令。它的执行的返回状态。
02:02
哎,也就是说你在执行到了问之前,就查询到了问里边的值之前,最后一次执行的命令,它的返回状态。这个状态可以是零,如果是零证明啊,大家公认的,或者说所有写命令的人都确定好了,只要是这个返回值是零,代表上一条命令正确执行。如果这个值是非零,哎,非零啊,不一定就是一,那么它是由于由什么,由你写命令这个作者他来决定。用来干嘛调试的,比如说比如说报某一个错误,我给他确定返回值是一,报另外一个错误我确定是二,其他错误还有错误确定是三,那我只要这个命令执行的时候报错了,我一看它的返回值是一啊,我就知道哪个地方报错了,OK,所以。这个非零的值啊,它是不确定的,是由写命令的这个作者他来决定的。但是统一规范是。
03:00
只要是零,就证明上一条命令正确,如果只要是非零,不论是这个非零的是哪一个数,都代表上一条命令报错。当然啊,这个返回值啊,做命令调试其实也只对作者有用,为啥?只有写程序的人我可能才知道啊,我我定了定义了这个非零代表了,比如说我定了127这个错误值代表的是什么含义,那普通用户呢,我就算看到这个数,我如果不问作者,或者作者没有对外公布,我也不会这个确定这个值代表什么,我们后面啊会教大家写这样的脚本,我们自己来手工定义这个返回值,你就能更明显一点,现在你就记得啊,只要记得,只要是非零就代表上一条命令错误,那么试试啊。那我们随便执行一条命令,Alice,对吧?那这条命令正确执行了,那我们看看到了没?刀问里的值,看它是不是就是零,各位刀问记录的是在执行刀问或者查询刀问之前最后一条命令,它的反馈状态明白了,那如果比如说这条命令报错了,把命令打错了,再查到了问,看它的值就是127,那这个时候我们可以就可以确认了,在Linux当中,如果这个返回值是127,就应该是你把命命名打错了,嗨,对吧?那只要是非零。
04:22
这个值就认为它上一条命令报错,哎,那这个有啥用啊,有比如说我们写一个脚本。我要写一个脚本,我要确定一件事,比如说我想判断阿帕奇,比如说就很简单,阿帕奇有没有运行。那我怎么确定它呢?有很多方法,比如说我还可以干嘛,我搜索一下系统当中有没有阿帕奇的进程ID号,如果能找到,也就是说这个搜索命令,这个返回值,查询它的返回值,如果能找到,它是不是就返回值就为零,那么确认阿帕奇就这个正常,如果返回值不等于零。
05:01
返回值不等于这个,这个含义代表不等于零,那是不是证明阿帕奇是不是没有启动,那我就再执行我其他的命令,哎,我可以通过这种方法来判断我的某一个判断式或者某某一条命令它是否运行,从而简化我这个写脚本的这样一个难度,OK,这是一个通用思路啊,包括我们前面讲的这个,还记得吗?往前翻啊。什么?多命令顺序执行,你还记得吗?稍等啊,找一下东西比较多。多命令顺序执行,那这个时候我们也在说这儿看到了。双按的符是不是逻辑语,它的意思是第一条命令正确,第二条命令是不是才会执行?而逻辑或呢?它的是第一条命令错误,第二条命令是不是才回执行,那他们怎么知道逻辑与和逻辑或是怎么判断呢?其实就是判断第一个命令的返回值。
06:01
那如果是逻辑与,那就是第一个命令的返回值是零,命令二才会执行,如果第一条命令的返回值不等于零,命令二就不执行,而如果是逻辑或呢,它就是第一条命令的返回值不等于零,命令才执行,那么第二条命令的返回值等于零才执行,诶,这个就能看懂了,各位。我们写书啊,和讲课顺序不太一样,思路也不一样,为啥?讲课的思路是这样的,这个东西如果我没有讲,我其实就不应该在课程中出现,比如说在讲多命令,多命令顺序执行的时候,这个东西没有,那我就不应该讲,等我讲到了回头再告诉你。因为我们的学员是要求有一定的顺这个逻辑顺序,但写书不是写书的思路是什么,我要把跟他相关的东西全部给它写在一起,哎,这样的话才可以这样,这个原因很简单,书是可以来回翻的,你前面看没看明白,后面一翻啊,来回翻可以,所以写书它的思路是只要相关内容都要写在一起,所以啊,可能讲课的时候和这个书啊,稍微思路有点不一样,因为我们这篇文档其实就是咱们那个出版的书籍的这个一个精要版或者简要版啊,那这样的一个内容好了,当然书籍要比这个上面要复杂一些,有更多的例子大家可以用来参考,好,那这个我们可能就能理解了,这个为什么这里写的Dollar Dollar问是么,各位。
07:31
这个还是非常常见的,但如果手工执行啊,大家可能会觉得很二。啊,到在这儿手工执行,大家会觉得很二为啥?我想要知道上一条命令有没有正确执行,有没有报错,我何必还要查你这个东西呢?我一眼不就看出来了,阿拉斯命令正确之前,它就执行有结果了,那有报错它就会有命令提示,那就报错,还是这句话,哎,各位,你为什么这么想?原因你是站在人的角度想的。
08:00
人用有眼睛,你能判断,我一眼就能看出来,程序不行啊,你写程序的时候,比如说就是我刚刚说的,你要判断前一条命令有没有正确执行,正确执行了我才能执行后续的操作对不对,那这种情况下你不能说程序来,你看这条命令啊,你睁大眼睛看我这条命令是不是正确执行了,对不对,程序看不了啊。所以他是不是就得用程序的思路来完成,我可以进行一个这样返回值,这是系统帮我定义好的,其实都是为了简化你的程序操作,对吧?那我可以通过命令执行完判断,紧接着判断它的返回值,通过这个值的结果,哎,这是一种量化指标。这量化就是说我就判断它是零还是不是零,我就可以轻易的判断前一条命令是不是正确,执行程序需要通过这样的方式才能确定你之前的判断它是否正确,OK,所以啊,各位不要觉得这种做法很二,那这个在写程序中经常用到,非常常见,你可能要记得有这样一个东西,OK,所以我们说。
09:03
预计变量当中。我们最常用的这个变量就是本这个后期,后期也会大量使用,我希望你们大家能听懂。其次剩下这两个就用的不太多了,一个是叨了,叨了它返回的是,这里面记录的是你当前进程的ID号,啥意思啊,看我们看看Windows,看Windows右击任务栏,任务管理器,这里是不是就有系统中所有正在运行的进程,看到了那每一个进程啊,Windows下它的进程它是靠名字来区分的,Linus呢是靠ID号来区分的,给它起的名字叫做PID进程ID号。那Li Windows下有进程,那linus肯定也有啊,所以它会记录各种进程ID号,那这个呢,就是记录你当前运行的进程ID号,而到window记录的是后台运行的最后一个进程来电号,什么叫后台?各位看,Windows我们放最小化露出桌面,我问你,我下面这些玩意儿关了吗?还在运行吧,但是它是不是也没有在前台运行,它是不是放入了后台?Linu Linux呢,也有前台和后台之分,那这个里面到了感叹号里面记录的就是后台的进程ID,那这两个可能。
10:17
这个在实际写程序的时候出现的几率其实就比较少了,各位哎,所以呢,这个大家知道一下就好好那行了,其次呢,我们说这就是我们的预定变量,我们主要学习的还是导了问号,当然我再说写程序的时候,虽然是这个成就,后边两个我说不常用,但是笔试题这个都是同样的出现几率啊。如果笔试题出这样的硬概念,你背不下来,这个东西其实还是很那个什么的,很那个那个伤伤分的啊,好了,各位。那我们这节课呢,我们就把变量就讲完了,我们系统下的四种变量类型,我们都做了这样一个介绍,OK,当然还是这句话,到底后面写程序的时候,你用不用,怎么用,其实都还是你来说了算的。
11:07
好,各位,那这节课的内容就是这样,我们下节课再见。
我来说两句