-ne
、、-eq
という構造は-gt
少なくとも奇妙に見えます。
if ($true -eq $true){}
だがしかし
if ($true = $true){}
説明は何ですか?
ベストアンサー1
基本的に、答えは、Unix がずっとそうしてきた方法だということです。確かに、Bash スクリプトをいくつか書く場合は、それを使用することになりますし、PowerShell 構文の知識をそのまま Bash に移行できるのは、実に便利です。
ブルース・ペイエットのWindows PowerShell の活用、第 2 版 (Kindle の場所 3391)。
PowerShell 言語で最も議論の多い設計上の決定についてお話ししましょう。
そして勝者はこうです。なぜ私たちは比較に >、>=、<、<=、==、!= などの従来の記号を使用しなかったのでしょうか?
答えは、> と < 文字は出力のリダイレクトに使用されるということです。PowerShell はシェルであり、過去 30 年間のすべてのシェル言語は I/O リダイレクトに > と < を使用してきたため、PowerShell でも同様に行われるはずだと人々は予想しました。PowerShell の最初のパブリック ベータ版では、このトピックについて数か月にわたって議論が交わされました。
私たちは、モーダル解析など、さまざまな代替案を検討しました。モーダル解析では、> は、時にはより大きいを意味し、時にはリダイレクトを意味します。:> や -> などの演算子については、リダイレクトまたは比較のいずれかの代替文字シーケンスを検討しました。私たちは、ユーザビリティ テストを実施し、フォーカス グループを開催し、最終的に、当初の方針に落ち着きました。
リダイレクト演算子は > と < で、比較演算子は Unix の test(1) コマンドから取得されます。これらの演算子は 30 年の歴史があるため、PowerShell で使用するのに十分かつ適切であると考えられます。(この決定について人々が不満を言い続けることも予想されますが、願わくばあと 30 年はそうならないことを願います。)