Mik*_*liy 28 syntax powershell
构造-ne,-eq并且-gt看起来至少是奇怪的.
if ($true -eq $true){}
Run Code Online (Sandbox Code Playgroud)
但不是
if ($true = $true){}
Run Code Online (Sandbox Code Playgroud)
解释是什么?
And*_*ndi 36
基本上答案是Unix是如何永远完成它的.果然,如果你编写了一些你将要使用的Bash脚本,那么将PowerShell语法知识一对一地转移到Bash真的很不错.
它在Bruce Payette的Windows PowerShell in Action,第二版(Kindle Location 3391)中得到了详细的回答.
让我们来谈谈PowerShell语言中最具争议的设计决策.
获胜者是:为什么我们不使用常规符号进行比较,如>,> =,<,<=,==和!=?
答案是>和<字符用于输出重定向.因为PowerShell是一个shell,并且在过去30年中所有shell语言都使用了>和<for I/O重定向,所以人们期望PowerShell应该这样做.在PowerShell的第一次公开测试期间,该主题产生了持续数月的讨论.
我们研究了各种替代方案,例如模态解析,其中有时>意味着大于,有时意味着重定向.我们查看了运算符的替代字符序列,例如:>或 - >,用于重定向或比较.我们进行了可用性测试,并成立了焦点小组,最终确定了我们的开始.
重定向运算符是>和<,比较运算符取自Unix test(1)命令.我们希望,因为这些运营商拥有30年的血统,所以它们足以适合在PowerShell中使用.(我们也期望人们会继续抱怨这个决定,但希望不会再持续30年.)
因为>和<是大多数shell中的流重定向运算符.好吧,除了PowerShell不支持流输入重定向.除此之外,>在某些情况下解析/解释是重定向stdout和在其他情况下更难greater than.此外,通过使用该-<operator_name>方法,您可以拥有比直观符号更多的运算符,例如-contains,-notcontains,-is,-replace,-split,-match等.man about_operators作为探索器的起点,执行PowerShell支持的所有运算符.
| 归档时间: |
|
| 查看次数: |
11777 次 |
| 最近记录: |