异常的 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 )
这是一个非常简单的代码
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 )