linux shell 编程:if、elif、else、then语句

概述

在之前学习的程序,都是 顺序执行,根据编写的顺序,从上到下运行,如下:

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

注意: 在 [] 中使用变量,标准写法要加 "",如:"$变量"


原文出处:/show_1GW2DzQ16wxh.html