Что такое cmd / powershell эквивалент обратной галочки на bash? - PullRequest
64 голосов
/ 12 января 2009

Перенаправление вывода команды:

например:

echo "Foo `./print_5_As.rb`"

будет повторять "Foo AAAAA"

Ответы [ 3 ]

124 голосов
/ 12 января 2009

Синтаксис PowerShell основан на синтаксисе POSIX ksh (и что интересно не на любом из языков Microsoft как CMD.EXE, VBScript или Visual Basic для приложений), так много вещей работает почти так же, как в Bash. В в вашем случае подстановка команд выполняется с помощью

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

в PowerShell и Bash.

Bash все еще поддерживает древний путь (backticks), но PowerShell очистил синтаксис и удалил лишние конструкции, такие как две разные команды подстановки Синтаксисы. Это освобождает спину для другого использовать в PowerShell: в POSIX ksh обратная косая черта используется как экранирующий символ, но это было бы очень болезненным в PowerShell, потому что обратный слеш - это традиционный путь разделитель компонентов в Windows. Итак, PowerShell использует (теперь не используется) обратная связь для побега.

25 голосов
/ 12 января 2009

В 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

21 голосов
/ 12 января 2009

В Powershell вы используете $ () для вычисления подвыражений ...

Например:

PS C:\> "Foo $(./print_5_As.rb)"
Foo AAAAA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...