2012-04-23 20 views

答えて

34

答えは、基本的には、Unixがそれを永久に行った方法です。もちろん、Bashスクリプトを書いて、それを使うならば、PowerShellの構文知識をBashに1つずつ渡すのは良いことです。

詳細については、Bruce PayetteのWindows PowerShellのアクション、Second Edition(Kindle Location 3391)で詳しく説明されています。

PowerShell言語で最も重大な意思決定についてお話しましょう。

そして、勝者は、なぜ、>、> =、<、< =、==、!=などの比較のために従来の記号を使用しなかったのですか?

出力のリダイレクトに>と<文字が使用されています。 のでPowerShellはシェルであり、過去30年間 内のすべてのシェル言語が使用している>とI/Oリダイレクションのため<、人々はPowerShellの が同じことを行う必要があることを期待しました。 PowerShellの最初のパブリックベータ中に、この トピックが数か月にわたり議論を起こしました。

モダールパルシングのようなさまざまな選択肢を見てみましょう。時には>は を意味し、時にはリダイレクトを意味しました。 >または>、 のような演算子の代替文字シーケンスを で見ました。私たちはユーザビリティテストを行い、 フォーカスグループを開催し、最終的に私たちが始めたものに着手しました。

リダイレクション演算子は>と<であり、比較演算子はUnixのtest(1)コマンドから取得した です。これらの オペレーターは30年の血統を持っているため、PowerShellで を使用するのに適切であり、適切であると考えています。 (我々はまた、人々がうまくいけばない30年以上のためにも、この決定に不満 に継続することを期待しています。)

6

><はほとんどのシェルでストリームリダイレクション演算子です。ただし、PowerShellではストリーム入力のリダイレクトはサポートされていません。それ以外の場合は、>を解析して解釈してstdoutをリダイレクトすることや、その他の場合にはgreater thanを解釈することは難しくなります。さらに、-<operator_name>アプローチを使用することにより、直感的な記号よりも多くの演算子を持つことができます。 -contains、-notcontains、-is、-replace、-split、-matchなどPowerShellでサポートされているすべての演算子をエクスプローラの出発点としてman about_operatorsを実行します。

+1

どのような場合に '>'を解析するのがより難しいでしょうか? – Restuta

+0

if式の範囲は非常に限定されています。そして、私はそこにリダイレクトする方法を考えることさえできません。 –

+0

私はもっと多くの演算子を持つことはここでは有効な議論ではないと思う、私は複合アプローチがうまくいくと思う、以下の演算子 '< >!= =='は非常に頻繁に使われ、それらをサポートする価値がある。 – Restuta

2

演算子を=既に代入演算子あります。比較演算子と代入演算子を混同しないように、別の演算子で選択します。この場合、-eqは他の(UNIX)スクリプト言語ですでに使用されているためです。

+0

最後に、誰かが '='ではなく '='を使用してOPを呼び出す:P –

関連する問題