• shell 流程控制


    1 if else语句

    1.1 if语法

    #多行
    if  条件
    then
        命令
    fi
    #一行
    if 条件; then 命令; fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1.2 if else 语法

    if  条件
    then
       命令
    else
       命令
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1.3 if elif else 语法

    if  条件1
    then
       命令1
    elif 条件2
    then
        命令2
    elif 条件3
    then
        命令3
    ……
    else
       命令N
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    1.2 demo

    提示"请输入你的考试成绩:" 接收用户输入一个成绩, 之后使用if else条件句判断
    要求1: 小于 60 输出"不及格"
    要求2: 大于等于60 并且 小于70 输出"及格"
    要求2: 大于等于70 并且 小于80 输出"中等"
    要求3: 大于等于80 并且 小于90 输出"良好"
    要求4: 大于等于90 并且 小于等于100 输出"优秀"
    要求5: 以上不符合输出"成绩不合法"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    #!/bin/bash
    read -p "请您输入您的考试成绩:"  score
    if ((score<60))
    then
       echo "不及格"
    elif ((score>=60 && score<70))
    then
       echo "及格"
    elif ((score>=70 && score<80))
    then
       echo "中等"
    elif ((score>=80 && score<90))
    then
       echo "良好"
    elif ((score>=90 && score<=100))
    then
       echo "优秀"
    else
       echo "成绩不合法"
    
    fi
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    在这里插入图片描述

    2 内置命令:test

    Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

    2.1 语法

    if test 数字1 options 数字2 
    then  
    ...
    fi
    
    • 1
    • 2
    • 3
    • 4

    options具体如下:

    参数说明
    -eq等于则为真
    -ne不等于则为真
    -gt大于则为真
    -ge大于等于则为真
    -lt小于则为真
    -le小于等于则为真

    2.2 demo

    #/bin/bash
    num1=1 num2=1 num3=2
    echo "num1=${num1},num2=${num2},num3=${num3}"
    
    
    if test $num1 -eq $num2
    then
       echo "num1 和 num2 相等"
    else
       echo "num1 和 num2 不相等"
    fi
    
    
    if test $num3 -gt $num2
    then
       echo "num3 大于 num2"
    else
       echo "num3 小于 num2"
    fi
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述

    3 流程控制:case语句

    3.1 语法

    case 值 in
    匹配模式1)
        命令1
        命令2
        ...
        ;;
    匹配模式2)
        命令1
        命令2
        ...
        ;;
    *)
        命令1
        命令2
        ...
        ;;
    esac
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    3.2 demo

    #!/bin/bash
    read -p "请输入一个0-7的数字:" number
    case $number in
    1)
       echo "星期一"
       ;;
    2)
       echo "星期二"
       ;;
    3)
       echo "星期三"
       ;;
    4)
       echo "星期四"
       ;;
    5)
       echo "星期五"
       ;;
    6)
       echo "星期六"
       ;;
    7)
       echo "星期天"
       ;;
    *)
       echo "您输入的数字无效"
       ;;
    esac
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    在这里插入图片描述

    4 流程控制:while语句

    4.1 语法

    while 条件
    do
    	命令1
    	命令2
    	...
    	continue; # 结束当前这一次循环, 进入下一次循环
    	break; # 结束当前循环
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4.2 demo

    #!/bin/bash
    read -p "请您输入一个数字:" number
    let i=1
    while (( $i <= $number))
    do
       echo "第${i}次打印: hello world"
       ((i++))
    done
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    5 流程控制:until语句

    5.1 语法

    until 条件
    do
        命令
    done
    
    • 1
    • 2
    • 3
    • 4

    5.2 demo

    #!/bin/bash
    read -p "请您输入一个数字:" number
    let i=1
    until (( $i >= $number  ))
    do
       echo "第${i}次打印:hello world"
       ((i++))
    done
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    6 流程控制:for语句

    6.1 语法

    for var in item1 item2 ... itemN
    do
        命令1
        命令2
        ...
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    #start:  循环范围的起始值,必须为整数
    #end: 循环范围的结束值, 必须为整数
    for var in {start..end}
    do
    	命令
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    for((i=start;i<=end;i++))
    do
    	命令
    done
    
    • 1
    • 2
    • 3
    • 4

    6.2 demo

    #!/bin/bash
    echo "##########循环方式1############"
    for i in 1 2 3 4 5
    do
      echo "第 ${i}次打印:  hello world"
    done
    
    
    echo "##########循环方式2############"
    for i in {1..5}
    do
     echo "第 ${i}次打印:  hello world"
    done
    
    
    echo "##########循环方式3############"
    for((i=1;i<=5;i++))
    do
     echo "第 ${i}次打印:  hello world"
    done
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    6.3 无线循环

    for((;;)); do 命令; done
    
    • 1
    #!/bin/bash
    let i=1
    
    for((;;))
    do
       echo "第${i}次打印: hello world"
       if test $i -eq 10
       then
          break
       fi
       ((i++))
    done
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    7 流程控制:select语句

    select in 循环用来增强交互性,它可以显示出带编号的菜单,用户输入不同的编号就可以选择不同的菜单,并执行不同的功能. select in 是 Shell 独有的一种循环,非常适合终端(Terminal)这样的交互场景, 其他语言没有;

    7.1 语法

    select var in menu1 menu2 ...
    do
        命令
    done
    
    • 1
    • 2
    • 3
    • 4

    7.2 demo

    #!/bin/bash
    echo "您的爱好是什么?"
    select hobby in "编程" "游戏" "篮球" "游泳"
    do
       echo "您选择的爱好是:${hobby}"
       break
    done
    
    echo "您的爱好是: ${hobby}"
                           
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

  • 相关阅读:
    RFM模型
    【Java 进阶篇】JavaScript 正则表达式(RegExp)详解
    Python算法图解(一)数据结构的分类和基本运算
    ArcGIS+Fragstats软件进行景观格局指数分析(附练习数据下载)
    内容长度不同的div如何自动对齐展示
    Redis从入门到精通
    【STM32】入门(二):跑马灯-GPIO端口输出控制
    剑指 Offer 05. 替换空格 Java
    信息学奥赛一本通 1368:对称二叉树(tree_c)
    S7-200SMART PLC模拟量应用及创建库文件的具体方法
  • 原文地址:https://blog.csdn.net/qq_34125999/article/details/125475435