case多条件分支语句以及shell中的特殊变量
一、case介绍
在生产环境中,我们总会遇到一个问题需要根据不同的状况来执行不同的预案,那么我们要处理这样的问题就要首先根据可能出现的情况写出对应预案,根据出现的情况来加载不同的预案。
再来说一个计算机的相关例子---监控内存使用率
内存使用率低于80%,脚本输出: 绿色字体的Memory use xx%
内存使用率大于80%小于98%,脚本输出:黄色字体的Memory use xx%
内存使用率大于90%,脚本输出: 红字体的Memory use xx%
二、case语法
case 变量 in
条件一)
执行代码块1
;;
条件二)
执行代码块2
;;
……
esac
注意:每个代码块执行完毕后要以“;;”结尾,代表结束,最后总的要以esac来结束
三、举例练习
[root@CentOs shell]# cat test01.sh
#!/bin/bash
read -p "请输入num:" n
case $n in
1)
echo "haha"
;;
2)
echo "hehe"
;;
*)
echo "请输入1||2"
;;
esac
[root@CentOs shell]# bash test01.sh
请输入num:3
请输入1||2
[root@CentOs shell]# bash test01.sh
请输入num:1
haha
[root@CentOs shell]# bash test01.sh
请输入num:2
hehe
四、shell特殊变量
1.$*:代表所有参数,其间隔为IFS内定参数的第一个字元
2. $@:与*星号类同。不同之处在於不参照IFS
3.$#:代表参数数量
4. $:执行上一个指令的返回值
5. $-:最近执行的foreground pipeline的选项参数
6.$$:本身的Process ID
7.$:执行上一个背景指令的PID
8.$_:显示出最後一个执行的命令
9. $N:shell的第几个外传参数
[root@CentOs shell]# cat test01.sh
#!/bin/bash
echo "脚本的名字是:$0"
echo "脚本的参数是:$*"
echo "传参数量是:$#"
echo "脚本执行的进程号:$$"
echo "最后执行的命令是:$_"
echo "第2个参数是:$2"
[root@CentOs shell]# bash test01.sh aa bb cc dd
脚本的名字是:test01.sh
脚本的参数是:aa bb cc dd
传参数量是:4
脚本执行的进程号:30011
最后执行的命令是:脚本执行的进程号:30011
第2个参数是:bb
[root@CentOs shell]#