写点什么

【21-15】PowerShell 条件判断

用户头像
耳东
关注
发布于: 3 小时前
【21-15】PowerShell条件判断

本文介绍 PowerShell 脚本的条件判断语法。


  • if 语句

  • if else 语句

  • 嵌套 if 语句

  • switch 语句

if 语句

if是最常用的条件判断结构,只有符合给定条件时,才会执行指定的命令。它的语法如下。


if(Boolean_expression) {   commands}
复制代码


if关键字后面是主要的判断条件,如果布尔表达式的计算结果为 true,那么将执行 if 语句中的代码块。如果没有,将执行 if 语句结束后(在结束大括号之后)的第一组代码。


举个例子,我们看一下


$x = 10
if($x -le 20){ write-host("X 小于 20")}
if($x -le 5){ write-host("X 小于 5")}
write-host "X 等于 10"
复制代码


执行上边的代码,我们可以得到输出如下:


X 小于 20
X 等于 10
复制代码


可以看出,第一个判断是 True,输出了X 小于 20,第二个判断是 False,没有输出X 小于 5 , 输出了后边的 X 等于 10

if else 语句

if 和 else 组合,当判断为真时,执行 if 的语句,判断为假时,执行 else 的语句。语法如下:


if(Boolean_expression) {   // Executes when the Boolean expression is true}else {   // Executes when the Boolean expression is false}
复制代码


接下来我们看一个例子


$x = 40
if($x -le 20){ write-host("This is if statement")}else { write-host("This is else statement")}
复制代码


我们可以看到输出如下:


This is else statement
复制代码

if … elseif … else 语句

if 语句后面可以跟一个 else if 语句,这对于使用单个 if … elseif 语句测试各种条件非常有用。


使用 if … else … ifelse 语句时,有几点需要注意。


  • 一个 if 可以有零个或一个else,它必须在 if 之后。

  • 一个 if 可以有零到多个 elseif,它们必须在 else 之前。

  • 一旦 else 成功,其余的 elseif 都不会执行。


语法如下:


if(Boolean_expression 1) {   // Executes when the Boolean expression 1 is true}elseif(Boolean_expression 2) {   // Executes when the Boolean expression 2 is true}elseif(Boolean_expression 3) {   // Executes when the Boolean expression 3 is true}else {   // Executes when the none of the above condition is true.}
复制代码


我吗来看一个例子:


$x = 20
if($x -eq 10){ write-host("Value of X is 10")} elseif($x -eq 20){ write-host("Value of X is 20")} elseif($x -eq 30){ write-host("Value of X is 30")} else { write-host("This is else statement")}
复制代码


我们可以看到输出如下:


Value of X is 20
复制代码

嵌套 if 语句

嵌套的 if … else 语句总是合法的,这意味着你可以在另一个 ifelseif 语句中使用一个 ifelseif 语句来进行进一步的判断。


嵌套 if … else 的语法如下:


if(Boolean_expression 1) {   // Executes when the Boolean expression 1 is true   if(Boolean_expression 2) {      // Executes when the Boolean expression 2 is true   }}
复制代码


我们来看一个例子


$x = 20$y = 10
if($x -eq 20){ if($y -eq 10) { write-host("X = 20 and Y = 10") }}
复制代码


我们执行上边的代码,可以看到如下的输出


X = 20 and Y = 10
复制代码

switch 语句

switch 语句允许一个变量来针对值的列表平等进行测试。每个值都称为一个 case,并且针对每种情况检查要要判断的变量。这个类似于 Bash Shell 里的 case 语句。


语法如下:


switch(<test-value>) {   <condition> {<action>}       break; // optional   <condition> {<action>}       break; // optional   <condition> {<action>}       break; // optional}
复制代码


以下规则适用于 switch 语句


  • switch 语句中使用的变量只能是任何对象或对象数组。

  • 你可以在 switch 中包含任意数量的 case 语句。每个案例后面都有可执行的操作。

  • 案例的值必须与交换机中的变量具有相同的数据类型,并且必须是常量或文字。

  • 当接通的变量等于大小写时,该大小写之后的语句将一直执行,直到达到 break 语句。

  • 当达到 break 语句时,switch 终止,控制流跳转到 switch 语句后面的下一行。

  • 并非每个案例都需要包含 break。如果没有出现 break,控制流会一直执行,直到达到后来的 case 后的 break 或到整个 switch 的结束。


我们来看 3 个例子


第一个是没有 break 的



switch(3){ 1 {"One"} 2 {"Two"} 3 {"Three"} 4 {"Four"} 3 {"Three Again"}}
复制代码


我们可以看到输出如下:


ThreeThree Again
复制代码


第二个例子是带 break 语句。


switch(3){   1 {"One"}   2 {"Two"}   3 {"Three"; break }   4 {"Four"}   3 {"Three Again"}}
复制代码


我们可以看到输出如下:


Three
复制代码


第三个例子是将一个数组作为输入的。


switch(4,2){   1 {"One"}   2 {"Two"}   3 {"Three"; break }   4 {"Four"}   3 {"Three Again"}}
复制代码


我们可以看到输出如下:


FourTwo
复制代码


发布于: 3 小时前阅读数: 3
用户头像

耳东

关注

还未添加个人签名 2020.05.24 加入

主要研究分享运维技术,专注于监控、CICD、操作系统、云原生领域,公众号【耳东学堂】,知识星球同名,坚持原创,希望能和大家在运维路上结伴而行 邮箱:erdong@mail.erdong.site

评论

发布
暂无评论
【21-15】PowerShell条件判断