• Shell脚本-if else语句


    最简单的用法就是只使用 if 语句,它的语法格式为:

    if  condition
    then
        statement(s)
    fi
    
    • 1
    • 2
    • 3
    • 4

    condition是判断条件,如果 condition 成立(返回“真”),那么 then 后边的语句将会被执行;如果 condition 不成立(返回“假”),那么不会执行任何语句。
    注意,最后必须以fi来闭合,fi 就是 if 倒过来拼写。也正是有了 fi 来结尾,所以即使有多条语句也不需要用{ }包围起来。

    代码1 比较两个数字的大小

    #!/bin/bash
    read a
    read b
    if (( $a == $b ))
    then
        echo "a和b相等"
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    输出:

    84↙
    84↙
    a和b相等
    
    • 1
    • 2
    • 3

    (())是一种数学计算命令,它除了可以进行最基本的加减乘除运算,还可以进行大于、小于、等于等关系运算,以及与、或、非逻辑运算。当 a 和 b 相等时,(( $a == $b ))判断条件成立,进入 if,执行 then 后边的 echo 语句。

    代码2

    #!/bin/bash
    read age
    read iq
    if (( $age > 18 && $iq < 60 ))
    then
        echo "你都成年了,智商怎么还不及格!"
        echo "快继续学习吧,能迅速提高你的智商。"
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    输出:

    20↙
    56↙
    你都成年了,智商怎么还不及格!
    快继续学习吧,能迅速提高你的智商。。
    
    • 1
    • 2
    • 3
    • 4

    &&就是逻辑“与”运算符,只有当&&两侧的判断条件都为“真”时,整个判断条件才为“真”。

    熟悉其他编程语言的读者请注意,即使 then 后边有多条语句,也不需要用{ }包围起来,因为有fi收尾呢。

    if else 语句

    代码

    #!/bin/bash
    read a
    read b
    if (( $a == $b ))
    then
        echo "a和b相等"
    else
        echo "a和b不相等,输入错误"
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    输出:

    10↙
    20↙
    a 和 b 不相等,输入错误
    
    • 1
    • 2
    • 3

    从运行结果可以看出,a 和 b 不相等,判断条件不成立,所以执行了 else 后边的语句。

    if elif else 语句

    注意,if 和 elif 后边都得跟着 then。

    代码:输入年龄,输出对应的人生阶段:

    #!/bin/bash
    read age
    if (( $age <= 2 )); then
        echo "婴儿"
    elif (( $age >= 3 && $age <= 8 )); then
        echo "幼儿"
    elif (( $age >= 9 && $age <= 17 )); then
        echo "少年"
    elif (( $age >= 18 && $age <=25 )); then
        echo "成年"
    elif (( $age >= 26 && $age <= 40 )); then
        echo "青年"
    elif (( $age >= 41 && $age <= 60 )); then
        echo "中年"
    else
        echo "老年"
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    输出:

    19
    成年
    
    100
    老年
    
    • 1
    • 2
    • 3
    • 4
    • 5

    代码2:输入一个整数,输出该整数对应的星期几的英文表示:

    #!/bin/bash
    printf "Input integer number: "
    read num
    if ((num==1)); then
        echo "Monday"
    elif ((num==2)); then
        echo "Tuesday"
    elif ((num==3)); then
        echo "Wednesday"
    elif ((num==4)); then
        echo "Thursday"
    elif ((num==5)); then
        echo "Friday"
    elif ((num==6)); then
        echo "Saturday"
    elif ((num==7)); then
        echo "Sunday"
    else
        echo "error"
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    输出:

    Input integer number: 4
    Thursday
    
    运行结果2:
    Input integer number: 9
    error
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    .NET静态代码织入——肉夹馍(Rougamo) 发布1.2.0
    Java基础——异常
    费解的开关 刷题笔记
    .NET使用CsvHelper快速读取和写入CSV文件
    【牛客网-公司真题-前端入门篇】——百度2021校招Web前端研发工程师笔试卷(第二批)
    (续)SSM整合之spring笔记(IOC ,:bean的作用域,bean的生命周期,bean的后置处理器)(P080—P083)
    sh多种赋值方式和连续输出值
    【持续更新】Spark Submit命令 配置参数详解
    使用git命令提交代码到gitee码云仓库
    博通BCM575系列 RDMA 网卡驱动 bnxt_re 分析(一)
  • 原文地址:https://blog.csdn.net/qq_37279783/article/details/125526536