概述
这次来学习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单分值的基本语法
if 判断条件
then
子代码模块
fi
if单分支总结下,如果if判断为true,就走到then下的子代码模块,直接子代码模块的内容,如果if判断条件为false,就不执行then下的子代码模块,直接结束了。
(1)if判断为true
if (( 8>5 )) #判断8是不是大于5
then #如果8>5成立则继续向下走
echo "33" #子代码模块
fi #结束语法格式
代码截图:
输出结果:
(2)if判断为flase
if (( 8<5 )) #判断8是不是小于5
then #如果8<5成立则继续向下走
echo "33" #因为8<5不成立,所以没有走到子代码模块
fi #结束语法格式
代码截图:
输出结果:输出结果为空
2、if双分支判断
先说下双分支判断的基本语法
if 判断条件
then
代码模块1
else
代码模块2
fi
if多分支相比较单分支来说,如果判断条件不成立,会去执行代码模块2的内容,整体流程是,先判断if条件是true还是false,如果是true就执行代码模块1的内容,如果是false就执行代码模块2的内容。
(1)if条件为true时,走if条件下代码模块1
if (( 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
if (( 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 的基本语法:
if 判断条件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
if (( 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
if (( 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
if (( 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 的基本语法:
if 判断条件1 #第一个判断条件
then #如果成立走到子代码模块1中
子代码模块1
elif 判断条件2 #第二个判断条件
then #如果第二个判断条件没成立,走到子代码模块2中
子代码模块2
elif 判断条件3 #第三个判断条件
then #如果第三个判断条件没成立,走到子代码模块3中
子代码模块3
else
子代码模块4 #上面判断条件都不成立,走到else分支,执行子代码模块4
fi
(1)if和elif判断条件都为false,走else分支
if (( 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判断)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复