web-dev-qa-db-ja.com

bashのバックティックに相当するcmd / powershellとは何ですか?

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

例えば:

echo "Foo `./print_5_As.rb`"

「Foo AAAAA」をエコーし​​ます

65
ramblinpeck

PowerShell構文はPOSIX ksh構文に基づいています(そして興味深いことに、CMD.EXE、VBScript、またはVisual Basic for ApplicationsなどのMicrosoftの言語のいずれでもnot)。そのため、多くの機能はBashとほとんど同じです。あなたの場合、コマンド置換は

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

powerShellとBashの両方で。

Bashは依然として古い方法(バッククォート)をサポートしていますが、PowerShellは構文をクリーンアップし、2つの異なるコマンド置換構文などの冗長構成を削除しました。これにより、PowerShellでdifferentを使用するためにバックティックが解放されます。POSIXkshではエスケープ文字としてバックスラッシュが使用されますが、PowerShellではveryとなるため、バックスラッシュがWindowsの従来のパスコンポーネントセパレータ。そのため、PowerShellはエスケープに(現在は未使用の)バックティックを使用します。

125
Jörg W Mittag

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

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

25
matli

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

例えば:

PS C:\> "Foo $(./print_5_As.rb)"
Foo AAAAA
23
Pete Richardson