Что означает эквивалент CMD/PowerShell для back back на bash?

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

например:

echo "Foo `./print_5_As.rb`"

будет эхо "Foo AAAAA"

Ответы

Ответ 1

Синтаксис 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 использует (теперь не используется), чтобы ускользнуть.

Ответ 2

В 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

Ответ 3

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

Например:

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