20.5 shell脚本中的逻辑判断
格式1例子:(要注意有空格)-gt是大于的意思
写成脚本就是:
格式2例子脚本:(比第一种多了一个else,意思是反之则怎么样)
我们也可以看一下它的执行过程
格式3例子脚本:(意思是大于4显示>1,大于1并且小于6则显示<6 >1,既不大于1也不大于6则显示nook)elif等于又加了一个条件判断,可以写多次
如果想直接用>或<,那么就用这种格式:
大于:-gt
小于:-lt
等于:-eq
不等于:-ne
大于等于:-ge
小于等于:-le
条件我们也可以写多个:&&表示并且,||表示或者
20.6 文件目录属性判断
第一个例子:
意思是如果文件$f存在那么执行echo $f exist,不存在就创建这个文件。
剩下几个例子写法和上面类似。
判断是否可读可写可执行是根据当前执行用户判断的。
平时我们这样用的比较多:(意思是如果这个文件是普通文件并且存在的话,那么就删了它,这里的&&表示前面的成立才能执行后面的。)
它的效果等同于,所以还是比较方便的,他只需要写一行。
中间的&&换成||这表示前面的不成立才执行后面的。
前面加叹号则是取反。
20.7 if特殊用法
第一个特殊用法的例子:(如果没有红框部分,那么当lalal文件不存在的时候就会报错,也就是一个bug)
其实我们遇到这种情况完全可以给它加一个-f的判断就更完美了。(这个时候-z的判断就可以不用了),要记得加exit退出,不然不存在这个文件的时候,它还是会往下执行。
-n和-z的意思是相反的,意思是当变量a不为空,所以它也可以用来判断文件的内容是否不为空。(变量需要双引号括起来,但是文件不用)
也可以判断变量是否不为空,(这里的b变量是空的)
我们还可以使用命令的结果作为判断条件。
比如说我们想看看系统用户中是否有user1这个用户,我们就会想到用这个命令:(w表示一个单词,是为了避免会有user11被匹配出来)
那么我们可以这么写脚本,(但是它会输出红框内容)
不想显示输出那么我们可以使用-q就可以达到目的。
反之如果user1不存在,那么我们可以这么写
20.8 case判断
当值为value1的时候,怎么这怎么样
当值为value2的时候,怎么这怎么样
除此之外又怎么样(除此之外用*)表示)
;;表示一个判断结束。
在case中是可以使用|的,如value1|value2)他的意思是或。
下面我们来写一下脚本:
这个脚本的目的是让用户输入一个数字,然后用这个脚本去判断这个数字的范围。复制代码进去的时候记得去掉特殊符号。
read是让用户输入,末尾的n是捕获用户输入的字符的变量名。
exit后面的1,就是$?的值。(也就是说如果脚本只有这一段的话,执行完之后值为空的话,用$?检查错误的时候会显示1)
n1这一行的意思是判断输入的是否是数字
(当输入的是数字会被清空,
表示n1不为空的话输出后面的内容,并且$?显示1,也就是说输入的不是数字的话就不会清空,那么也就非空,非空的话就会输出后面的内容(意思是让你输入一个纯数字))
/20.9 case判断
如果为空,也就是用户输入的是数字的时候就会往下走,
表示输入的数字小于60并且大于等于0的时候我们标记为tag为1,(这是一个变量,因为我们需要用case判断,tag=1这个变量是为了case判断准备的)
格式与上面一样,else就是不满足如上条件那么tag=0,这种就是输入超过100的情况。
然后我们就开始使用case判断,使用了上面的tag1-4变量。
我们可以执行一下试试,也可以看下它的执行过程。