2012-04-23 49 views

回答

34

基本上答案是,它是Unix的是如何永遠做到了。果然,如果您編寫一些Bash腳本,那麼您將使用這些腳本,並且將PowerShell語法知識一對一地傳輸給Bash實際上很不錯。

它在Bruce Payette的Windows PowerShell in Action第二版(Kindle Location 3391)中得到了詳細解答。

讓我們來談談 PowerShell語言中最具爭議的設計決策。

而獲勝者是:爲什麼heck沒有使用常規符號進行比較,比如>,> =,<,<,< =,==和!=?

答案是>和<字符用於輸出重定向。由於 PowerShell是一個外殼,並在過去30年 所有外殼語言都使用>和<的I/O重定向,人們預期的PowerShell 也應該這樣做。在PowerShell的第一次公開測試中,這個 主題引發了幾個月的討論。

我們查看了 各種替代方案,例如模態解析,其中有時>表示 大於 - 有時表示重定向。我們查看了 運營商的替代字符序列,例如:>或 - >, 用於重定向或比較。我們進行了可用性測試,並召集了焦點小組,最終決定了我們開始的工作。

重定向運算符是>和<,比較運算符是 取自Unix測試(1)命令。我們預計,由於這些 運營商有30年的血統,他們是充分,適當的,在PowerShell中 使用。 (我們也希望人們會繼續抱怨這個決定,儘管希望不會超過30年。)

6

因爲><在大多數殼流重定向操作符。那麼,除了PowerShell不支持流輸入重定向。除此之外,在某些情況下解析/解釋>將更加難以重定向標準輸出,並且在其他情況下可能會更難greater than。另外,通過使用-<operator_name>方法,您可以擁有比直覺符號更多的操作符,例如-contains,-notcontains,-is,-replace,-split,-match等。執行man about_operators作爲探索PowerShell支持的所有運算符的起點。

+1

在什麼情況下解析'>'會更困難? – Restuta 2012-04-24 00:11:53

+0

if表達式的範圍非常有限。我甚至不能考慮如何在那裏重定向。 – 2012-04-24 00:12:55

+0

我不認爲有更多的操作員在這裏是一個有效的論點,我認爲組合的方法會更好地工作,下面的運營商'< >!= =='經常使用,它是值得的努力來支持他們。 – Restuta 2012-04-24 00:19:24

2

operator =已經是賦值運算符。爲了不混淆他們爲另一個運營商選擇的比較和分配運營商。在這種情況下用於-eq,因爲這已在其他(UNIX)腳本語言中使用。

+0

最後有人使用'='而不是'=='來調用OP:P – 2017-12-04 21:48:21

相關問題