• 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

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

  • 相关阅读:
    nvidia-docker部署pytorch服务【GPU工作站】
    JSqlParser 解析 sql
    简述如何使用Androidstudio对文件进行保存和获取文件中的数据
    1017 A除以B【PAT (Basic Level) Practice (中文)】
    毕业3年...设计行业一事无成,北漂闯荡转行成功
    MIT 6.NULL The Missing Semester of Your CS Education(1)
    智能交通技术专利态势分析
    【*E】leetcode-125.验证回文串
    Arduino程序设计(十四)舵机控制实验(SG90)
    【数字识别】基于DBN实现minist数据集手写数字识别附matlab代码
  • 原文地址:https://blog.csdn.net/weixin_51371629/article/details/126499021