Brc's blog
首页
前端
后端
运维
  • 工作笔记
  • 分类
  • 标签
  • 归档
关于

Brc

努力中
首页
前端
后端
运维
  • 工作笔记
  • 分类
  • 标签
  • 归档
关于
  • Linux基础

  • Linux进阶

    • shell

      • shell基础
      • shell流程控制
        • if条件
          • 基础知识
          • 简单实践
          • 综合实践
        • case条件
          • 基础知识
          • 简单实践
        • 循环控制
          • for循环
          • while循环
          • until循环
        • 循环退出
          • 基本语法
          • 简单实践
        • 函数基础
          • 简单函数格式
          • 传参函数格式
          • 状态返回值
        • 函数进阶
          • 脚本传参函数调用
          • 脚本传参函数调用(加强版)
    • nginx

    • keepalived

    • LVS

    • ansible

    • docker

    • mysql

  • 其他

  • 运维
  • Linux进阶
  • shell
Brc
2022-01-25
目录

shell流程控制

# if条件

# 基础知识

  • 单分支if

    # 单条件,单结果
    if [ 条件 ]
    then
        指令1
    fi
    
    1
    2
    3
    4
    5
  • 双分支if

    # 单条件,两结果
    if [ 条件 ]
    then
        指令1
    else
        指令2
    fi
    
    1
    2
    3
    4
    5
    6
    7
  • 多分支if

    # n条件,n+1结果
    if [ 条件 ]
    then
        指令1
    elif [ 条件2 ]
    then
        指令2
    else
        指令3
    fi
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

# 简单实践

  • 单分支if示例

    #!/bin/bash
    # 单if语句的使用场景
    if [ "$1" == "nan" ]
    then
        echo "您的性别是男"
    fi
    
    1
    2
    3
    4
    5
    6
  • 双分支if示例

    #!/bin/bash
    # 双if语句的使用场景
    if [ "$1" == "nan" ]
    then
        echo "您的性别是男"
    else
        echo "您的性别是女"
    fi
    
    1
    2
    3
    4
    5
    6
    7
    8
  • 多分支if示例

    #!/bin/bash
    # 多if语句的使用场景
    if [ "$1" == "nan" ]
    then
        echo "您的性别是男"
    elif [ "$1" == "nv" ]
    then
        echo "您的性别是女"
    else
        echo "您的性别,我不知道"
    fi
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

# 综合实践

要求脚本执行需要有参数,通过传入参数来实现不同的功能。

  • 参数和功能详情如下︰

    参数 执行效果
    start 服务启动中...
    stop 服务关闭中...
    restart 服务重启中...
    * 脚本 X.sh 使用方式 X.sh [ start or stop or restart ]
  • 脚本内容

    #!/bin/bash
    # 多if语句的使用场景
    if [ "$1" == "start" ]
    then
        echo "服务启动中..."
    elif [ "$1" == "stop" ]
    then
        echo "服务关闭中..."
    elif [ "$1" == "restart" ]
    then
        echo"服务重启中..."
    else
        echo "$0脚本的使用方式:$0 [ start | stop | restart ]"
    fi
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

# case条件

# 基础知识

  • 基本格式

    case 变量名 in
        值1)
            指令1
            ;;
        ...
        值n)
            指令n
            ;;
    esac
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
  • 注意

    • 首行关键字是case
    • 末行关键字esac
    • 选择项后面都有)
    • 每个选择的执行语句结尾都有两个分号;

# 简单实践

要求脚本执行需要有参数,通过传入参数来实现不同的功能。

  • 参数和功能详情如下︰

    参数 执行效果
    start 服务启动中...
    stop 服务关闭中...
    restart 服务重启中...
    * 脚本 X.sh 使用方式 X.sh [ start or stop or restart ]
  • 脚本内容

    # cat case.sh
    #!/ bin/bash
    # case语句使用场景
    case "$1" in
        "start")
            echo "服务启动中..."
            ;;
        "stop")
            echo "服务关闭中..."
            ;;
        "restart")
            echo "服务重启中..."
            ;;
        *)
            echo "$0脚本的使用方式:$0 [ start or stop or restart ]"
            ;;
    esac
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

# 循环控制

# for循环

  • 语法格式

    for 条件
    do
        执行语句
    done
    
    1
    2
    3
    4
  • 特点

    • for语句,循环的数量由列表中元素个数来决定
  • 示例

    #!/bin/bash
    # for语句的使用示例
    for i in $(ls /root)
    do
        echo "${i}"
    done
    
    1
    2
    3
    4
    5
    6

# while循环

  • 语法格式

    while 条件
    do
        执行语句
    done
    
    1
    2
    3
    4
  • 特点

    • while语句,只有条件不满足的时候,才会终止循环
  • 示例

    #!/bin/ bash
    # while语句的使用示例
    a=1
    
    while [ $a -lt 10 ]
    do
        echo "${a}"
        let a=a+1
    done
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

# until循环

  • 语法格式

    until 条件
    do
        执行语句
    done
    
    1
    2
    3
    4
  • 特点

    • until语句,只有条件满足的时候,才会终止循环
  • 示例

    #!/bin/bash
    # unti1语句的使用示例
    a=1
    
    until [ $a -eq 10 ]
    do
        echo "${a}"
        let a=a+1
    done
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

# 循环退出

我们在进行循环控制的时候,有时候,需要根据实际情况,终止循环或者跳过当前循环,这就用到了循环退出的基本功能。

# 基本语法

  • break
    • 条件满足的时候,终止执行后面的所有循环
  • continue
    • 条件满足的时候,跳过当前的循环,进入到下一个循环

# 简单实践

  • break实践

    #!/bin/bash
    #while语句的使用示例
    a=1
    
    while [ $a -lt 10 ]
    do
        if [ $a == 5 ]
        then
            echo "终止后续所有循环"
            break
        fi
        echo "${a}"
        let a=a+1
    done
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
  • break效果

    1
    2
    3
    4
    终止后续所有循环
    
    1
    2
    3
    4
    5
  • continue实践

    #!/bin/bash
    # while语句的使用示例
    a=1
    
    while [ $a -lt 10 ]
    do
        let a=a+1
        if [ $a == 5 ]
        then
            echo "跳过当前循环,执行下一循环"
            continue
        fi
        echo "{a}"
    done
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
  • continue效果

    2
    3
    4
    跳过当前循环,执行下一循环
    6
    7
    8
    9
    10
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

# 函数基础

函数就是将某些命令组合起来实现某一特殊功能的方式,是脚本编写中非常重要的一部分。

# 简单函数格式

  • 定义函数

    function 函数名(){
        函数体
    }
    
    1
    2
    3
  • 调用函数

    函数名
    
    1
  • 实践

    #!/bin/bash
    #简单函数演示
    
    # 定义函数
    dayin(){
    	echo "wode mignzi shi zhangsan"
    }
    
    #简单函数调用
    dayin
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

注意:function关键字可以省略。

# 传参函数格式

  • 定义格式∶

    函数名(){
        函数体 $n
    }
    
    1
    2
    3
  • 调用函数︰

    函数名 参数
    
    1
  • 实践

    #!/bin/bash
    #函数传参演示
    
    #定义传参数函数
    dayin(){
    	echo "wode mignzi shi $1"
    }
    
    #函数传参调用
    dayin 张三
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

# 状态返回值

  • 定义格式

    函数名(){
    	函数体 $n
    	return 1
    }
    
    1
    2
    3
    4
  • 实践

    #!/bin/bash
    #函数传参演示
    
    #定义传参数函数
    dayin({
    	echo "wode mignzi shi $1"
    	return 3
    }
    
    #函数传参
    dayin 张三
    echo "函数执行的状态返回值: $?"
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

# 函数进阶

# 脚本传参函数调用

  • 脚本传参数

    /bin/bash 脚本名 参数
    
    1
  • 函数体调用参数︰

    函数名(){
        函数体 $1
    }
    函数名 $1
    
    1
    2
    3
    4
  • 实践

    #!/bin/bash
    #函数传参演示
    
    #定义传参数函数
    dayin(){
        echo "wode mignzi shi $1"
    }
    #函数传参
    dayin $1
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

# 脚本传参函数调用(加强版)

  • 脚本传参数

    /bin/bash 脚本名 参数
    
    1
  • 函数体调用参数︰

    本地变量名="$1"
    函数名(){
        函数体 $1
    }
    函数名 "${本地变量名}"
    
    1
    2
    3
    4
    5
  • 实践

    #!/bin/bash
    #函数的使用场景二
    canshu="$1"
    dayin(){
        echo "wo de mingzi shi $1"
    }
    dayin "${canshu}"
    
    1
    2
    3
    4
    5
    6
    7

注意:类似于shell内置变量中的位置参数

#shell
Last Updated: 2024/03/29, 17:39:25
shell基础
nginx快速入门

← shell基础 nginx快速入门→

最近更新
01
谷歌云创建GKE集群
07-26
02
ElastiCacheForRedis启用密码
07-26
03
upload-to-gcs
06-29
更多文章>
Theme by Vdoing | Copyright © 2021-2024 Brc | MIT License | 浙ICP备19031881号-4
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式