概述
在之前学习的程序,都是 顺序执行,根据编写的顺序,从上到下运行,如下:
echo "hello world"
echo "呵呵"
echo "哈哈"
提出问题
输入分数,如果分数大于90,打印优;大于80,打印良;大于70,打印中;大于60,打印差,小于60,打印不及格
这种问题,上面的语句将无法实现
条件语句(判断语句、if语句)
格式
注意: [] 左内、右内要有空格,否则报错
if [ 关系表达式 ]
then
代码块
fi
执行流程:
- 首先执行关系表达式,看其结果是
true还是false - 如果是
true就执行语句体 - 如果是
false就不执行语句体
例子
注意: [] 左内、右内要有空格,否则报错,即:[ 与 if 和 5 都要有空格;] 与 2 必须有空格,否则报错
#!/bin/bash
if [ 5 -gt 2 ]
then
echo "5>2成立"
fi
执行结果:
5>2成立
例子:使用变量
#!/bin/bash
# 定义变量
a=20
b=18
if [ "$a" -gt "$b" ]
then
echo "$a大于$b"
fi
执行过程:
if…else 语句
格式
注意: [] 左内、右内要有空格,否则报错
if [ 关系表达式 ]
then
语句体1
else
语句体2
fi
执行流程:
- 首先判断关系表达式看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就执行语句体2
例子
#!/bin/bash
if [ 5 -lt 2 ]
then
echo "5<2成立"
else
echo "5<2不成立"
fi
执行结果:
5<2不成立
if..else if…else 语句
格式
if [判断条件1]
then
执行语句1;
elif [判断条件2]
then
执行语句2;
else
执行语句n+1;
fi
- 首先判断关系表达式1看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就继续判断关系表达式2看其结果是true还是false
- 如果是true就执行语句体2
- 如果是false就继续判断关系表达式…看其结果是true还是false
- …
- 如果没有任何关系表达式为true,就执行语句体n+1。
例子
根据分数打印优良中差不及格:
#!/bin/bash
fenshu=55
if [ "$fenshu" -ge 90 ]
then
echo 优
elif [ "$fenshu" -ge 80 ]
then
echo 良
elif [ "$fenshu" -ge 70 ]
then
echo 中
elif [ "$fenshu" -ge 60 ]
then
echo 差
else
echo 不及格
fi
注意: 在 [] 中使用变量,标准写法要加 "",如:"$变量"



