异常的 DO-UNTIL 循环

Unsual DO-UNTIL loop

这是一个非常简单的代码

do {
       $size = Read-Host -Prompt "Enter a value "
} 
until ( $size -gt 39 )

对于介于 100 和 390 之间的值,它会进入无限循环,但对于低于 99 和高于 390 的值,它工作得很好。

无限循环,即使值超过 39

Enter a value : 38
Enter a value : 37
Enter a value : 100
Enter a value : 110
Enter a value : 200
Enter a value : 300
Enter a value : 390

将值更改为大于 49

do {
    $size = Read-Host -Prompt "Enter a value "
} 
until ( $size -gt 49 ) 

现在范围是 49 到 490

我是不是做错了什么? powershell 版本是 3.0.-1.-1

问题是,你似乎是在比较字符串而不是整数,所以虽然 100 在数字上大于 39,但在字母顺序上它小于 30。要解决这个问题,你可以像这样转换为整数:

do {
   $size = Read-Host -Prompt "Enter a value "
} 
until ( [int]$size -gt [int]39 )