一、if语法的定义
-
bash shell会按顺序执行if语句,如果command执行后且它的退回状态是0,则会执行符合该条件执行的语句否则后面的命令不执行,跳到下一条命令。
-
当有多个嵌套时,只有第一个返回0退出状态的命令会导致符合该条件执行的语句部分被执行,如果所有的语句的执行状态都不为0,则执行else中语句。
-
返回状态:最后一个命令的退出状态,或者当没有条件是真的话为0。
1、仅有if
例1: date命令测试if
- 因为if语句后面跟的是命令 ,所以会执行命令 并且判断命令的退出状态,如果命令的退出状态是0,就执行then语句。
1 | #!/bin/bash
2 | if date #如果能够正常执行date命令
3 | then
4 | echo "it works" #就输出it works
5 | fi #date命令的执行结果也会被输出
例2:
1 | #!/bin/bash
2 | if dateeeee #如果能够正常执行dateeeee命令
3 | then
4 | echo "it works" #就输出it works
5 | fi #如果不能执行dateeeee,就跳出if语句,执行下面的内容
6 | echo "we are outside of if"
例3: 若/etc/passwd文件里与student用户相关的语句存在(退出状态为0),就找到指定的文件
1 | #!/bin/bash
2 | testing=student
3 | if grep $testing /etc/passwd
4 | then
5 | echo "The bash files for user $testing are:"
6 | ls -a /home/$testing/.b*
7 | fi
例4: 判断输入的a和b是否相等
例5: 判断num1是否大于18并且num2<60
2.if -else语句
例1: 判定输入的值a,b是否相等
例2:
1 | #!/bin/bash
2 | read num1
3 | read num2
4 | if ((num1>=18 && num2<=60)) #同时满足多个条件时用&&相连
5 | then
6 | echo $num1
7 | echo $num2
8 | else
9 | echo "Sorry."
10| fi
3.if-elif-else语句
- shell支持任意数目的分支,当分支比较多时,可以使用if elif else 结构
格式:
- 注意:if和eilf后面后要跟then
例1: 输入年龄判断所处阶段