【发布时间】:2012-05-04 14:55:06
【问题描述】:
-ne、-eq 和 -gt 的构造看起来至少很奇怪。
if ($true -eq $true){}
但不是
if ($true = $true){}
解释是什么?
【问题讨论】:
标签: powershell syntax
-ne、-eq 和 -gt 的构造看起来至少很奇怪。
if ($true -eq $true){}
但不是
if ($true = $true){}
解释是什么?
【问题讨论】:
标签: powershell syntax
基本上答案是 Unix 一直以来都是这样做的。果然,如果您编写了一些您将使用的 Bash 脚本,并且将您的 PowerShell 语法知识一对一地转移到 Bash 中,这实际上非常好。
Bruce Payette 的 Windows PowerShell in Action 第二版(Kindle 位置 3391)详细回答了这个问题。
让我们谈谈最有争议的设计决策 PowerShell 语言。
赢家是:为什么我们不使用传统符号进行比较,例如 >、>=、
答案是 > 和 和
我们看了一个 各种替代方案,例如模态解析,有时 > 意味着 大于,有时它意味着重定向。我们看了 运算符的替代字符序列,如:> 或 ->, 用于重定向或比较。我们进行了可用性测试并持有 焦点小组,最终确定了我们开始的内容。
重定向运算符是>和
【讨论】:
因为> 和< 在大多数shell 中都是流重定向运算符。好吧,除了 PowerShell 不支持流输入重定向。除此之外,在某些情况下解析/解释 > 以重定向标准输出和在其他情况下重定向 greater than 会更加困难。此外,通过使用-<operator_name> 方法,您可以拥有比直观符号更多的运算符,例如-contains、-notcontains、-is、-replace、-split、-match等。以man about_operators为起点,探索PowerShell支持的所有运算符。
【讨论】:
>会更困难?
< > != ==经常使用,值得努力支持它们.
运算符 = 已经是赋值运算符。为了不混淆比较和赋值运算符,他们选择了另一个运算符。在本例中为 -eq,因为它已在其他 (UNIX) 脚本语言中使用。
【讨论】: