首页 > 解决方案 > If 和 ElseIf 语句在 PowerShell 中不起作用?

问题描述

我在下面编写了以下 PowerShell 脚本:

if ($Animal -eq "Chicken") {
    if ($Food -eq "Egg") {
        Write-Host "This chicken eats egg"
    } ElseIf ($Food -eq "Soup") {
        Write-Host "This chicken eats soup"
} ElseIf ($Animal -eq "Cow") {
    if ($Food -eq "Egg") {
        Write-Host "This cow eats egg"
    } ElseIf ($Food -eq "Soup") {
        Write-Host "This cow eats soup"
} ElseIf ($Animal -eq "Zebra") {
    if ($Food -eq "Egg") {
        Write-Host "This zebra eats egg"
    } ElseIf ($Food -eq "Soup") {
        Write-Host "This zebra eats soup"

该脚本适用于鸡和牛,但不注册代码的斑马部分。我不确定我做错了什么,因为没有返回错误。有人可以提供一些指导吗?

标签: powershell

解决方案


虽然我完全同意 Doug 的回答,但我完全不知道您为什么首先使用 if 语句。如果这是一个学习练习,我建议使用如下 switch 语句:

$Animal = "Zebra"
$Food = "Soup"
$output = ""

switch ($Animal){
    "Chicken" { $output = "This $($Animal) eat $($Food)"; break}
    "Cow" { $output = "This $($Animal) eat $($Food)"; break }
    "Zebra" { $output = "This $($Animal) eat $($Food)"; break }
}

Write-Output $output

或者只是输出值而不进行不必要的检查:

$Animal = "Zebra"
$Food = "Soup"

Write-Output "This $($Animal) eat $($Food)"

推荐阅读