CASE语句
case语句
case语句case语句是多分⽀选择语句,if语句只有两个分⽀可供选择,⽽实际问题中常常需要⽤到多分⽀选择结构。
例如,学⽣成绩分类(90分以上为A,……);⼈⼝统计分类(按年龄分为⽼、中、青、少、幼)等。
当然这些都可以⽤if语句的嵌套形式来实现,但如果分⽀较多,则嵌套的if语句层数太多,程序冗长⽽降低了可读性,也给修改带来了极⼤的困难。
Pascal语⾔提供了case语句可直接处理多分⽀选择,case语句由⼀个选择表达式和众多可选择的操作序列组成,运⾏时根据表达式的求值结果,在众多的分⽀中选取⼀个分⽀执⾏。
case语句的⼀般形式如下:case 表达式 of常数表1: 语句1;常数表2: 语句2;常数表3: 语句3;… …常数表n: 语句n;else 语句n+1;end;说明:1、case的英⽂意义有“情况”、“情形”之意,我们可能这样理解case语句:当表达式的值与常数表中某⼀值相匹配,则执⾏其后⾯的相应语句;如果常数表中没有与表达式相匹配的常数,则执⾏else后⾯的相应语句。
2、else可以省略,此时若⽆与表达式的值相匹配的常数表时程序将向下运⾏并跳出case语句。
3、保留字end与保留字case成对出现,这个end表⽰case语句的结束。
4、表达式的类型通常是整形与字符型,也可以是枚举型和⼦界型5、常数表是⼀个或⼀组常量,其类型与表达式类型⼀致,常数表⾏的次序是任意的,不⼀定要按从⼩到⼤或从⼤到⼩的次序排列,通常表可能性⼤的常数表列于前⾯,以加快程序运⾏的速度。
例1:输⼊⼀个个位数字,输出这个数字的英⽂拼法varn:byte;beginwrite('Input the number: ');readln(n);case n of0: writeln('Zero');1: writeln('One');2: writeln('Two');3: writeln('Three');4: writeln('Four');5: writeln('Five');6: writeln('Six');7: writeln('Seven');8: writeln('Eight');9: writeln('Nine');end;end.例2:输⼊⼆个实数及运算符,输出它们的和、差、积、商vara,b,w:real;op:char;beginwrite('Input a,b: ');readln(a,b);write('Input operator: ');readln(op);case op of'+': w:=a+b;'-': w:=a-b;'*': w:=a*b;'/': w:=a/b;end;writeln(w:0:2);end.例3:根据学⽣的成绩给予相应的分数等级,对应关系如下:90-100 A;80-89 B;60-79 C;60分以下 Dvars:byte;ch:char;beginwrite('Input the score: ');readln(s);case s div 10 of10,9: ch:='A';8: ch:='B';7,6: ch:='C';else ch:='D';end;writeln(s,'-->',ch);end.作业:1、zerojudge:a053、d460、a2442、输⼊年、⽉,输出该⽉的天数。
case语句
case语句case语句1.什么是casecase语句和if类似,也是⽤来判断,只不过当判断条件较多时,使⽤case语句会⽐if更加⽅便2.case使⽤场景在⽣产环境中我们总会遇到⼀个问题需要根据不同预案,那么我们要处理这样的问题⾸先要根据可能出现的情况写出对应的预案,然后根据选择来加载不同的预案⽐如服务的启停脚本,我们⾸先要写好启动,停⽌重启的预案,然后根据不同的选择来加载不同的预案3.case基础语法case 变量 in条件 1)执⾏代码块1;;条件 1)执⾏代码块2;;条件 1)执⾏代码块3;;条件 1)执⾏代码块4;;*)不匹配后命令序列esac1. case演⽰⽰例:需求2:使⽤case实现nginx状态监控脚本。
stub_statussh nginx_status.shUSAGE nginx_status.sh { Active | accepts | handled | requests | Reading | Writing |Waiting }1.nginx开启状态监控[root@manager case]# cat /etc/nginx/conf.d/test.confserver {listen 80;server_name ;location / {index index.html;}location /nginx_status {stub_status;}}3.case[root@manager case]# cat case-5.sh#!/bin/bash# Author: QQ: 552408925# Date: 2019-10-30# FileName: case-5.sh# URL: https://# Description:HostName=Nginx_status_file=nginx.statusNginx_Status_Path=nginx_statuscurl -sH Host:${HostName} http://127.0.0.1/${Nginx_Status_Path} >${Nginx_status_file}case $1 inactive)echo $(( $(awk '/Active connections/ {print $NF}' ${Nginx_status_file}) -1 ));;accepts)echo $(( $(awk 'NR==3 {print $1}' ${Nginx_status_file}) -1 ));;handled)echo $(( $(awk 'NR==3 {print $2}' ${Nginx_status_file}) -1 ));;requests)echo $(( $(awk 'NR==3 {print $3}' ${Nginx_status_file}) -1 ));;*)echo "USAGE: $0 { active | accepts | handled | requests | Reading | Writing | Waiting }" exit 1esacNgixn启停脚本#!/bin/bash# Author: QQ: 552408925# Date: 2019-10-30# FileName: case-4.sh# URL: https://# Description:source /etc/init.d/functionsnginx_pid=/var/run/nginx.pidcase $1 instart)if [ -f $nginx_pid ];thenif [ -s $nginx_pid ];thenaction "Nginx 已经启动" /bin/falseelserm -f $nginx_pidsystemctl start nginx &>/dev/nullif [ $? -eq 0 ];thenaction "Nginx启动成功" /bin/trueelseaction "Nginx启动失败" /bin/falsefifielsesystemctl start nginx &>/dev/nullif [ $? -eq 0 ];thenaction "Nginx启动成功" /bin/trueelseaction "Nginx启动失败" /bin/falsefifi;;stop)if [ -f $nginx_pid ];thensystemctl stop nginx && \rm -f $nginx_pidaction "Nginx is stopped" /bin/trueelseecho "[error] open() "$nginx_pid" failed (2: No such file or directory)"fi;;status)if [ -f $nginx_pid ];thenecho "nginx (pid $(cat $nginx_pid)) is running..."elseecho "nginx is stopped"fi;;reload)#1.nginx没有启动直接报错#2.nginx启动了,先检查配置⽂件语法#如果nginx语法没问题,则reload#如何nginx语法有问题#提⽰⽤户是否进⼊对应的错误⾏数修改 [ y | n ]# y 进⼊修改# n 退出操作if [ -f $nginx_pid ];thennginx -t -c /etc/nginx/nginx.conf &>nginx.errrc=$?if [ $rc -eq 0 ];thenaction "Nginx is Reloaded" /bin/trueelsengx_conf=$(cat nginx.err |awk -F "[ :]" 'NR==1 {print $(NF-1)}')ngx_line=$(cat nginx.err |awk -F "[ :]" 'NR==1 {print $NF}')read -p "是否进⼊ ${ngx_conf} 配置⽂件的 ${ngx_line} ⾏修改: [ y | n ] " tt case $tt iny)vim $ngx_conf +${ngx_line};;n)exit 1esacfielseaction "Nginx 没有启动" /bin/falsefi;;*)echo "USAGE: $0 {start|stop|status|restart}"exit 1esac。
case语句
case语句⼀case条件语句case条件语句相当于多分⽀的if/elif/else条件语句,但是它看起来更规范更⼯整,常被应⽤于实现系统服务启动脚本等企业应⽤场景中。
在case语句中,程序会将case获取的变量的值与表达式部分的值1、值2、值3等逐个进⾏⽐较。
如果获取的变量值和某个值(例如值1)相匹配,就会执⾏值(例如值1)后⾯对应的指令(例如指令1,其可能是⼀组指令),直到执⾏到双分号(;;)才停⽌。
然后再跳出case语句主体,执⾏case语句(即esac字符)后⾯的其他命令。
如果没有找到匹配变量的任何值,则执⾏"*)"后⾯的指令(通常是给使⽤者的使⽤提⽰),直到遇到双分号(;;) (此处的双分号可以省略)或esac结束。
这部分相当于if多分⽀语句中最后的else语句部分。
另外, case语句中表达式对应值的部分,还可以使⽤管道等更多功能来匹配。
(⼀)case语句的语法适合判断变量值case 变量引⽤ inPAT1/值1)分⽀1/指令1;;PAT2/值2)分⽀2/指令2;;...*)默认分⽀;;esaccase条件语句的执⾏流程逻辑图:说明:当变量的值等于值1时,执⾏指令1;等于值2时执⾏指令2,以此类推;如果都不符合,则执"*)"后⾯的指令。
此外,注意不同⾏内容的缩进距离。
(⼆)case⽀持glob风格的通配符*: 任意长度任意字符: 任意单个字符[ ]:指定范围内的任意单个字符a|b: a或b注意变量引⽤就是带$变量的名称。
如果第1个模式不匹配就继续执⾏第2个模式的代码。
*相当于else操作,表⽰的任意的字符串。
满⾜*就执⾏默认分⽀的操作。
默认分⽀后⾯的两个分号可以不写的。
[root@centos7 ~]# type casecase is a shell keyword[root@centos7 ~]# help casecase: case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esacExecute commands based on pattern matching.Selectively execute COMMANDS based upon WORD matching PATTERN. The`|' is used to separate multiple patterns.也就是表⽰或的关系Exit Status:Returns the status of the last command executed.使⽤case写脚本判断变量是否是离散值如果变量num的值是1,2,3那么就执⾏某个命令cmd1。
选择结构case语句
例一: 输入年、月,输出该月的天数
讨论:每年的1、3、5、7、8、10、12月,每月有31天; 4、6、9、11月,每月有30天; 2月,若是闰年有29天,平年有28天。
闰年是指年份能被4整除,但不能被100整除,或者年份能被 400整除的年。 设:年year 月month 每月天数days
判断闰年表达式:
read(year,month); case month of
1,3,5,7,8,10,12:days:=31; 4,6,9,11:days:=30; 2:if (year mod 4=0) and (year mod 100<>0) or (year mod 400=0)
then days:=29 e9;,year,' month=',month,' days=',days) end.
2.计算days
根据month的值选择计算
1,3,5,7,8,10,12:days:=31
4,6,9,11:
days:=30
2:
if 闰年 then days:=29 else days:=28
3.输出year,month,days
例一:输入年、月,输出该月的天数
Program monthdays(input,output); var year,month,days:integer; begin
(year mod 4=0) and (year mod 100<>0) or (year mod 400=0)
例一:输入年、月,输出该月的天数
一级算法: 1.输入year,month 2.计算days 3.输出year,month,days
例一:输入年、月,输出该月的天数
codesys case语句
一、简介CODESYS是一种用于工业自动化控制系统的开发工具,其主要用途是编写PLC(可编程逻辑控制器)程序。
在CODESYS中,case语句是一种常用的控制结构,用于根据不同的条件执行不同的代码块。
本文将介绍CODESYS中的case语句的使用方法及其注意事项。
二、 case语句的语法在CODESYS中,case语句的语法如下:```CASE variable OFvalue1:// 代码块1value2:// 代码块2...ELSE// 默认代码块END_CASE;```其中,variable是需要进行判断的变量,value1、value2等是变量可能的取值,代码块1、代码块2等是对应取值时需要执行的代码块,ELSE语句后的代码块是变量取值不在之前列举的范围时需要执行的默认代码块。
三、 case语句的示例假设有一个变量mode,它的取值范围为1到3。
我们可以使用case 语句来根据不同的mode执行不同的代码块,示例代码如下:```CASE mode OF1:// 执行模式1的代码2:// 执行模式2的代码3:// 执行模式3的代码ELSE// 默认代码块END_CASE;```在上面的示例中,根据mode的取值不同,执行了不同的代码块,从而实现了对不同模式的处理。
四、 case语句的注意事项1. case语句中的变量类型必须是有限个取值的枚举类型,比如整数、枚举类型等。
2. case语句中的取值范围必须是不重叠且完备的,即所有可能的取值都必须在case语句中列举出来,并且没有重复的部分。
3. case语句中的默认代码块可以省略,如果省略了默认代码块且变量的取值不在之前列举的范围内,程序将不执行任何操作。
五、总结在CODESYS中,case语句是一种非常有用的控制结构,它可以根据不同的条件执行不同的代码块,使得程序更具有灵活性和可读性。
在使用case语句时,需要注意变量类型和取值范围的合理性,以及是否需要添加默认代码块。
case语句
Case语句Case语句也是条件判断语句的一种,可以完成比if语句更强的判断。
在if语句中,如果需要判断的条件很多的话,将会用到大量的if嵌套,例如:Use NorthwindDeclare @price moneySelect @price = 单价From 产品Where 产品名称=N’番茄酱’If @price<$20Print ‘番茄酱的单价低于20元’ElseBeginIf $20<=@price and @price<40Print ‘番茄酱的单价在20元与40元之间’ElseBeginIf $40<=@price and @price<=80Print ‘番茄酱的单价在40元与80元之间’ElsePrint ‘番茄酱的单价大于80元’EndEnd从以上代码可看出,判断的条件越多时,用if语句的嵌套就越多,代码看起来就越乱越复杂,可读性就越差。
使用case语句可以轻松解决该问题。
Case语句的语法代码有两种格式:1.简单的case代码,用于将某个表达式与一组简单的表达式进行比较以确定结果2.搜索的case代码,用于计算一组布尔表达式已确定结果语法如下:1.简单的case代码:Case input_expressionWhen when_expression Then result_expression[……][Else else_result_expression]End2.搜索的case代码CaseWhen Boolean_expression Then result_expression[……][Else else_result_expression]End在简单的case语句中,系统会将input_expression的值与每一个when_expression的值作比较。
如果相同,返回then语句之后的表达式;如果都不相同,返回else语句之后的表达式;如果没有else语句,则返回null。
case语句结构
case语句结构
嘿,你知道吗,case 语句结构就像是一个超级智能的导航系统!比
如说,你要去一个陌生的地方,case 语句就像是给你规划好了各种不
同的路线。
当程序遇到一个情况,就好像你站在一个岔路口,不知道该走哪条路。
这时候 case 语句就发挥作用啦!它会根据不同的条件,就像不同
的路牌一样,指引程序走向正确的方向。
比如说,“如果是这种情况,那就执行这个操作;要是那种情况,
就执行那个操作”,这不就和你看到路牌上写着“向左走是公园,向右
走是商场”一个道理嘛!
想象一下,程序就像一辆车,case 语句就是那个掌控方向的司机。
它能快速准确地判断该往哪走,多厉害呀!
再打个比方,case 语句就像是一个魔法盒子,里面装满了各种奇妙
的指令。
当程序需要做出决策的时候,它就会从盒子里拿出对应的魔
法指令来执行。
哎呀,你想想,如果没有 case 语句,程序不就像没头苍蝇一样乱撞啦!那可不行,会出大乱子的呀!
我觉得 case 语句结构真的是超级重要的呀,它让程序变得更加智能、有序,就像给程序安上了一双敏锐的眼睛和一个聪明的大脑!它能帮
助程序在复杂的情况中找到正确的路,让一切都变得井井有条。
所以呀,我们一定要好好掌握 case 语句结构呀!。
c语言中case语句的用法及规则
文档标题:C语言中CASE语句的用法及规则一、简介在C语言中,`switch`语句是一种多路选择结构,它允许程序根据一个表达式的值进行多种情况的匹配和处理。
`switch`语句后跟随一个括号,括号中是用于比较的表达式或变量。
每个`case`关键字后跟随一个整数值或字符,表示可能的表达式结果。
下面我们将详细介绍`case`语句的用法及规则。
二、语法结构1. `switch`语句后跟随一个括号,括号中是用于比较的表达式或变量。
2. 每个`case`关键字后跟随一个整数值或字符,表示可能的表达式结果。
3. `case`后面的值必须是常量,而且必须是整数或字符。
4. `case`后面跟的值必须是不相等的,否则多个`case`可以匹配到同一个值。
5. 每个`case`语句必须以`break`关键字结束,否则会发生连续执行,即一旦匹配某个`case`,后续的所有`case`都会被执行,直到遇到`break`为止。
6. 有一个可选的`default`语句,用于处理未匹配到任何`case`的情况。
三、使用示例下面是一个使用`case`语句的示例代码:```c#include <stdio.h>int main() {int num = 2;switch (num) {case 1:printf("Number is 1\n");break;case 2:printf("Number is 2\n");break;case 3:printf("Number is 3\n");break;default:printf("Number is not 1, 2, or 3\n");break;}return 0;}```在这个示例中,根据变量`num`的值,程序会匹配相应的`case`并执行相应的操作。
如果`num`的值为1,程序会输出"Number is 1",如果`num`的值为2,程序会输出"Number is 2",以此类推。
sql中case语句的用法
sql中case语句的用法SQL中Case语句的用法1. 概述在SQL中,Case语句是一种条件表达式,用于根据给定的条件执行不同的操作。
它类似于编程语言中的if-else语句,可以根据不同的条件进行分支处理。
2. 简单形式的Case语句简单形式的Case语句是最基本的形式,它根据给定的表达式的值来判断执行哪个分支。
下面是一个简单的例子:SELECT column1, column2,CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE resultENDFROM table;•column1, column2:要返回的列名•condition1, condition2:可选的条件表达式•result1, result2:对应条件为真时返回的结果•ELSE result:可选,当没有条件为真时返回的结果3. Case语句的其他形式除了简单形式的Case语句,还有其他形式的Case语句可以满足更复杂的条件判断需求。
Searched Case语句Searched Case语句是根据条件表达式的结果来判断执行哪个分支,它可以包含多个条件和结果。
以下是一个示例:SELECT column1,CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE resultENDFROM table;Case表达式Case表达式是一种在SELECT语句中使用的特殊形式的Case语句,它可以用于计算新的列值或替换现有列的值。
下面是一个示例:SELECT column1,CASE column2WHEN value1 THEN result1WHEN value2 THEN result2...ELSE resultEND AS new_columnFROM table;•column2:被比较的列名•value1, value2:可选的比较值•result1, result2:对应比较值相等时返回的结果•AS new_column:可选的新列名4. Case语句的应用场景Case语句在SQL查询中非常有用,可以用于对数据进行分类、转换和聚合。
case语句,循环语句
case语句,循环语句case语句,循环语句vim 名字也不能乱写⽐如vim rsync.sh应为后⾯需要pkill rsync 会把⽂件⼀起删掉1.case流程控制语句case 变量名4 in模式匹配1)命令的集合;;模式匹配2)命令的集合;;模式匹配3)命令的集合;;*) *的下⼀⾏不需要有;;echo USAGE[$0 1|2|3]esac[root@shell /server/scripts]# cat case.sh#!/bin/bash############################################################### File Name: case.sh# Time: 2019-11-04-09:43:18# Author: msy##############################################################case $1 inLinux)echo linux...;;Shell)echo shell...;;MySql)echo mysql...;;*)echo "USAGE $0 [Linux|Shell|MySql]"esac[root@shell /server/scripts]# sh case.sh Linuxlinux...case 批量删除⽤户[root@shell /server/scripts]# cat casedel.sh#!/bin/bash############################################################### File Name: casedel.sh# Time: 2019-11-04-10:22:07# Author: msy##############################################################read -p "请输⼊⽤户前缀名:" prefixread -p "请输⼊要删除⽤户数量:" numfor i in `seq $num`dofor n in `seq $num`doname=$prefix$ncase $ready iny|Y)id $name &>/dev/nullif [ $? -eq 0 ];thenuserdel -r $name[ $? -eq 0 ] && echo "$name del is ok"elseecho "id :$name: no such user"fi;;n|N)echo "不删除我,你按什么删除命令?" && exit ;;*)echo "USAGE $0 [y|Y|n|N]"esacdonecase菜单[root@web scripts]# cat menu.sh#!/bin/shecho -e "\t\t#########################"echo -e "\t\t#\t1.系统负载\t#"echo -e "\t\t#\t2.磁盘使⽤率\t#"echo -e "\t\t#\t3.内存使⽤率\t#"echo -e "\t\t#\t4.当前登录⽤户\t#"echo -e "\t\t#\t5.当前eth0的IP\t#"echo -e "\t\t#\t6.显⽰菜单\t#"echo -e "\t\t#########################"menu(){cat<<EOF1.u 系统负载2.d 磁盘使⽤率3.f 内存使⽤率4.w 当前登录⽤户5.ip 当前eth0的IP6.h 显⽰帮助(菜单)7.q 退出EOF}menuwhile truedoread -p "请输⼊你想要查看的系统信息的编号: " num case $num in1|u)uptime;;2|d)df -h;;3|f)free -h;;4|w)w;;5|ip)ip addmenu;;7|q)exit;;*)menuesacdone[root@shell /server/scripts]# cat caidan.sh#!/bin/bashmenu(){cat<<EOF0.菜单信息1.系统版本2.系统虚拟平台3.系统内核版本4.Eth0-IP地址5.Eth1-IP地址6.外⽹IP地址7.内存使⽤情况8.磁盘使⽤情况9.退出EOF}menuwhile truedoread -p "请输⼊要查看的信息编号:" numcase $num in0)menu;;1)hostnamectl |awk 'NR==7{print $3,$4,$5,$6}';;2)hostnamectl |awk 'NR==6{print $2}';;3)hostnamectl |awk 'NR==9{print $2,$3}';;4)ifconfig eth0 | awk 'NR==2{print $2}';;5)ifconfig eth1 | awk 'NR==2{print $2}';;6)curl -s |awk 'NR==1{print $NF}' ;;7)free -h;;8)df -h;;9)exit;;案例Nginx 启动脚本jumpserver跳板机/usr/sbin/nginx 使⽤命令进⾏启动后 systemctl ⽆法管理命令⾏启动的Nginx /usr/sbin/nginx 启动/usr/sbin/nginx -s stop 停⽌/usr/sbin/nginx -s reload 重新加载平滑重启/usr/sbin/nginx restart 重启当ip地址改变时,必须重启才⽣效sleep 2/usr/sbin/nginx⾃取状态 PID 端⼝状态[root@web scripts]# sh nginxstart.sh status当前Nginx的PID:116528[root@web scripts]# cat nginxstart.sh#!/bin/sh. /etc/init.d/functionsen=$1fun(){[ $? -eq 0 ] && action "Nginx $en is" /bin/true || action "Nginx $en is" /bin/false }case $1 instart)/usr/sbin/nginxfun;;stop)/usr/sbin/nginx -s stopfun;;reload)/usr/sbin/nginx -s reloadfun;;restart)/usr/sbin/nginx -s stopsleep 2/usr/sbin/nginxfun;;status)echo "当前Nginx的PID:`ps axu|grep nginx|grep master|awk '{print $2}'`";;*)echo "USAGE $0 [start|stop|reload|restart|status]"esac[root@shell /server/scripts]# cat nginx.sh#!/bin/bash############################################################## # File Name: nginx.sh# Time: 2019-11-05-17:18:53# Author: msy############################################################## [ -f /etc/init.d/functions ] && source /etc/init.d/functionsif [ ! $USER == "root" -a ! $UID -eq 0 ];thenif [ $# -ne 1 ];thenecho "请输⼊⼀个参数"echo "USAGE $0 [start|stop|reload|restart|status]"exitfiPid=/var/run/nginx.pidcase $1 instart)if [ -f $Pid ];thenaction "Nginx服务正在运⾏" /bin/trueelse/usr/sbin/nginx &>/dev/nullif [ $? -eq 0 ];thenaction "Nginx服务启动成功" /bin/trueelseaction "Nginx服务启动失败" /bin/falseexitfifi;;stop)if [ -f $Pid ];then/usr/sbin/nginx -s stop &>/dev/nullif [ $? -eq 0 ];thenaction "Nginx服务停⽌成功" /bin/trueelseaction "Nginx服务停⽌失败" /bin/falsefielseaction "Nginx服务没有运⾏" /bin/truefi;;reload)if [ -f $Pid ];then/usr/sbin/nginx -s reload &>/dev/nullif [ $? -eq 0 ];thenaction "Nginx服务重载成功" /bin/trueelseaction "Nginx服务重载失败" /bin/falsefielseaction "Nginx服务没有运⾏,⽆法进⾏重载" /bin/false fi;;status)if [ -f $Pid ];thenaction "Nginx服务正在运⾏" /bin/trueelseaction "Nginx服务没有运⾏" /bin/truefi;;restart)if [ -f $Pid ];then/usr/sbin/nginx -s stop &>/dev/nullif [ $? -eq 0 ];thenaction "Nginx服务停⽌成功" /bin/trueelseaction "Nginx服务重载失败" /bin/falsefisleep 3/usr/sbin/nginx &>/dev/nullaction "Nginx服务重启失败" /bin/falsefielse▽ action "Nginx服务没有运⾏" /bin/true/usr/sbin/nginx &>/dev/nullif [ $? -eq 0 ];thenaction "Nginx服务启动成功" /bin/trueelseaction "Nginx服务启动失败" /bin/falsefifi;;*)echo "USAGE $0 [start|stop|reload|restart|status]"esac跳板机[root@shell /server/scripts]# cat jump.sh#!/bin/bash############################################################## # File Name: jump.sh# Time: 2019-11-06-15:12:04# Author: msy############################################################## WEB01=10.0.0.7WEB02=10.0.0.8MySQL=10.0.0.51NFS=10.0.0.31menu(){cat<<EOF1. WEB01=10.0.0.72. WEB02=10.0.0.83. MySQL=10.0.0.514. NFS=10.0.0.315. 显⽰菜单6. 退出EOF}menutrap "echo 来了⽼弟?还想⾛?" HUP INT TSTP 禁⽌终⽌命令while truedoread -p "请输⼊要连接的主机:" numcase $num in1)ssh root@$WEB01;;2)ssh root@$WEB02;;3)ssh root@$MySQL;;4)ssh root@$NFS;;5)clearmenu;;6)echo "霍!你别想退出"exitesacdone安装服务脚本[root@shell /server/scripts]# cat qidongmenu.sh#!/bin/bash############################################################## # File Name: qidongmenu.sh# Time: 2019-11-06-16:18:21# Author: msy############################################################## master_menu(){cat<<EOF######################1.安装Nginx2.安装PHP3.退出######################EOF}Nginx_menu(){cat<<EOF######################1.安装Nginx-1.122.安装Nginx-1.143.安装Nginx-1.164.返回主菜单######################EOF}PHP_menu(){cat<<EOF######################1.安装PHP-5.52.安装PHP-5.73.安装PHP-7.14.返回主菜单######################EOF}master_menutrap "echo ⽼弟进来了还想跑?" HUP INT TSTP 禁⽌终⽌while truedoread -p "请输⼊你要安装的服务:" Servercase $Server in1)clear 清屏Nginx_menuwhile truedoread -p "请输⼊要安装的版本:" Versioncase $Version in1)echo "你选择是安装Nginx-1.12版本....."echo "正在安装....."sleep 2echo "Nginx-1.12版本安装完成";;echo "正在安装....."sleep 2echo "Nginx-1.14版本安装完成";;3)echo "你选择是安装Nginx-1.16版本....."echo "正在安装....."sleep 2echo "Nginx-1.16版本安装完成";;4)clearmaster_menubreak 跳出循环,继续向下执⾏ esacdone;;2)clearPHP_menuwhile truedoread -p "请输⼊你要安装的PHP版本:" install case $install in1)echo "你选择是安装PHP-5.5版本....."echo "正在安装......."sleep 2echo "安装PHP-5.5版本完成.....";;2)echo "你选择是安装PHP-5.6版本....."echo "正在安装......."sleep 2echo "安装PHP-5.6版本完成.....";;3)echo "你选择是安装PHP-7.1版本....."echo "正在安装......."sleep 2echo "安装PHP-7.1版本完成.....";;4)clearmaster_menubreakesacdone;;3)echo "进来容易,出去难";;woshiyunwei)exit;;*)echo "请按照要求输⼊"esacdone2.for循环for 变量名 in [取值列表] 苹果⾹蕉梨桃⼦西⽠字符串数字{}序列命令 do命令体echo 呵呵done[root@shell /server/scripts]# vim 1.sh#!/bin/bashread -p "请输⼊创建⽤户前缀:" nameread -p "请输⼊创建⽤户数量:" numread -p "确认创建$name$num? Y|y|N|n:" qrif [ $qr == "Y|y" ];thenecho "创建失败"exitfifor i in `seq $num`doecho $name$idone[root@shell /server/scripts]# sh 1.sh请输⼊创建⽤户前缀:m请输⼊创建⽤户数量:5确认创建m5? Y|y|N|n:ym1m2m3m4m5使⽤for循环创建⽤户cat user.txtzslsemoldboy[root@web scripts]# cat for1.sh#!/bin/shfor i in `cat user.txt`douseradd $idone命令⾏中使⽤for循环批量删除⽤户for i in `cat user.txt`;do userdel -r $i;done3.while循环#模式⼀a=1while [ $a -lt 10 ] 条件判断⽅式dodone#模式⼆while read line 读⼊⽂件⽅式dodone < test.txt#模式三while true 条件为真⼀直循环两数相乘#!/bin/basha=1b=10while [ $b -gt 0 ]doecho "$a * $b = $(( $a * $b ))"let a++let b--done在/test下创建8天⽂件,⽂件名带时间time=1[ -d /test/ ] || mkdir -p /test/while [ $time -le 8 ]dodate -s "2019110$time" &>/dev/nullif [ $? -eq 0 ];thentouch /test/`date +%F`.txtlet time++if [ $? -eq 0 ];thenecho "⽂件创建成功"elseecho "⽂件创建失败"fielseecho "时间修改失败"fidone[root@shell /test]# lltotal 0-rw-r--r-- 1 root root 0 Nov 1 00:00 2019-11-01.txt-rw-r--r-- 1 root root 0 Nov 2 00:00 2019-11-02.txt-rw-r--r-- 1 root root 0 Nov 3 00:00 2019-11-03.txt-rw-r--r-- 1 root root 0 Nov 4 00:00 2019-11-04.txt-rw-r--r-- 1 root root 0 Nov 5 00:00 2019-11-05.txt-rw-r--r-- 1 root root 0 Nov 6 00:00 2019-11-06.txt-rw-r--r-- 1 root root 0 Nov 7 00:00 2019-11-07.txt-rw-r--r-- 1 root root 0 Nov 8 00:00 2019-11-08.txtwhile read`判断⼀个⽂件中总共的⾏数`统计⾏号[root@web scripts]# cat while4.sh#!/bin/shwhile read linedolet i++done</etc/passwdecho $iwhile read line line 变量名按⾏读取⽂件的内容 for循环是按照空格分隔读取⽂件内容while read linedoif id $line &>/dev/null;thenecho "⽤户已经存在"continuefiecho "⽤户创建失败"fidone < user.txtwhile read linedoUser=`echo $line |awk -F: '{print $1}'`Pass=`echo $line |awk -F: '{print $2}'`id $User &>/dev/nullif [ $? -eq 0 ];thenecho "$User ⽤户已经存在"elseuseradd $User &>/dev/null && echo $Pass|passwd --stdin $User &>/dev/nullif [ $? -eq 0 ];thenecho "⽤户创建成功"elseecho "⽤户创建失败"fifidone < user.txtuntil 循环until 循环执⾏⼀系列命令直⾄条件为 true 时停⽌。
db2的case when 语句
db2的case when 语句摘要:1.DB2 的CASE 语句概述2.CASE 语句的基本语法3.CASE 语句的应用示例正文:【1.DB2 的CASE 语句概述】DB2 是一种关系型数据库管理系统,广泛应用于企业级数据处理。
在DB2 中,CASE 语句是一种条件判断语句,它可以根据特定条件执行不同的动作。
CASE 语句主要用于实现复杂的逻辑判断,提高SQL 查询的灵活性和可读性。
【2.CASE 语句的基本语法】CASE 语句的基本语法如下:```CASEWHEN condition THEN resultWHEN condition THEN result...ELSE resultEND```其中,`condition`表示条件,`result`表示满足条件时执行的动作。
可以使用多个WHEN 子句来定义多个条件及其对应的结果。
ELSE 子句是可选的,用于定义不满足任何条件时执行的动作。
【3.CASE 语句的应用示例】假设有一个名为`employees`的表,包含以下列:`id`、`name`、`salary`和`department`。
现在需要根据员工的部门计算其工资是否高于部门平均工资,并返回相应的提示信息。
可以使用CASE 语句实现如下查询:```sqlSELECTid,name,salary,department,CASEWHEN department = "IT" THEN "Salary is higher than average in IT department."WHEN department = "HR" THEN "Salary is higher than average in HR department."WHEN department = "Finance" THEN "Salary is higher than average in Finance department."ELSE "Salary is not higher than average in any department."END AS messageFROMemployees;```在上述查询中,我们使用了CASE 语句根据员工的部门判断其工资是否高于部门平均工资,并返回相应的提示信息。
case语句
case语句
case语句是在一系列的可能情况中选择一种情况进行选择的一种语句,它有助于简化流程控制语句结构,使程序更易于阅读和理解。
case语句的语法格式为:
switch(表达式)。
case 常量1:
语句序列1。
break;。
case 常量2:
语句序列2。
break;。
…。
…。
default:
默认情况下执行的语句序列。
break;。
}。
在使用case语句时,首先根据表达式的值来查找对应的case常量,如果没有找到,则执行default语句序列,如果找到,则执行对应的语句序列,执行完后中断switch语句,整个switch语句结束。
例如,如果某程序中有一个变量x,需要根据x的取值来输出不同的内容,可以使用case语句来实现:
switch(x)。
case 1:
printf(“x的值为1\n”);
break;。
case 2:
printf(“x的值为2\n”);
break;。
case 3:
printf(“x的值为3\n”);
break;。
default:
printf(“x的值非1、2、3之一\n”);
break;。
}。
case语句可以用作多种不同的程序,例如可以根据某个字符的ASCII 码值来判断并输出其字符对应的内容,也可以根据用户输入的某个整数选择和执行不同的操作。
case语句具有较强的灵活性,使程序更加简洁明了,能够帮助我们解决复杂的程序问题。
c语言中case的意思和用法
C语言是一种非常常用的编程语言,而在C语言中,case是一个非常重要的关键字。
本文将对C语言中case的意思和用法进行详细解释。
一、case的意思在C语言中,case是用来进行多分支选择的关键字。
通常,case会和switch语句一起使用,用来根据表达式的值选择不同的执行路径。
在switch语句中,case可以有多个,每个case后面跟着一个常量表达式。
当switch后面的表达式的值与某个case后面的常量表达式相等时,程序会跳转到该case后面的语句执行,直到遇到break语句或者switch语句结束为止。
二、case的用法1. 基本语法switch (表达式){case 值1:语句序列1;break;case 值2:语句序列2;break;...default:语句序列n;}2. 多分支选择在C语言中,case的主要作用是进行多分支选择。
通过将不同值对应的处理逻辑放在不同的case中,可以根据表达式的值执行不同的代码块,从而实现多分支选择的功能。
3. 注意事项在使用case时,需要注意以下几点:(1)case后面的值必须是常量表达式,而且必须是整型或字符型的常量表达式。
(2)在switch语句中,case的值不能重复,即每个case后面的常量表达式必须是唯一的。
(3)在case的语句序列中,通常需要使用break语句来跳出switch 语句,以防止后续的case语句被执行。
如果不加break语句,程序会继续执行下一个case中的语句。
4. default除了使用case来匹配具体的值外,还可以使用default来处理switch 表达式的值和任何case都不匹配的情况。
在default后面可以跟任意的语句序列,用来处理默认情况。
5. 实例下面是一个使用switch和case的简单示例:#include <stdio.h>int m本人n(){int num = 2;switch (num){case 1:printf("num是1");break;case 2:printf("num是2");break;case 3:printf("num是3");break;default:printf("num是其他值");}return 0;}在这个示例中,根据num的值不同,程序会执行不同的printf语句,从而实现了多分支选择的功能。
verilog case用法
verilog case用法Verilog语言中,case语句是用来比较多个可能的值的选项列表。
它是一种逻辑控制与分支语句,与C语言中的switch语句类似,但是在Verilog中,它有更强的功能和更广泛的应用场景。
在这篇文章中,我们将详细介绍Verilog中的case用法。
1. case语句的基本语法case语句可以有多个分支,每个分支都有一个可能的值。
当变量等于分支的值时,该分支将被执行。
case语句的基本语法如下所示:```case (expression)constant1: statement1;constant2: statement2;...constantn: statementn;default: default statement;endcase```其中,expression是要比较的值,constant1到constantn是case的各个分支的值,statement1到statementn是与各个分支相关联的执行语句,default是缺省分支,当expression的值不在constant1到constantn的取值范围内时,执行该分支的语句。
2. case语句的应用场景case语句可以用于不同的场景。
例如,它可以用于构建状态机,也可以用于处理多个可能的信号输入。
下面是一些常见的应用场景:2.1 状态机状态机是一种基于状态转换的控制策略,用于实现带有特定状态和状态转换的电路。
在Verilog中,case语句可以用于实现有限状态机(FSM)并控制物理设计器件。
下面是一个简单的例子:```reg [1:0] state;parameter STATEA = 2'b00, STATEB = 2'b01, STATEC = 2'b10;always@(posedge clk)begincase(state)STATEA:begin//do somethingstate <= STATEB;endSTATEB:begin//do somethingstate <= STATEC;endSTATEC:begin//do somethingstate <= STATEA;enddefault:begin//errorstate <= STATEA;endendcaseend```2.2 处理多个信号输入在图像处理等多媒体设计中,常常需要对不同类型的数据信号进行分别处理。
keil中case语句
keil中case语句什么是Keil中的Case语句?在Keil软件中,Case语句是一种用于控制程序流程的结构。
它允许根据不同的条件执行不同的代码块。
Case语句通常与Switch语句一起使用,一起构成了强大的条件控制结构。
Case语句的基本语法如下:switch (expression){case constant1:statement(s);break;case constant2:statement(s);break;...case constantN:statement(s);break;default:statement(s);}在以上示例中,expression是一个表达式,它的结果将会被与每个constant 值进行比较,一旦找到匹配的常量,就会执行相应的语句(或代码块)。
如果没有匹配的常量,那么会执行default语句。
Case语句的原理是通过与expression的值进行比较来选择要执行的代码块。
当与某个case常量匹配时,程序会跳转到对应的case语句,执行相应的语句,然后继续执行后续的语句(直到遇到break语句)。
如果没有匹配的case常量,程序将会继续执行default语句。
Case语句的使用方法:1. 定义一个表达式,该表达式的值将被用于与每个case常量进行比较。
2. 在switch语句后面的大括号内,使用多个case语句来定义不同的常量值和相应的语句。
3. 可以在每个case的代码块内部执行任何合法的操作,例如赋值、条件判断、函数调用等等。
4. 对于每个case,可以选择性地使用break语句来跳出整个switch语句,或者继续执行后续的case语句。
5. 可以使用default语句来定义当没有case匹配时所执行的语句。
Case语句的一些要点和注意事项:- expression可以是任何合法的表达式,包括整数、字符、枚举类型等。
- 每个case常量必须是与expression类型相同的常量。
汇川case语句用法
汇川case语句用法汇川case语句用法在编程中,case语句是一种实现多分支选择的控制流结构。
case语句通常用于针对不同的值执行不同的操作。
在汇川开发中,也存在着使用case语句的一些常见用法。
下面将列举一些用法并进行详细讲解。
1. 单个条件判断使用case语句进行单个条件判断时,通常会使用when关键字。
示例如下:case variablewhen value1# 执行操作1when value2# 执行操作2when value3# 执行操作3else# 执行默认操作end•variable是需要进行判断的变量。
•value1、value2、value3是可能的取值。
•# 执行操作1、# 执行操作2、# 执行操作3是根据不同取值执行的操作。
•# 执行默认操作是当变量的值不匹配任何已定义的取值时执行的操作。
2. 多个条件判断在某些情况下,需要对多个条件进行判断,并执行相应的操作。
可以使用case语句的多个when子句来实现。
示例如下:case variablewhen value1# 执行操作1when value2, value3# 执行操作2when value4# 执行操作3else# 执行默认操作end•value1、value2、value3、value4是可能的取值。
•# 执行操作1、# 执行操作2、# 执行操作3是根据不同取值执行的操作。
•# 执行默认操作是当变量的值不匹配任何已定义的取值时执行的操作。
3. 正则表达式匹配除了可以进行精确的取值判断外,case语句还可以用于正则表达式匹配。
示例如下:case variablewhen /pattern1/# 执行操作1when /pattern2/# 执行操作2else# 执行默认操作end•/pattern1、/pattern2是正则表达式模式。
•# 执行操作1、# 执行操作2是根据匹配结果执行的操作。
•# 执行默认操作是当变量的值不匹配任何已定义的正则表达式时执行的操作。
mysql case then用法
mysql case then用法摘要:1.MySQL 中的CASE 语句介绍2.CASE 语句的THEN 用法3.CASE 语句的ELSE 和END 用法4.CASE 语句在实际场景中的应用5.总结正文:MySQL 中的CASE 语句是一种强大的条件判断工具,它可以在查询数据时根据特定条件返回不同的结果。
CASE 语句的THEN 用法可以根据不同的条件返回不同的值。
CASE 语句的基本语法为:```CASE 表达式WHEN 条件1 THEN 值1WHEN 条件2 THEN 值2...WHEN 条件N THEN 值NELSE 默认值END;```在上述语法中,可以根据不同的条件返回不同的值。
例如,可以根据用户ID 返回不同的折扣率:```SELECTproduct_id,product_name,price,CASEWHEN customer_id = 1 THEN 0.9WHEN customer_id = 2 THEN 0.8ELSE 1END AS discount_rateFROMproducts;```在这个例子中,当customer_id 为1 时,折扣率为0.9;当customer_id 为2 时,折扣率为0.8。
其他情况下,折扣率为1(无折扣)。
除了THEN 用法之外,CASE 语句还支持ELSE 和END 关键字。
ELSE 用法表示当所有条件都不满足时返回的默认值。
例如:```SELECTproduct_id,product_name,price,CASEWHEN customer_id = 1 THEN 0.9WHEN customer_id = 2 THEN 0.8ELSE 0END AS discount_rateFROMproducts;```在这个例子中,当customer_id 既不是1 也不是2 时,折扣率为0。
END 关键字表示CASE 语句的结束。
在实际应用中,可以结合其他函数使用CASE 语句,例如SUM()、AVG() 等。
case多条语句
case多条语句
在编程中,case语句通常用于基于某个变量的不同值执行不同的操作。
当需要执行多条语句时,可以在case块中添加这些语句。
以下是一个示例:
python复制代码
variable = 1
case variable:
when 1:
# 当variable 为1 时执行以下多条语句
statement1
statement2
statement3
when 2:
# 当variable 为2 时执行其他多条语句
statementA
statementB
statementC
else:
# 当variable 的值不是1 或2 时执行其他语句
statementX
在上面的示例中,当variable的值为 1 时,会执行statement1、statement2和statement3这三条语句。
当variable的值为 2 时,会执行statementA、statementB和statementC这三条语句。
对于其他值,将执行statementX这条语句。
请注意,上述示例中的代码是伪代码,具体语法和用法可能会因编程语言而有所不同。
你需要根据所使用的编程语言进行适当的调整。
sqlcase语句用法
sqlcase语句用法SQL的CASE语句是一种在查询时使用的条件语句。
它允许开发人员根据特定的条件,根据不同的结果执行不同的操作。
CASE语句类似于其他编程语言中的switch语句,但其语法和用法略有区别。
CASE语句可以分为两种类型:简单CASE表达式和搜索CASE表达式。
简单CASE表达式的语法如下:CASE expressionWHEN value1 THEN result1WHEN value2 THEN result2...ELSE resultEND在这种情况下,表达式将与每个WHEN子句中指定的值进行比较,如果匹配,则返回相应的结果。
如果没有任何匹配项,它将返回ELSE 子句中指定的结果。
如果没有ELSE子句,则返回NULL。
以下是一个简单的CASE语句的示例:SELECT employee_id, last_name,CASE department_idWHEN 10 THEN 'Administration'WHEN 20 THEN 'Marketing'WHEN 30 THEN 'Sales'ELSE 'Other'ENDFROM employees;这个示例中,我们根据不同的department_id值返回不同的部门名称。
如果department_id为10,则返回"Administration",如果department_id为20,则返回"Marketing",如果department_id为30,则返回"Sales",对于其他任何department_id值,我们将返回"Other"。
搜索CASE表达式的语法如下:CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE resultEND在这种情况下,每个WHEN子句中的条件将被评估,如果满足条件,则返回相应的结果。
case循环语句实例
case循环语句实例
嘿,咱今儿就来好好唠唠这 case 循环语句实例!你知道吗,这就好比是一个超级智能的导航系统。
比如说你要去一个地方,它能根据不
同的情况给你指出不同的路线。
咱先来看个简单的例子哈。
就好比你有一堆不同颜色的球,红色、
蓝色、绿色啥的。
然后你要用 case 循环语句来处理它们。
比如说,遇
到红色球就做一件事,遇到蓝色球就做另一件事。
哎呀,这多有意思啊!就好像你是个指挥官,那些球就是你的小兵,你指挥它们干啥它们就得干啥。
再举个复杂点的例子,比如在一个游戏里,根据玩家的不同操作,
程序要做出不同的反应。
这不就是 case 循环语句大显身手的时候嘛!
你想想看,要是没有它,那程序得多混乱啊!简直不敢想象!它就
像一个贴心的小助手,帮你把一切都安排得妥妥当当的。
那你说,这 case 循环语句是不是超级重要?它让我们的程序变得更智能、更灵活!它能处理各种复杂的情况,让一切都有条不紊地进行着。
我觉得啊,case 循环语句就是编程世界里的一颗璀璨明星!没有它,编程可就少了好多乐趣和效率呢!咱可得好好掌握它,让它为我们的
编程之路增添光彩呀!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
过程DisplayDiscount将储存于变量unitsSold的值传递给函数GetDiscount。当VB遇到Select Case语句时,它检查第一个Case子句里的值是否合储存于unitsSold里面的值是否匹配。如果匹配,VB给函数名称赋值百分之五(0.05),并且跳到关键字End Select。因为,在函数过程里面没有更多需要运行的语句,VB就返回主调过程——DisplayDiscount,在这里,它将函数的结果赋予变量myDiscount。最后的语句用信息框来显示获得的折扣。
我们来一个使用Select Case语句的程序例子。在第四章里,你学习了MsgBox函数允许你显示带有一个或多个按钮的信息,你也学习了MsgBox函数的结果可以赋予一个变量。使用Select Case语句,你现在可以基于用户按下的按钮决定采取哪个行动。
1. 在当前工程里插入一新模块
End Select
假设变量myNumber为120,那么第三个Case子句为真,并且只有Case Is >=100和Case Else之间的语句会被执行。
9.确定Case子句里数值的范围
在前面的例子里,你看到了在每个Case子句里使用一个简单表达式。然而,很多时候,你可能需要在Case子句里确定一个数值范围。可以通过关键字To用于表达式的数值之间来实现它,如下所示:
Case vbNo
MsgBox "You can open a new book manually later."
Case Else
MsgBox "You pressed Cancel."
End Select
你可以忽略Else子句,可以按下述方法修改一下Select Case语句:
question = "Do you want to open a new workbook?"
bts = vbYesNoCancel + vbQuestion + vbDefaultButton1
myTitle = "New Workbook"
myButton = MsgBox(prompt:=question, buttons:=bts, _ title:=myTitle)
Case Is <=500
GetDiscount = 0.1
Case 501 To 1000
GetDiscount = 0.15
Case Is >1000
GetDiscount = 0.2
End Select
End Function
3. 将光标放在过程DisplayDiscount的任意地方并且按下F5来运行它。
Debug.Print myMonth & ": 2nd Qtr."
Case "July", "August", "September"
Debug.Print myMonth & ": 3rd Qtr."
Case "October", "November", "December"
Select Case myButton
Case 6
Workbooks.Add
Case 7
MsgBox "You can open a new book manually later."
Case Else
MsgBox "You pressed Cancel."
为了避免难以弄清的复杂的嵌套的If语句,你可以使用Select Case语句代替。它的语法为:
Select Case 测试表达式
Case 表达式1
如果表达式1匹配测试表达式的语句
Case 表达式2
如果表达式2匹配测试表达式的语句
Case 表达式N
如果表达式N匹配测试表达式的语句
我们来练练使用Select Case语句,在函数过程里使用它。回想在第四章里,函数过程允许你将结果返回给一个子过程。假设该子过程必须根据销售的套数来显示一个折扣,你可以从用户那里获得销售套数,然后允许一个函数来确定需要的折扣:
1. 在模块SelectCase里输入下列子过程:
Sub DisplayDiscount()
Select Case语句对照储存在变量myButton里的值检查Case子句提供的值。当有匹配时,就会执行适当的Case语句。
如果你使用常量,而不是按钮值,过程TestButtons同样会运行一致。
Select Case myButton
Case vbYes
Workbooks.Add
Case Else
如果没有表达式匹配测试表达式要执行的语句
End Select
你在关键字Select Case和End Select之间放置任意多个条件以测试。子句Case Else是可选的,当你希望可能有条件表达式返回假时使用它。在Select Case语句里,VB将每个表达式和测试表达式相比较。
End Select
4. 运行过程TestButtons三次,每次选择一个不同的按钮。
技巧5-6 通过Case Else捕捉错误
尽管在Select Case语句里使用Case Else不是强制的,使用它总是很好的,以防止万一测试有没有预料到的值。Case Else子句是个放置错误信息的好地方。
这里是Select Case语句背后的逻辑。当VB遇到Select Case子句,它记下测试表达式的值。然后它前进到下面的第一个Case子句,如果这个表达式的值和测试表达式的值匹配的话,VB就会执行语句直到遇到另外一个Case子句并且跳到End Select语句。然而,如果第一个Case子句后面的表达式测试结果和测试表达式不匹配时,VB就会检查每一个Case子句,直到它找到一个匹配的为止。如果没有一个Case子句后面的表达式匹配测试表达式的值的话,VB就会跳到Case Else子句并执行该语句直到遇到关键字End Select。注意,Case Else子句是可选的,如果你的程序里面没有使用Case Else并且没有一个Case子句的表达式和测试表达式相匹配,VB就会跳到End Select后面的语句,并且继续执行你的程序。
Debug.Print myMonth & ": 4th Qtr."
End Select
技巧5-7 Case子句的多个条件
用来分隔开Case子句里面多个条件的逗号,和用于If语句里的运算符OR意义一样。只要这些条件有一个为真,Case子句就为真。
Select Case unitsSold
Case 1 to 100
Discount = 0.05
Case Is <= 500
Discount = 0.1
Case 501 to 1000
Discount = 0.15
Case Is >1000
Discount = 0.2
2. 重命名新模块SelectCase.
3. 输入下述过程TestButtons:
Sub TestButtons()
Dim question As String
Dim bts As Integer
Dim myTitle As String
Dim myButton As Integer
Select Case myButton
Case vbYes
Workbooks.Add
Case vbNo
MsgBox "You can open a new book manually later."
Case vbCancel
MsgBox "You pressed Cancel."
Case 11
MsgBox "You entered eleven."
Case Is >=100
MsgBox "The number is greater than or equal to 100."
Case Else
MsgBox "The number is between 12 and 99."
如果条件1为真时执行的语句
Case Is 条件2
如果条件2为真时执行的语句
Case Is 条件N
如果条件N为真时执行的语句
End Select
例如,我们来比较几个数字:
Select Case myNumber
Case Is <10
MsgBox "The number is less than 10"
MsgBox myDiscount
End Sub
2. 输入下列函数过程:
Function GetDiscount(unitsSold As Integer)
Select Case unitsSold
Case 1 To 200
GetDiscount = 0.05
End Select
我们来分析一下上面的Select Case代码块,假设变量unitsSold当前值为99。VB将变量unitsSold的值与Case子句的条件表达式进行比较。第一和第三条Case子句示范如何通过使用关键字To在条件表达式里使用数值范围。因为unitsSold=99,第一个Case子句里的条件表达式为真,因此,VB将0.05赋给变量Discount。第二个Case子句如何呢?它也为真。尽管,很明显99小于等于500,VB不会执行相关的语句Discount=0.1。原因是,一旦VB找到了一个真条件的Case子句,它就不会去管其它的Case子句,它将跳过那些代码,继续执行End Select语句后面可能有的语句。