Quel est l'équivalent cmd/powershell de back tick on bash?

redirection de la sortie de commande:

par exemple:

echo "Foo `./print_5_As.rb`"

would echo "Foo AAAAA"

58
demandé sur Cœur 2009-01-12 02:40:23

3 réponses

la syntaxe PowerShell est basée sur la syntaxe POSIX ksh (et de manière intéressante pas sur l'une des langues de Microsoft comme le CMD.EXE, VBScript ou Visual Basic pour Applications), tant de choses fonctionnent à peu près de la même façon Qu'à Bash. Dans votre cas, la substitution de commande se fait avec

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

dans PowerShell et Bash.

Bash supporte toujours l'ancienne voie( backticks), mais PowerShell a nettoyé la syntaxe et retiré redondant des constructions telles que la substitution de deux commandes différentes syntaxe. Cela libère le backtick pour un différent utilisation en PowerShell: en POSIX ksh, le backslash est utilisé comme caractère escape, mais qui serait très douloureux dans PowerShell parce que le backslash est le chemin traditionnel séparateur de composants dans les fenêtres. Donc, PowerShell utilise le (inutilisée) backtick pour s'échapper.

115
répondu Jörg W Mittag 2014-02-15 09:03:10

dans CMD.EXE il n'y a pas d'équivalent direct. Mais vous pouvez utiliser la commande FOR pour obtenir ce que vous voulez.

Faire quelque chose comme ce qui suit:

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

ou

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

vous pourriez avoir besoin de définir le délimiteur à autre chose que la valeur par défaut, en fonction de l'apparence de la sortie et de la façon dont vous voulez l'utiliser. Pour plus de détails, veuillez consulter le document https://technet.microsoft.com/en-us/library/bb490909.aspx

24
répondu matli 2015-10-29 23:18:56

dans Powershell, vous utilisez $( ) pour évaluer les sous-expressions...

par exemple:

PS C:\> "Foo $(./print_5_As.rb)"
Foo AAAAA
19
répondu Pete Richardson 2009-01-12 01:33:13