#条件语句
#简介
条件语句用于根据不同的情况执行不同的代码。PowerShell 提供 if/elseif/else 和 switch 两种主要形式,PowerShell 7 还支持简洁的三元运算符。
#if / elseif / else
基本语法:
if (条件) {
语句
}
elseif (其他条件) {
语句
}
else {
语句
}
示例:
> $score = 85
> if ($score -ge 90) {
>> "优秀"
>> }
>> elseif ($score -ge 60) {
>> "及格"
>> }
>> else {
>> "不及格"
>> }
及格
条件表达式可以使用比较运算符、逻辑运算符和命令执行结果:
if (Test-Path ./config.json) {
Write-Output "配置文件存在"
}
#switch
switch 会依次匹配每个条件,默认使用不区分大小写的精确匹配:
> $color = "green"
> switch ($color) {
>> "red" { "stop" }
>> "green" { "go" }
>> default { "unknown" }
>> }
go
default在没有其他条件匹配时执行。- 与
break类似,switch默认会继续检查后续条件;使用break可以跳出。
#通配符匹配
使用 -Wildcard 让条件支持 * 和 ?:
> switch -Wildcard ("report.txt") {
>> "*.txt" { "文本文件" }
>> "*.csv" { "表格文件" }
>> }
文本文件
#正则匹配
使用 -Regex 让条件按正则表达式匹配:
> switch -Regex ("abc123") {
>> "^\d+$" { "纯数字" }
>> "[a-z]+\d+" { "字母加数字" }
>> }
字母加数字
#区分大小写
使用 -CaseSensitive 区分大小写:
> switch -CaseSensitive ("ABC") {
>> "abc" { "匹配" }
>> default { "不匹配" }
>> }
不匹配
#break 与 continue
在 switch 中,break 跳出整个 switch,continue 跳过当前匹配继续下一个:
> switch -Wildcard ("a.txt") {
>> "*.txt" { "文本"; continue }
>> "a*" { "以 a 开头" }
>> }
文本
以 a 开头
#三元运算符
PowerShell 7 支持三元运算符,适合简单的二选一赋值:
> $age = 20
> $result = $age -ge 18 ? "adult" : "minor"
> $result
adult
三元运算符也可以嵌套,但可读性较差时建议仍使用 if。