PowerShell ではなぜ「=」ではなく「-eq」なのでしょうか? 質問する

PowerShell ではなぜ「=」ではなく「-eq」なのでしょうか? 質問する

-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 年はそうならないことを願います。)

おすすめ記事