Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 对多个逻辑操作使用括号_Powershell_Logical Operators_Parentheses - Fatal编程技术网

Powershell 对多个逻辑操作使用括号

Powershell 对多个逻辑操作使用括号,powershell,logical-operators,parentheses,Powershell,Logical Operators,Parentheses,考虑以下陈述: Get-ChildItem -Recurse *.vbs | Where-Object{$_.name -like "d*" -and $_.name -like "*s"} Get-ChildItem -Recurse *.vbs | Where-Object{($_.name -like "d*") -and ($_.name -like "*s")} 它们将产生完全相同的输出。我一直认为第一个语句会失败,因为条件不在括号中 查看-和和-或的示例,显示这些括号 (1 -eq

考虑以下陈述:

Get-ChildItem -Recurse *.vbs | Where-Object{$_.name -like "d*" -and $_.name -like "*s"}
Get-ChildItem -Recurse *.vbs | Where-Object{($_.name -like "d*") -and ($_.name -like "*s")}
它们将产生完全相同的输出。我一直认为第一个语句会失败,因为条件不在括号中

查看
-和
-或
的示例,显示这些括号

(1 -eq 1) -or (1 -eq 2)
但《科技网》的文章展示了这个例子

$_.handles -gt 200 -and $_.name -eq "svchost"
一段时间以来,我一直在告诉人们使用括号,因为“否则它将不起作用”。这种差异纯粹是表面上的,最终也无关紧要,我只是在强调我个人的偏好吗?

如果你看一下,它在第7.10节(逻辑运算符)中说:

逻辑AND运算符-AND转换由其指定的值 如有必要,将操作数设置为bool(§6.2)。结果是逻辑AND 可能转换的操作数值的,并且具有类型bool。如果 左操作数的计算结果为False,而右操作数的计算结果为False。 逻辑OR运算符-OR转换由其指定的值 如有必要,将操作数设置为bool(§6.2)。结果是的逻辑OR 可能转换的操作数值,并且具有bool类型。如果左边 操作数的计算结果为True。不计算右操作数。这个 逻辑异或运算符-XOR转换由其 操作数到bool(§6.2)。结果是逻辑的异或 已转换操作数值,并且具有类型bool

这些运算符是左关联的。


因此,这决定了添加(或不添加)括号的规则。

我对该文本的解释是,如果需要,不管是否存在括号,它都会先计算左边的内容,然后再计算右边的内容。这就是我要说的吗?是的。逻辑表达式是从左到右求值的,如果默认求值与您期望的值不一致,则您有责任使用括号。
(1 -eq 1) -or (1 -eq 2)