Linux与Shell学习--shell系列8--流程控制1(if判断)

这次来学习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了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘阿童木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值