00:00
好,这节课呢,我们来继续聊一下Linux下的shell的条件语句。那么在learningnu下呢,它的条件语句呢,是有很多的书写方式,那每种方式呢,有它的一些呃,常用的场景,那通常也是最常用的书写方式呢,就是方式一,好,我们来直接看一下这个案例哈。那来看一下这个if这个案例,判断这两个数是否相等,好,我直接把案例复制进来啊,刚刚为什么乱码呢?因为它输入进来的是一圈中文默认的这个编辑器的字符集呢,不是UTF8啊,我刚刚设置了一下UTF杠八啊,大家可以看一下在这个位置啊,Siteco等于utf杠八,好,那当前呢,我们就已经把这个啊讲义的案例复制到了我的呃,Linux系统中,那我们来看一下这个程序啊,它是首先做了两次赋值,那第一次赋值呢,就是把十复值给了a 20复值了给了B,那这里要看一下这个AB是否相等,如果相等的话,那它就会打出这句话,如果不等的话,就会打出这句话,那实际上大家可以看一下它是否相等的,肯定是不等的,对吧?
01:22
那这里在书写的时候呢,大家一定要注意哈,特别是新手,那在she中呢,经常容易犯的错误就是这个if这个位置和方括号这些位置中呢,都是有一些空格的,那这里大家一定要注意哈,好,那确认没有问题以后保存看一下,执行一下。看那a is not equal To B啊,也是一不等A这个十不等于20对吧?啊,我这里模拟一个错误啊,比如说我去掉一个。空格大家可以看啊,这里边有没有报错,如果去前面这空格的话,这里边看刚刚报了一个错对吧?那如果我去这个位置这空格了,大家可以看一下效果哈,放大一下好保存一下,那它就会报一个错误,大家可以看到啊,报了什么错了。
02:16
这个程序呢,最终呢,还是执行了哈,他告诉你这里啊,A不等于B啊,但是他报了一个错在第五行啊,Command not found,那在第五行我们看一下啊。大概在这个位置对吧,其实就是这这个位置呢,少了一个空格,我把这个空格补充上去以后呢,我们再次执行的时候呢,它就不报错了,那这也是初学者经常犯的一个错误哈,这里大家一定要注意,那刚刚这种书写方式呢,也是在呃she中的一个最常用的啊,If条件判断最常用的一个书写方式,这里边需要大家加注意哈,其实它shell中的默认用的是字符串啊,比如说所有类型用的是字符串,所以它判断等于和不等于,它是用这个字符串的形式来判断它是否等于的,并非是数学方式啊,这是呃这个案例,好,那我们退出,我们看一下第二个案例哈,那第二个案例的话,其实就是这种数学的啊匹配方式了,我们再打开一下案例啊。
03:26
把它删掉,我直接来好,那这这个方式呢,是判断I等于。100啊,I等于100,那I是否大于十呢?那肯定是大于十的,对吧?那他这句话会不会打出来呢?肯定是会打印出来的,我们保存看一下效果哈,会不会打印出true来,可以看到哈,这时候是会打印出处,所以这个呃,双括号是什么意思呢?通常是用于数学比较,数学比较的话,也就是说我们可以说大于等于,小于等于或者是等于,那它是用数学的方式进行匹配的,那大家可以发现啊,这个数学方式匹配的时候呢,它的语法呢,要比刚刚方括号呢更简洁一些,比如说它没有那么多要求啊,在放括号这个位置呢,这一个位置啊,A的左右都是要有空格的,比说A这个变量左右都是要空格的,那在竖学方式中呢,它就不是这样要求的啊,这里需要大家了解一下,那双括号呢,通常是用于数学方式的一个比较。
04:46
好,那我们再看第三种方式。好,我直接把案例复制进来,那这句话什么意思呢?它其实是把这个啊字符串反斜杠后反斜杠复制给DR这个变量,然后呢。
05:15
判断这里加了一个命令啊,CD点判断什么呢?判断这个命令返回是否为真,如果为真的情况下,就是它会执行这句话,Now is there on can会有什么样的效果哈,首先我们直接执行一下home,看可不可以啊,可以的哈,大家可以看到可以的,那所以我在执行期的时候呢,我们可以看到啊,它会打印出那now is in home,然后我PWD一下,那其实我在执行这个shell的时候呢,它是派生了一个紫禁城,那紫禁城以后呢,会进到这个home目录,并打印出这句话,那它是怎么判断出来的呢?其实就是啊,用CD执行,CD执行这个啊,进入这个DR,它判断的是什么呢?判断的是这个Dollar问号这个变量,如果我ls home啊存在的话,它会返回什么呢?零啊,如果我LS,比如说我加一个AA,那这个目录显然不存。
06:16
哎,对吧,那我在打印Dollar问号的时候呢,它就会返回一个非零的数字,所以这个if怎么判断呢?它是判断这句话执行以后Dollar问号,这个问号是否为零,如果为零的话,就代表呃,为真啊,这句话为真它就会执行这个now is in there啊,那否则呢,就什么也不值行对吧?那我们来改一下哈,那比如说home后边我加一个A,那这个目录存不存在呢?刚刚我已经测试过了啊,肯定是不存在的,对吧?那我指定一下这词指定什么呢?它会什么也不输出啊,因为这句话没有为针对吧?那这就是if的几种书写方式和不同的书写方式在不同场景下的。
07:16
一些使用,那我们再来回顾一下啊,那第一种方式的话,通常是用于这个字符串的匹配,那第二种方式呢,是主要用于这个数学方式的一些匹配,那第三种方式的话,通常是用于这种命令的返回结果啊,来判断它最终是否执行成功,那这是呃,If的几种书写方式。好,那这节课呢,我们就介绍到这里。
我来说两句