Skip to content
KARINKARIN
博客主页
项目总览
知识要点
捣鼓折腾
Git笔记
Excel修炼秘籍
github icon
  • 博客主页
    • 项目总览
          • Shell脚本笔记
            • Shell脚本介绍
              • Shell语法
                • Shell格式化输出
                  • Shell格式化输入
                    • Shell变量
                      • Shell数组
                        • Shell运算
                          • Shell流程控制---if判断语句
                            • Shell流程控制---for循环语句
                              • Shell流程控制---while循环语句
                                • Shell流程控制---until循环语句
                                  • Shell流程控制---case分支语句
                                    • case 介绍
                                      • case 语法
                                        • shell 特殊变量
                                        • Shell函数
                                          • Shell正则表达式
                                            • Shell对文本的搜索---grep命令
                                              • Shell对文件的操作---sed命令
                                                • Shell对输出流的处理---awk命令
                                                  • Shell监控脚本
                                                    • Shell脚本---lamp环境安装

                                                  Shell流程控制---case分支语句

                                                  author iconkarincalendar icon2021年4月9日category icon
                                                  • 教程
                                                  tag icon
                                                  • shell
                                                  timer icon大约 2 分钟

                                                  此页内容
                                                  • case 介绍
                                                  • case 语法
                                                  • shell 特殊变量

                                                  # case 介绍

                                                  在生产环境中,我们总会遇到一个问题需要根据不同的状况来执行不同的预案,那么我们要处理这样的问题,首先根据可能出现的情况先写出对应预案,之后根据出现的情况来加载不同的预案。

                                                  特点:根据给予的不同条件执行不同的代码块。

                                                  比如你去相亲,遇到对方家人要怎样称呼

                                                  看到对方父亲:伯父好

                                                  看到对方母亲:伯母好

                                                  看到对方奶奶:奶奶好

                                                  再比如计算机系统监控内存使用率

                                                  内存使用率低于 80%,脚本输出:绿色字体的 Memory use xx%

                                                  内存使用率大于 80% 小于 90%,脚本输出:黄色字体的 Memory use xx%

                                                  内存使用率大于 90%,脚本输出:红色字体的 Memory use xx%

                                                  # case 语法

                                                  case var in
                                                  condition1)
                                                  	commands1
                                                  ;;
                                                  condition2)
                                                  	commands2
                                                  ;;
                                                  ......
                                                  esac
                                                  
                                                  1
                                                  2
                                                  3
                                                  4
                                                  5
                                                  6
                                                  7
                                                  8
                                                  9

                                                  注意

                                                  每个代码块执行完毕要以"" ;; ""结尾代表结束,case 结尾要以其倒过来写的 esac 来结束。

                                                  实例:

                                                  [root@localhost ~ ]# vim zmn.sh
                                                  #!/bin/bash
                                                  case $1 in
                                                  zmn|ZMN)
                                                  	echo "伯母好"
                                                  	echo "伯母辛苦了"
                                                  lzr|LZR)
                                                  	echo "伯父好"
                                                  	echo "伯父真帅气"
                                                  lnn|LNN)
                                                  	echo "奶奶好"
                                                  	echo "奶奶吉祥"
                                                  lyy|LYY)
                                                  	echo "爷爷好"
                                                  	echo "爷爷万岁"
                                                  *)
                                                  	echo "输入无效,使用方法:$0 zmn|lzr|lnn|lyy"
                                                  esac
                                                  [root@localhost ~ ]# bash zmn.sh lzr
                                                  伯父好
                                                  伯父真帅气
                                                  [root@localhost ~ ]# bash zmn.sh lyy
                                                  爷爷好
                                                  爷爷万岁
                                                  [root@localhost ~ ]# bash zmn.sh sdf
                                                  输入无效,使用方法:zmn.sh zmn|lzr|lnn|lyy
                                                  [root@localhost ~ ]# bash zmn.sh zmn
                                                  伯母好
                                                  伯母辛苦了
                                                  [root@localhost ~ ]# 
                                                  
                                                  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

                                                  # shell 特殊变量

                                                  特殊参数

                                                  参数符号说明
                                                  $*代表所有参数,其间隔为IFS内定参数的第一个单元
                                                  $@与 $* 类同,不同之处在于不参照 IFS
                                                  $#代表参数的数量
                                                  $?执行上一个指令的返回值
                                                  $$本身的 PID(process ID)
                                                  $_显示出最后一个执行的命令
                                                  $Nshell 的第几个外传参数
                                                  • 示例
                                                  [root@localhost ~ ]# vim special.sh
                                                  #!/bin/bash
                                                  echo "脚本文件名:$0"
                                                  echo "脚本所有外传参数:$*"
                                                  echo "脚本所有外传参数:$@"
                                                  echo "脚本外传参数数量:$#"
                                                  echo "上一个命令的返回值:$?"
                                                  echo "脚本执行的进程号PID:$$"
                                                  echo "执行最后一次执行的命令:$_"
                                                  echo "第3个外传参数:$3 "
                                                  [root@localhost ~ ]# bash special.sh aaa bbb ccc ddd
                                                  #脚本文件名:special.sh
                                                  #脚本所有外传参数:aaa bbb ccc ddd
                                                  #脚本所有外传参数:aaa bbb ccc ddd
                                                  #脚本外传参数数量:4
                                                  #上一个命令的返回值:0
                                                  #脚本执行的进程号PID:17306
                                                  #执行最后一次执行的命令:脚本执行的进程号PID:17306
                                                  #第3个外传参数:ccc
                                                  [root@localhost ~ ]# 
                                                  
                                                  1
                                                  2
                                                  3
                                                  4
                                                  5
                                                  6
                                                  7
                                                  8
                                                  9
                                                  10
                                                  11
                                                  12
                                                  13
                                                  14
                                                  15
                                                  16
                                                  17
                                                  18
                                                  19
                                                  20
                                                  edit icon编辑此页open in new window
                                                  上一页
                                                  Shell流程控制---until循环语句
                                                  下一页
                                                  Shell函数
                                                  MIT Licensed
                                                  Copyright © 2022 karin