Powershell Switch 条件
Powershell Switch 条件 6
如果语句中有多路分支,使用IF-ELSEIF-ELSE不友好,可以使用Switch,看起来比较清爽一点。
下面的例子将If-ElseIF-Else转换成Switch语句
|
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
|
# 使用 IF-ElseIF-ElseIf( $value -eq 1 ){ "Beijing"}Elseif( $value -eq 2){ "Shanghai"}Elseif( $value -eq 3 ){ "Tianjin"}Else{ "Chongqing"}# 使用 Switchswitch($value){ 1 {"Beijing"} 2 {"Shanghai"} 3 {"Tianjin"} 4 {"Chongqing"}} |
|
1
|
|
测试取值范围
使用 Switch 时缺省的比较运算符为 -eq 等于,你也可以自己定制比较条件,将条件放在花括号中,必须保证条件表达式的返回值为布尔类型”$True”或”$False”
|
1
2
3
4
5
6
7
8
9
10
|
$value=18# 使用 Switch 测试取值范围switch($value){ {$_ -lt 10} {"小于10"} 10 {"等于10"} {$_ -gt 10} {"大于10"}}#输出#大于10 |
没有匹配条件
在IF-Else语句中如果没有合适的条件匹配,可以在Else中进行处理,同样在Switch语句中如果case中没有条件匹配,可以使用关键字Default进行处理。
同样是上面的例子,稍加修改:
|
1
2
3
4
5
6
7
8
9
10
11
|
$value=-7# 使用 Switch 测试取值范围switch($value){ {($_ -lt 10) -and ( $_ -gt 0) } {"小于10"} 10 {"等于10"} {$_ -gt 10} {"大于10"} Default {"没有匹配条件"}}#Output:#没有匹配条件 |
多个条件匹配
如果case中有多个条件匹配,那么每个匹配的条件都会进行处理,例如:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$value=2# 使用 Switch 测试取值范围switch($value){ {$_ -lt 5 } { "小于5" } {$_ -gt 0 } { "大于0" } {$_ -lt 100}{ "小于100"} Default {"没有匹配条件"}}#小于5#大于0#小于100 |
如果碰到匹配条件时只处理一次,可以使用Break关键字
|
1
2
3
4
5
6
7
8
9
10
11
|
$value=99# 使用 Switch 测试取值范围switch($value){ {$_ -lt 5 } { "小于5"; break} {$_ -gt 0 } { "大于0"; break} {$_ -lt 100} { "小于100"; break} Default {"没有匹配条件"}}#大于0 |
比较字符串
之前的条件比较的都是数字,接下来比较字符串,默认的条件判断为-eq ,我们知道在Powershell中字符串的使用-eq比较大小写不敏感,所以才有下面的例子:
|
1
2
3
4
5
6
7
8
9
10
|
$domain="www.mossfly.com"switch($domain){ "Www.moSSfly.com" {"Ok 1"} "www.MOSSFLY.com" {"Ok 2" } "WWW.mossfly.COM" {"Ok 3"}}Ok 1Ok 2Ok 3 |
大小写敏感
怎样在比较字符串时能够恢复为大小写敏感模式,Switch有一个-case 选项,一旦指定了这个选项,比较运算符就会从-eq 切换到 -ceq,即大小写敏感比较字符串:
|
1
2
3
4
5
6
7
8
9
|
$domain="www.mossfly.com"#大小写敏感switch -case ($domain){ "Www.moSSfly.com" {"Ok 1"} "www.MOSSFLY.com" {"Ok 2" } "www.mossfly.com" {"Ok 3"}}#Ok 3 |
使用通配符
字符串非常特殊,可是使用通配符,幸运的是Powershell也支持,果然Power啊。但是在Switch语句后要指定 -wildcard 选项
|
1
2
3
4
5
6
7
8
9
10
11
|
$domain="www.mossfly.com"#使用通配符switch -wildcard($domain){ "*" {"匹配'*'"} "*.com" {"匹配*.com" } "*.*.*" {"匹配*.*.*"}}匹配'*'匹配*.com匹配*.*.* |
在字符串匹配中,比通配符功能更强大是正则表达式,Powershell的Switch语句也支持,真是太棒了。当然需要给Switch关键字指定选项-regex
|
1
2
3
4
5
6
7
8
9
10
11
|
$mail="www@mossfly.com"#使用通配符switch -regex ($mail){ "^www" {"www打头"} "com$" {"com结尾" } "d{1,3}.d{1,3}.d{1,3}.d{1,3}" {"IP地址"}}#www打头#com结尾 |
同时处理多个值
Switch支持对集合所有元素进行匹配,下面的例子使用Powershell Switch语句演示打印水仙花数:
|
1
2
3
4
5
6
7
8
9
10
|
$value=100..999switch($value){{[Math]::Pow($_%10,3)+[Math]::Pow( [Math]::Truncate($_%100/10) ,3)+[Math]::Pow([Math]::Truncate($_/100) , 3) -eq $_} {$_}}#153#370#371#407 |
Powershell Switch 条件的更多相关文章
- JAVA基础——Switch条件语句
JAVA基础——switch 条件语句 switch语句结构: switch(表达式){ case值1: 语句体1: break: case值2: 语句体2: break: case值3: 语句体3: ...
- switch条件变量的取值类型
switch条件变量的取值类型主要有以下六种: 1)JDK1.5(不含JDK1.5)之前只能是byte.short.int.char类型,不能是float.double.long.boolean类型. ...
- Powershell分支条件
Where-Object 进行条件判断很方便,如果在判断后执行很多代码可以使用IF-ELSEIF-ELSE语句.语句模板: If(条件满足){如果条件满足就执行代码}Else{如果条件不满足}条件判断 ...
- Powershell对象条件查询筛选
在 Windows PowerShell 中,与所需的对象数量相比,通常生成的对象数量以及要传递给管道的对象数量要多得多.可以使用 Format cmdlet 来指定要显示的特定对象的属性,但这并不能 ...
- switch条件语句规则
- js中if else switch 条件判断的替代方法
function condition(test){ return({ cat :function(){console.log('cat');}, dog :function(){console.log ...
- 你好,C++(20).4.2.2 表达并列条件选择的switch语句:如果……如果……如果……
4.2.2 表达并列条件选择的switch语句:如果……如果……如果…… 在现实世界中,还有这样一类特殊的条件选择: 如果明天是晴天,我就穿T恤: 如果明天是阴天,我就穿衬衣: 如果明天是雨天,我就 ...
- JS基础_条件分支语句:switch语句
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Windows PowerShell 入門(5)-制御構文
Windows PowerShellにおける制御構文について学びます.数ある制御構文の中でもSwitch文は.他の言語に比べ豊富な機能が用意されています. 対象読者 Windows PowerShel ...
随机推荐
- 深入理解linux网络技术内幕读书笔记(七)--组件初始化的内核基础架构
Table of Contents 1 引导期间的内核选项 2 注册关键字 3 模块初始化代码 引导期间的内核选项 linux运行用户把内核配置选项传给引导记录,然后引导记录再把选项传给内核. 在引导 ...
- lua中的坑
在工作中使用lua也有一年了,代码也写了不少,踩过不少坑,这里记录一下. table.sort table.sort是lua自带的排序函数,数据量小时,也还是不错的.不过要注意你传入的compare函 ...
- lesson1:threadlocal的使用demo及源码分析
本文中所使用的demo源码地址:https://github.com/mantuliu/javaAdvance 其中的类Lesson1ThreadLocal 本文为java晋级系列的第一讲,后续会陆续 ...
- [转]Android 网络通信框架Volley简介(Google IO 2013)
Volley主页 https://android.googlesource.com/platform/frameworks/volley http://www.youtube.com/watch?v= ...
- 手游2dx面试笔记一
第一轮IQ测试:都来面试程序了,相信IQ再怎么也坑不到哪里去吧.要问什么样的题,几页纸呐, 如:1.找出不同类:羚羊.斑马.鲨鱼 2.在()里添一字使2边都能组词:木()料 3.中间值?:1,2,4, ...
- EJB开发第一个无状态会话bean、开发EJBclient
开发第一个无状态会话bean EJB中的三中bean: 会话Bean(Session Bean) 负责与client交互,是编写业务逻辑的地方.在会话bean中能够通过JDBC直接操作数据库.但大多数 ...
- Java学习笔记——JDBC读取properties属性文件
Java 中的 properties 文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件. 文件的内容是格式是"键=值"(key-valu ...
- Java基础知识强化38:StringBuffer类之StringBuffer的添加功能
1. StringBuffer的添加功能: public StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身. publ ...
- JAVA 泛型练习
二分查找: public class Q212 { public static void main(String [] args) { Integer []arr = {1,2,3,4,5,6,7,8 ...
- oracle 查询前一小时、一天、一个月、一年的数据
查询一小时 select concat(to_char(sysdate,'yyyy-mm-dd ')||(to_char(sysdate,'hh24')-1),':00:00') start_time ...