• shell流程控制


    条件语句

    1. 算术运算符(拓)
      在这里插入图片描述

    (1)简单示例1
    在这里插入图片描述

    (2)简单示例2
    在这里插入图片描述
    注:==也可用于判断两个字符串是否相等,$ ?返回0代表两值相等;$ ?返回1代表两值不同以下凡用到$ ?均为该意

    (3)简单示例3
    在这里插入图片描述
    2. 关系运算符——只支持数字不支持字符串

    在这里插入图片描述
    (1)简单示例1

    在这里插入图片描述
    (2)简单示例2

    在这里插入图片描述
    (3)简单示例3

    在这里插入图片描述

    1. 布尔运算符

    在这里插入图片描述
    (1)简单示例1
    在这里插入图片描述

    (2)简单示例2

    在这里插入图片描述

    (3)简单示例3
    在这里插入图片描述

    1. 字符串运算符

    在这里插入图片描述

    (1)简单示例1
    在这里插入图片描述

    (2)简单示例2

    在这里插入图片描述
    5. 文件测试运算符

    在这里插入图片描述
    (1)简单测试1

    在这里插入图片描述

    (2)简单测试2

    在这里插入图片描述

    1. 类C风格书写

    (1)简单示例1
    在这里插入图片描述

    (2)简单示例2
    在这里插入图片描述

    [[ 条件表达式 ]]与[ 条件表达式 ]不同

    [[ ]]是[ ]的plus版

    (1)简单示例1

    在这里插入图片描述

    (2)简单示例2
    在这里插入图片描述

    在这里插入图片描述

    (3)简单示例3
    在这里插入图片描述

    (4)简单示例4
    在这里插入图片描述

    注意事项:

    • [[ ]]与[ ]与条件表达式之间都需空格否则会报错
    • [ ]中使用大于、小于必须使用转义否则会被理解为重定向
    • [[ ]]相较[ ]新增模式匹配模式

    test

    test [选项] 文件名
    test ${变量名1} [选项] ${变量名2}
    
    • 1
    • 2

    (1)简单示例1
    在这里插入图片描述

    (2)简单示例2
    在这里插入图片描述
    (3)简单示例3
    在这里插入图片描述

    选择分支

    if

    • 单分支——“限高单行道”
    if 条件语句
    then
    	代码块
    fi
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    简单示例如下:

    #接收一个参数,参数为hello时输出你好
    read -p "请输入一个参数" a
    
    if [ ${a} = "hello" ]
    then
    	echo "你好"
    fi
    echo "程序结束"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    运行效果如下:
    在这里插入图片描述

    • 双分支——“限高岔路口”
    if 条件语句
    then
    	代码块
    else
    	代码块
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    简单示例如下:

    if [ $1 -eq 1 ]
    then
    	echo "分支1"
    else
    	echo "分支2"
    fi
    echo "程序结束"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    运行效果如下:
    在这里插入图片描述

    • 多分支——“限高多岔路口”
    if 条件语句
    then
    	代码块
    elif 条件语句
    then
    	代码块
    ...
    else
    	代码块
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    简单示例如下:

    if [ $1 == 1 ]
    then
    	echo "分支1"
    elif [ $1 == 2 ]
    then
    	echo "分支2"
    else
    	echo "分支3"
    fi
    echo "程序结束"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    运行效果如下:
    在这里插入图片描述

    case

    与java或C语言中switch有异曲同工之妙,且有其独到之处

    :<<a
    case格式如下:
    case 变量 in
    情况1)
            代码块
    ;;
    情况2)
            代码块
    ;;
    ...
    ;;
    情况n)
            代码块
    ;;
    esac 
    a
    
    read -p "请输入a的值" a
    
    case ${a} in
            1)
                    echo "a为1"
            ;;
            2)
                    echo "a为2"
            ;;
            3)
                    echo "a为3"
            ;;
            *)
                    echo "a是其他"
            ;;
    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
    • 30
    • 31
    • 32
    • 33
    • 34

    在这里插入图片描述

    循环

    循环是为了多次执行同一代码块

    for

    #for格式
    for 变量名 in [{值1..值n}|值1 值2 值3]
    do
    	代码块
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注:[ | ]表示可选且必选

    • 简单示例1如下
    for val in {1..5};do echo ${val}; done
    for val in 1 2 3 4 5;do echo ${val}; done
    
    • 1
    • 2

    在这里插入图片描述

    • 简单示例2如下:
    for val in `seq 5`;do echo ${val}; done
    for val in $(seq 5);do echo ${val}; done
    
    • 1
    • 2

    在这里插入图片描述

    • 简单示例3如下:
    for var in {0..5..2}; do echo ${val}; done
    for val in {2..5..2}; do echo ${val}; done
    
    • 1
    • 2

    在这里插入图片描述

    • 简单示例4如下:
    for val in {5..0};do echo ${val}; done
    for val in {5..0.. -2};do echo ${val}; done
    
    • 1
    • 2

    在这里插入图片描述

    特殊情况(不写for后in)如下:

    for var             
    do
            echo ${val}; 
    done
    
    • 1
    • 2
    • 3
    • 4

    运行效果如下:
    在这里插入图片描述

    while——“当…时进入循环”

    #格式如下
    while 条件
    do
    	代码块
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5

    简单示例如下:

    #循环输出0-10
    #!/bin/bash
    a=0
    
    while [ ${a} -lt 11 ]
    do
            echo ${a}
            let a++
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    运行效果如下:
    在这里插入图片描述

    until——“直到…时循环结束”

    #格式如下
    until 条件
    do
    	代码块
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5

    简单示例如下:

    #打印1-10
    #!/bin/bash
    a=1
    
    until [ ${a} -eq 11 ]
    do
            echo ${a}
            let a++
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    运行效果如下:
    在这里插入图片描述

    循环控制语句

    • continue——跳过一次,不结束循环
    #输出1-10跳过3的倍数
    for i in {1..10}
    do
            if [ $[ ${i} % 3 ] -eq 0 ]
            then
                    continue
            fi
            echo ${i}
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    运行效果如下:
    在这里插入图片描述

    • break——直接跳出循环
    for i in {1..10}
    do
    	echo "${i}"
    	if [ ${i} = 5 ]
    	then
    		echo "循环结束"
    		break
    	fi
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    运行效果如下:
    在这里插入图片描述

    • exit——直接退出脚本
    for i in {1..10}
    do
    	echo "${i}"
    	if [ ${i} -eq 4 ]
    	then
    		exit
    	fi
    done
    echo "程序结束"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    运行效果如下:
    在这里插入图片描述

    拓展

    • 随机数的生成
    #生成随机数
    echo $[RANDOM]
    
    • 1
    • 2

    在这里插入图片描述

    #生成0-5的随机数
    echo $[RANDOM%6]
    
    • 1
    • 2

    在这里插入图片描述

    • 数组与循环
    a=('张三' '李四' '王五')
    
    for i in ${a[*]}
    do
    	echo ${i}
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    运行效果如下:
    在这里插入图片描述

  • 相关阅读:
    Servlet是什么?
    YOLO系列改进:YOLOv5改进之PPSPPF
    竞赛选题 基于机器视觉的二维码识别检测 - opencv 二维码 识别检测 机器视觉
    adb安装及使用大全
    js关于深度克隆问题
    解密C语言选择结构:掌握条件语句与分支逻辑的利器
    手机ip地址是实时位置吗
    生产设备巡检管理系统
    多态的定义 以及 虚函数重写(覆盖)
    测试Mybatis流程
  • 原文地址:https://blog.csdn.net/weixin_51371629/article/details/126499021