【问题标题】:Boolean in PowerShell while loopPowerShell while 循环中的布尔值
【发布时间】:2020-12-03 19:54:47
【问题描述】:

如何在 Powershell 中使用布尔值控制 while 循环?

param
(
    [Parameter(Mandatory = $true, HelpMessage = "Name. -1 for all names.")] 
    [string]$name
)

try
{
    $selected = $false
    while($selected -eq $false)
    {
        if($name -eq "-1")
        {
            write-host "Displaying all names"
            Get-Name | select name
        }
        else
        {
            # do some code here
            $selected = $true
        }
    }
}
catch
{
    'Name {0} was not found. Provide a valid name.' -f $name
    exit(0)
}

预期行为:

  1. 提示用户输入姓名
  2. 如果用户不知道名字,他们可以输入 -1
  3. 当键入 -1 时,会向用户显示所有名称
  4. 代码不会在循环中退出

【问题讨论】:

  • 什么是Get-Name
  • 我假设get-name | select-name 只是被省略的伪代码。提要,当我运行你的代码时,我做了两个修改:注释掉“get-name|select-name”并在它下面添加“pause”。当我这样做时,我得到Displaying All Names,然后是hit enter to continue(这是我添加的暂停)。这会重复恶心,直到我手动停止代码。因此,在您当前的代码中,您似乎已经实现了既定目标。你能更好地解释一下你的代码目前不允许你做什么吗?

标签: powershell while-loop boolean


【解决方案1】:

只需将$selected 设置为$true 即可在用户在$name 中输入"-1" 时退出循环。

我真的不明白你为什么循环?

【讨论】:

    猜你喜欢
    • 2019-03-01
    • 2011-08-01
    • 2017-11-20
    • 2015-05-24
    • 2021-11-09
    • 1970-01-01
    • 2017-03-12
    • 2013-03-02
    • 1970-01-01
    相关资源
    最近更新 更多