78

コマンド出力のリダイレクト:

例えば:

echo "Foo `./print_5_As.rb`"

「Foo AAAAA」とエコーします

4

3 に答える 3

150

PowerShell構文はPOSIXksh構文に基づいているため(興味深いことに、CMD.EXE、VBScript、Visual Basic for ApplicationsなどのMicrosoftの言語には基づいていません)、多くの機能がBashとほぼ同じように機能します。あなたの場合、コマンド置換はで行われます

echo "Foo $(./print_5_As.rb)"

PowerShellとBashの両方で。

Bashは引き続き古い方法(バッククォート)をサポートしていますが、PowerShellは構文をクリーンアップし、2つの異なるコマンド置換構文などの冗長な構造を削除しました。これにより、PowerShellでの別の 使用のためにバックティックが解放されます。POSIXkshでは、バックスラッシュがエスケープ文字として使用されますが、バックスラッシュはWindowsの従来のパスコンポーネント区切り文字であるため、PowerShellでは非常に苦痛になります。そのため、PowerShellは(現在は使用されていない)バックティックを使用してエスケープします。

于 2009-01-12T03:00:42.547 に答える
28

PowerShell では、 $( ) を使用して部分式を評価します...

例えば:

PS C:\> "Foo $(./print_5_As.rb)"
Foo AAAAA
于 2009-01-12T01:33:13.800 に答える
26

CMD.EXE には、直接同等のものはありません。しかし、FOR コマンドを使用して目的を達成することができます。

次のようにします。

FOR /F "usebackq" %x IN (`./print_5_As.rb`) DO @echo Foo %x

また

FOR /F %x IN ('"./print_5_As.rb"') DO @echo Foo %x

出力の外観や使用方法によっては、delimiter をデフォルト以外に設定する必要がある場合があります。詳細については、https://technet.microsoft.com/en-us/library/bb490909.aspxの FOR ドキュメントを参照してください。

于 2009-01-12T00:13:24.803 に答える