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-Else If ( $value -eq 1 ) { "Beijing" } Elseif ( $value -eq 2) { "Shanghai" } Elseif ( $value -eq 3 ) { "Tianjin" } Else { "Chongqing" } # 使用 Switch switch ( $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 1 Ok 2 Ok 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..999 switch ( $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 ...
随机推荐
- WebApi限制IP地址请求
, ); } } } ? true : false; } ...
- HDU_2028——求多个数的最小公倍数
Problem Description 求n个数的最小公倍数. Input 输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数. Output 为每组测试数据输出它们的最 ...
- Contest - 2014 SWJTU ACM 手速测试赛(2014.10.31)
题目列表: 2146 Problem A [手速]阔绰的Dim 2147 Problem B [手速]颓废的Dim 2148 Problem C [手速]我的滑板鞋 2149 Problem D [手 ...
- Swing UI - 可收起与开展内容面板实现演示
基于JAVA Swing实现的自定义组件可折叠的JPanel组件 基本思想: 可折叠面板,分为两个部分-头部面板与内容面板 头部面板– 显示标题,以及对应的icon图标,监听鼠标事件决定内容面板隐藏或 ...
- 【更新日志】售后CP更新日志
记录一下: [售后CP更新日志] ============================================ 更新时间:[-- :] 更新内容: .版本升级,框架升级,框架升级版本3. ...
- int与Integer
int 是基本类型,直接存数值 integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型和复杂数据类型 int 是前者>>integer 是后者(也就是一个 ...
- Jsp中response对象的所有属性
所属接口:javax.servlet.http.HttpServletResponse,其父接口是ServletResponse,而且ServletResponse也现在只有唯一一个HttpServl ...
- gcc -L -l的使用
-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so ...
- 解决蛋疼的阿里云单CPU使用率的问题。
工作中涉及到阿里云的应用.在性能测试阶段,压测过程中只要一个CPU未使用满,第二个CPU以至于第三个和第四个CPU完全用不到. 后来和阿里云的同事沟通他们现在用的是单队列的网卡,只能靠RPS/RFS这 ...
- ACPI电源管理中的S0 S1 S2 S3 S4 S5
电源选项中S0,S1,S2,S3,S4,S5的含义以 ACPI 的规格来说吧!ACPI(Advanced Configuration and Power Interface),即高级配置与电源接口.这 ...