不正常的DO-UNTIL循环

时间:2015-11-25 07:23:28

标签: powershell powershell-v3.0

这是一个非常简单的代码

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

1 个答案:

答案 0 :(得分:4)

问题是,你似乎是比较字符串而不是整数,所以100在数字上超过39,按字母顺序它小于30.要修复,你可以像这样强制转换为整数:

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