gpt4 book ai didi

powershell - 如何将命令行参数设置为整​​数,但是如果给定非数字值,请再次询问?

转载 作者:行者123 更新时间:2023-12-03 07:49:05 26 4
gpt4 key购买 nike

我的脚本以命令行参数的形式要求许多用户$numUsers。然后,我使用该数字声明大小为$numUsers的数组。

当用户提供数字时,它可以正常工作,但是当给定非数字字符时,我需要再次输入一个数字。

目前,我的代码只是失败,并抛出难看的错误消息。

$numUsers = Read-Host -Prompt 'Specify how many users'
$userArray = New-Object string[] $numUsers

我尝试使用递归函数将命令行arg转换为int,如果失败,则再次要求arg,但也会失败。
function makeInt {
param([string]$numString)
try { $newNum = [int]$numString }
catch { makeInt (Read-Host -Prompt 'try again') }
}

$numUsers = Read-Host -Prompt 'Specify how many users'
makeInt $numUsers
$userArray = New-Object string[] $numUsers

我也尝试了其他几种方法,但这与我最近几天所获得的结果差不多。希望有人可以提供帮助!

最佳答案

如果您要施加的唯一约束是用户输入可转换为[int],则可以在循环中使用 [int]::TryParse() method:

[int] $number = -1
while (-not [int]::TryParse((Read-Host -Prompt 'Specify how many users'), [ref] $number)) {
Write-Warning "Not a valid number, please try again."
}
# You only get here if the user (ultimately) provided valid input.
# $number then contains the user's input as an [int].
[int]::TryParse()尝试进行一次转换,如果转换成功,则将 [int]值存储在引用传递的变量( [ref])中,并返回 $True
如果无法进行转换,则返回 $False
while循环不断提示,直到提供有效输入为止,此后 $number包含与用户输入的数字字符串等效的 [int]

关于powershell - 如何将命令行参数设置为整​​数,但是如果给定非数字值,请再次询问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52595077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com