105 votes

Équivalent lot de backticks Bash

Lorsque vous travaillez avec Bash, je peux mettre la sortie d’une commande dans une autre commande comme suit :

serait la même chose que

(Évidemment, c’est juste un exemple de non pratique.)

Je me demande si vous pouvez faire la même chose dans le lot.

110voto

Michael Burr Points 181287

Vous pouvez obtenir une fonctionnalité similaire à l'aide de cmd.exe les scripts avec l' for /f commande:

for /f "usebackq tokens=*" %%a in (`echo Test`) do my_command %%a

Ouais, c'est un peu la non-évidence (pour dire le moins), mais c'est ce qui est là.

Voir for /? pour les détails sanglants.

Note: j'ai pensé que utiliser "echo" à l'intérieur de la backticks dans un "for /f" de la commande devra être effectué à l'aide de "cmd.exe /c echo Test" depuis echo est une commande interne à l' cmd.exe, mais il fonctionne de manière plus naturelle. Windows scripts batch toujours une surprise pour moi en quelque sorte (mais pas dans le bon sens).

63voto

zvrba Points 14028

Vous pouvez le faire en redirigeant d'abord la sortie vers un fichier. Par exemple:

 echo zz > bla.txt
set /p VV=<bla.txt
echo %VV%
 

34voto

Weeble Points 6248

Lisez la documentation de la commande "pour": for /?

Malheureusement, je ne suis pas connecté à Windows pour le vérifier moi-même, mais je pense que quelque chose comme ceci peut correspondre à ce que vous voulez:

 for /F %i in ('echo Test') do my_command %i
 

3voto

mtalexan Points 112

Peut-être que je suis le vissage jusqu'à la syntaxe de la norme for /f méthode, mais quand je mets une très complexes de commande impliquant && et | dans le backticks dans la limite de l' for /f, il provoque des problèmes. Une légère modification de l'habitude est possible de gérer un arbitraire de la complexité de la commande:

SET VV=some_command -many -arguments && another_command -requiring -the-other -command | handling_of_output | more_handling
for /f "usebackq tokens=*" %%a in (`%VV%`) do mycommand %%a

En mettant votre pleine et complexe de commande dans une variable d'abord, puis de mettre une référence à la variable dans la limite plutôt que de mettre le complexe de commande directement dans la limite de la boucle for, vous pouvez éviter la syntaxe des problèmes d'interprétation. Actuellement, si je copie la commande exacte, j'ai mis à l' VV variable dans l'exemple ci-dessus où il est utilisé, %VV%, il provoque les erreurs de syntaxe.

2voto

davr Points 9556

Vous pouvez toujours exécuter Bash dans Windows. Je le fais tout le temps avec MSYS (beaucoup plus efficace que Cygwin ).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X