条件声明不再正确评估?

时间:2014-07-08 13:42:49

标签: powershell powershell-v3.0 conditional-statements

我在一段时间内写了条件语句时遇到了一点麻烦。

if ($select -gt 0 -and $select -le $numfiles){...}else{...}

它应该做的就是获取用户输入,$ select,并将其与当前目录中的文件数量$ numfiles进行比较。

我已经检查了调试器,发现两个变量都接收到值。在我正在运行的情况下,它应该被视为真实。

$select = 2
$numfiles = 11
$select -gt 0 -and $select -le $numfiles
True

然而,除非$ select等于1,否则它的评估为false。

我不确定发生了什么变化,因为它已经有一个多月没问题了。

2 个答案:

答案 0 :(得分:0)

为了确保分别评估两个表达式,我建议将它们包装在括号中。

if (($select -gt 0) -and ($select -le $numfiles)){...}else{...}

答案 1 :(得分:0)

确保变量具有正确的数据类型

$select.GetType().name
$numfiles.GetType().name

如果将其中一个字符串转换为[int],就像这样:

$select -as [int] -gt 0 -and $select -as [int] -le $numfiles