检查值是否在特定范围内 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] 还将处理正则表达式留下的空白。