case的用法

这几天都在忙验收的事情,验收终于完了,也有时间写写博客。
今天因工作需要,改了个脚本,也学习到了shell脚本中的一个在代码块中依靠条件去决定程序的分支的语句。
case命令是一个多分支的if/else命令
这个语句的结构是这样的
case "$variable" in
"$condition1")
command...
;;
"$condition1")
command...
;;
esac
注意: 对变量使用""并不是强制的,因为不会发生单词分离.
每句测试行,都以右小括号)结尾.
每个条件块都以两个分号结尾;;.
case块的结束以esac(case 的反向拼写)结尾.
语句中使用到了这个,作用就是使传到系统的告警级别改变
FLAG=0
case $AS_APPINSTANCE in
dbase|syslog-ng|tnslsnr|hs_web_s1|hs_wap_s1|rs_s1|ca_s1a1|ca_s1a2|ws_s1|ha_web_s1a1|ha_web_s1a2|wa_s1a1|wa_s1a2|hs_web_s2|hs_wap_s2|
rs_s2|ca_s2a1|ca_s2a2|wa_s2a1|wa_s2a2|hs_web_s3|hs_wap_s3|rs_s3|ca_s3a1|ca_s3a2|ws_s3|ha_web_s3a1|ha_web_s3a2|wa_s3a1|wa_s3a2)
FLAG=1
;;
monitor|system_monitor_pm1|system_monitor_pm2|system_monitor_sa2|system_monitor_sa3)
FLAG=2
;;
esac
if [ $FLAG -eq "1" ]
then
if [ "$AS_PARAMETER_STATUS" !=" OK" ]
then
AS_PARAMETER_STATUS="MAJOR"
fi
fi

if [ $FLAG -eq "2" ]
then
if [ "$AS_PARAMETER_STATUS" != "OK" ]
then
AS_PARAMETER_STATUS="MINOR"
fi
fi
顺便学习下case的用法,动手写写,记录记录,总结总结,我学习shell都是使用网上下载的一份资料,翻译外国的一本书,个人觉得不错,是学习shell的好资料--叫做《高级shell脚本编程指南》
#!/bin/bash
echo "hit a key,then hit return"
read Keypress
case "$Keypress" in
[[:lower:]]) echo "Lowercase letter";;
[[:upper:]]) echo "uppercase letter";;
[0-9]) echo "digt";;
*) echo "punctuation,whitespace,or other";;
esac
这个简单的脚本涉及到几个知识点,
1.书上的413页正则表达式那块
[:upper:] 匹配大写字母. 等同于A-Z.
[:lower:] 匹配小写字母. 等同于a-z.
[0-9]
2.[[]]结构,在62页
在版本 2.02 的Bash 中,推出了一个新的[[...]]扩展test 命令.因为这种表现形式可能对某些语
言的程序员来说更加熟悉.注意"[["是一个关键字,并不是一个命令.
Bash 把[[ $a -lt $b ]]看作一个单独的元素,并且返回一个退出码.
这里就很容易明白这脚本的意思了,可以测试测试。
-bash-3.00# ./case_test.sh
hit a key,then hit return
a                                      
Lowercase letter                          --输入a返回
-bash-3.00# ./case_test.sh
hit a key,then hit return
A                                          --输入A返回
uppercase letter
-bash-3.00# ./case_test.sh
hit a key,then hit return
2                                          ---输入数字返回
digt
上面这个还有个问题,只能输入一个键,然后就结束了。
明天开始复习下之前的一些东西。


猜你喜欢

转载自ahaoge.iteye.com/blog/1471924
今日推荐