这次来学习shell的流程控制语法,在shell中有多种控制语法,首先来看最常用的if判断语法。
目录
1、if单分支判断
(1)if判断为true
(2)if判断为flase
2、if双分支判断
(1)if条件为true时,走if条件下代码模块1
(2)if条件为false时,走else下代码模块2
3、多条件分支判断(1)if-elif(不带else的情况)
(1)if和elif的判断条件都为true
(2)if判断为flase,后面的elif判断为true
(3)if和elif的条件都为false
4、多条件分支判断(2)if-elif-else
(1)if和elif判断条件都为false,走else分支
1、if单分支判断
先说下shell中if单分值的基本语法
1
2
3
4if 判断条件 then 子代码模块 fi
if单分支总结下,如果if判断为true,就走到then下的子代码模块,直接子代码模块的内容,如果if判断条件为false,就不执行then下的子代码模块,直接结束了。
(1)if判断为true
1
2
3
4if (( 8>5 )) #判断8是不是大于5 then #如果8>5成立则继续向下走 echo "33" #子代码模块 fi #结束语法格式
代码截图:
输出结果:
(2)if判断为flase
1
2
3
4if (( 8<5 )) #判断8是不是小于5 then #如果8<5成立则继续向下走 echo "33" #因为8<5不成立,所以没有走到子代码模块 fi #结束语法格式
代码截图:
输出结果:输出结果为空
2、if双分支判断
先说下双分支判断的基本语法
1
2
3
4
5
6if 判断条件 then 代码模块1 else 代码模块2 fi
if多分支相比较单分支来说,如果判断条件不成立,会去执行代码模块2的内容,整体流程是,先判断if条件是true还是false,如果是true就执行代码模块1的内容,如果是false就执行代码模块2的内容。
(1)if条件为true时,走if条件下代码模块1
1
2
3
4
5
6if (( 8>5 )) #判断条件为8>5是否为true then #判断8>5为true echo "8>5成立" #走代码模块1,输出8>5成立 else #因为if判断为true,所以不走else代码模块了 echo "8>5不成立" #不会走到该代码模块 fi #结束语法
代码截图:
输出结果: 8>5成立
(2)if条件为false时,走else下代码模块2
1
2
3
4
5
6if (( 8<5 )) #判断条件为8<5是否为true then #判断8>5为false echo "8<5成立" #因为判断结果为false,所以不会走到该代码模块中 else #因为if判断为false,所以走到了else代码模块了 echo "8<5不成立" #执行代码模块2,输出结果为:8<5不成立 fi #结束语法
代码截图:
执行结果:8<5不成立
3、多条件分支判断(1)if-elif(不带else的情况)
多条件分支1 if-elif 的基本语法:
1
2
3
4
5
6
7
8
9
10
11if 判断条件1 #第一个判断条件 then #如果成立走到子代码模块1中 子代码模块1 elif 判断条件2 #第二个判断条件 then #如果第二个判断条件没成立,走到子代码模块2中 子代码模块2 elif 判断条件3 #第三个判断条件 then #如果第三个判断条件没成立,走到子代码模块3中 子代码模块3 fi
整理流程是,先判断if的第一个判断条件,如果判断结果为true执行子代码模块1,然后不往后执行,如果判断结果为false,去判断第二个判断条件,如果判断结果为true,执行代码模块2,然后不往后执行,如果判断条件为false,则继续往后执行,就是从上到下,按顺序进行条件判断,如果有true就执行对应的代码模块,然后结束,如果为false就一直往后执行,直到最后,如果都不为true则返回为空,所有代码模块都不执行。
(1)if和elif的判断条件都为true
1
2
3
4
5
6
7if (( 8>5 )) #判断8>5是否成立 then #判断结果为true,走到代码模块1 echo "8>5成立" #输出结果为8>5成立 elif (( 8<10 )) #因为上面有一个条件成立了,所有不会进行后续的代码判断了 then echo "8<10成立" fi
代码截图:
打印结果: 8>5成立
(2)if判断为flase,后面的elif判断为true
1
2
3
4
5
6
7
8
9
10
11if (( 8<5 )) #判断8<5是否为false then #判断结果为false echo "8<5不成立" #不执行代码模块1的内容,继续下一个判断条件进行判断 elif (( 8<10 )) #判断8<10结果为true then echo "8<10成立" #执行代码模块2的内容,打印8<10成立 elif (( 9<10 )) #由于上面的判断条件成立了,所以不继续往后判断了。 then echo "8<10成立" fi
代码截图:
执行结果:
(3)if和elif的条件都为false
1
2
3
4
5
6
7
8
9
10
11if (( 8<5 )) #判断8<5判断结果为flase then #所以不走该子代码模块 echo "8<5不成立" elif (( 8<6 )) #继续判断elif的判断结果为flase then #不执行该子代码模块 echo "8<6不成立" elif (( 9<7 )) #继续判断elif的判断结果为flase then #不执行该子代码模块 echo "9<7不成立" fi #都不满足所以返回为空
代码截图:
执行结果:
4、多条件分支判断(2)if-elif-else
这时候就可以加上else出来,如果if和elif判断条件都为false,就执行else的子代码模块
多条件分支2 if-elif-else 的基本语法:
1
2
3
4
5
6
7
8
9
10
11
12if 判断条件1 #第一个判断条件 then #如果成立走到子代码模块1中 子代码模块1 elif 判断条件2 #第二个判断条件 then #如果第二个判断条件没成立,走到子代码模块2中 子代码模块2 elif 判断条件3 #第三个判断条件 then #如果第三个判断条件没成立,走到子代码模块3中 子代码模块3 else 子代码模块4 #上面判断条件都不成立,走到else分支,执行子代码模块4 fi
(1)if和elif判断条件都为false,走else分支
1
2
3
4
5
6
7
8
9
10
11
12
13if (( 8<5 )) #判断8<5判断结果为flase then #所以不走该子代码模块 echo "8<5不成立" elif (( 8<6 )) #继续判断elif的判断结果为flase then #不执行该子代码模块 echo "8<6不成立" elif (( 9<7 )) #继续判断elif的判断结果为flase then #不执行该子代码模块 echo "9<7不成立" else #上面都不满足走到else分支 echo "都不成立走else分支" #执行else分支的子代码模块,打印都不成立走else分支 fi #结束语法
代码截图:
执行结果: 都不成立走else分支
总结下就是:如果只有一个需要判断的,看情况使用if就好,如果需要有多条判断,然后这几条还都是有需要满足条件的,就可以使用if--elif,再每行加上需要判断的条件,如果想要的是,这几个判断结果都不满足后,输出一个其他的,就可以用 if - elif -else了
最后
以上就是炙热大神最近收集整理的关于Linux与Shell学习--shell系列8--流程控制1(if判断)的全部内容,更多相关Linux与Shell学习--shell系列8--流程控制1(if判断)内容请搜索靠谱客的其他文章。
发表评论 取消回复