检查值是否在特定范围内 powershell
Check if value falls within a specific range powershell
我有一个代码给我 2 个值,如下所示
$pattern = '\s(-?\d+.?\d+)\s'
$RX_Val = [regex]::Matches($RXTX_Data[0], $pattern).Value
$TX_Val = [regex]::Matches($RXTX_Data[1], $pattern).Value
PS C:\Windows\system32> $RX_Val
-3.4
PS C:\Windows\system32> $TX_Val
-2.3
需要获取 RX 和 TX 值应在 -1 到 -7 范围内
像上面2个值都在
范围内
如果值分别为 1 和 -8,则应该报错
我试过下面的代码,但没有得到正确的响应
if((($RX_Val -gt -1) -and ($RX_Val -lt -7)))# -and (($TX_Val -gt '-1') -and ($TX_Val -lt '-7')))
{
Write-Host "OK"
}
else
{
Write-Host "NOT OK"
}
也试过
$RX_Val -In -1..-7
请让我知道我在这里缺少什么
尝试了以下方式给出的解决方案
$RX_Val = [int][regex]::Matches($RXTX_Data[0], $pattern).Value
$TX_Val = [int][regex]::Matches($RXTX_Data[1], $pattern).Value
if(($RX_Val -in -1..-7) -and ($TX_Val -in -1..-7))
{
Write-Host "OK"
}
else
{
$RXTX_Data | Out-File -FilePath "E:$file_name" -Force
}
但在以下情况下失败,因为值被转换为 int。假设打印 OK
$RX_Val=-0.1
$TX_Val=-1.5
问题是您的正则表达式提取的值 return 是一个字符串。您需要将其转换为 INT 才能进行计算。
$RX_Val = [int][regex]::Matches($RX, $pattern).Value
$TX_Val = [int][regex]::Matches($TX, $pattern).Value
当然你可以让逻辑从那里开始工作。
作为奖励,转换为 [int]
还将处理正则表达式留下的空白。
我有一个代码给我 2 个值,如下所示
$pattern = '\s(-?\d+.?\d+)\s'
$RX_Val = [regex]::Matches($RXTX_Data[0], $pattern).Value
$TX_Val = [regex]::Matches($RXTX_Data[1], $pattern).Value
PS C:\Windows\system32> $RX_Val
-3.4
PS C:\Windows\system32> $TX_Val
-2.3
需要获取 RX 和 TX 值应在 -1 到 -7 范围内 像上面2个值都在
范围内如果值分别为 1 和 -8,则应该报错
我试过下面的代码,但没有得到正确的响应
if((($RX_Val -gt -1) -and ($RX_Val -lt -7)))# -and (($TX_Val -gt '-1') -and ($TX_Val -lt '-7')))
{
Write-Host "OK"
}
else
{
Write-Host "NOT OK"
}
也试过
$RX_Val -In -1..-7
请让我知道我在这里缺少什么
尝试了以下方式给出的解决方案
$RX_Val = [int][regex]::Matches($RXTX_Data[0], $pattern).Value
$TX_Val = [int][regex]::Matches($RXTX_Data[1], $pattern).Value
if(($RX_Val -in -1..-7) -and ($TX_Val -in -1..-7))
{
Write-Host "OK"
}
else
{
$RXTX_Data | Out-File -FilePath "E:$file_name" -Force
}
但在以下情况下失败,因为值被转换为 int。假设打印 OK
$RX_Val=-0.1
$TX_Val=-1.5
问题是您的正则表达式提取的值 return 是一个字符串。您需要将其转换为 INT 才能进行计算。
$RX_Val = [int][regex]::Matches($RX, $pattern).Value
$TX_Val = [int][regex]::Matches($TX, $pattern).Value
当然你可以让逻辑从那里开始工作。
作为奖励,转换为 [int]
还将处理正则表达式留下的空白。