Shell流程控制---case分支语句
2021年4月9日
case 介绍
在生产环境中,我们总会遇到一个问题需要根据不同的状况来执行不同的预案,那么我们要处理这样的问题,首先根据可能出现的情况先写出对应预案,之后根据出现的情况来加载不同的预案。
特点:根据给予的不同条件执行不同的代码块。
比如你去相亲,遇到对方家人要怎样称呼
看到对方父亲:伯父好
看到对方母亲:伯母好
看到对方奶奶:奶奶好
再比如计算机系统监控内存使用率
内存使用率低于 80%,脚本输出:绿色字体的 Memory use xx%
内存使用率大于 80% 小于 90%,脚本输出:黄色字体的 Memory use xx%
内存使用率大于 90%,脚本输出:红色字体的 Memory use xx%
case 语法
case var in
condition1)
commands1
;;
condition2)
commands2
;;
......
esac
注意
每个代码块执行完毕要以"" ;; ""结尾代表结束,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 ~ ]#
shell 特殊变量
特殊参数
参数符号 | 说明 |
---|---|
$* | 代表所有参数,其间隔为IFS内定参数的第一个单元 |
$@ | 与 $* 类同,不同之处在于不参照 IFS |
$# | 代表参数的数量 |
$? | 执行上一个指令的返回值 |
$$ | 本身的 PID(process ID) |
$_ | 显示出最后一个执行的命令 |
$N | shell 的第几个外传参数 |
- 示例
[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 ~ ]#