【问题标题】:Validate the input variable and action further进一步验证输入变量和操作
【发布时间】:2022-01-27 18:49:40
【问题描述】:

我是 powershell 新手

在我的脚本中,有一个名为$inputVar 的输入变量,它可以是234 之类的数字,但也可以是单个整数,也可以是逗号分隔的值,例如2,3,4,5

如果它是一个整数则什么都不做,但如果它是一个逗号分隔的变量,则打印逗号分隔内的每个元素,

例如:

 if  ($inputVar is an integer) {
}
else {
   foreach ($var in $inputVar){
    Write-Host $var
}
}

【问题讨论】:

  • 更好的方法可能是接受整数的list(或array),然后根据是否有0、1、或更多?你能进一步描述这个练习的目的吗?描述上下文,你正在处理的函数/脚本......

标签: powershell


【解决方案1】:

这取决于$inputvar 是像“1”或“1,2,3”这样的字符串还是像1 这样的整数值array 整数,如 1,2,3..

当它是 string 时,您可以将 $inputvar 拆分为可能的逗号,即使其中只有一个值,也可以将其强制放入一个数组中,方法是用 @() 包围它,然后使用 @ 987654325@ 属性如:

$inputvar = "1,2,3"
if (@($inputvar -split ',').Count -gt 1) { Write-Host ($inputvar -replace ',', [environment]::NewLine) }

当它不是一个字符串,而是一个整数数组或单个整数值时,你可以这样做:

$inputvar = 1,2,3
# (`!` is the same as `-not`)
if (![int]::TryParse($inputvar, [ref]$null)) { $inputvar | ForEach-Object { Write-Host $_ }}

if ($inputvar -is [array]) { $inputvar | ForEach-Object { Write-Host $_ }}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    相关资源
    最近更新 更多