Tenho um comando legado foo
que aceita arbitrariamente muitos parâmetros de entrada (com nomes idênticos), cada um prefixado por --input
. A partir de cmd.exe
, posso executar:
C:\> foo --input "first" --input "second" --input "third" file.dat
e três valores de entrada são usados para processar file.dat
.
Estou tentando chamar foo
um script do Powershell no qual posso calcular uma matriz que tem valores/tipos que podem ser equivalentes a esses valores constantes.
$my_args = @(
"first",
"second",
"third"
)
Quero poder chamar foo para que os argumentos --include
<value>
sejam repetidos para cada item em $my_args
. Eu poderia usar:
foo --input $my_args[0] --input $my_args[1] --input $my_args[2] filename.dat
Mas isso não funcionaria se $my_args
não contivesse exatamente 3 itens. Qual seria uma expressão do PowerShell interessante para fazer isso?
Então, tecnicamente, você poderia fazer um loop, adicionando o
--input
parâmetro a cada item em$my_args
, assim:E então você pode anexar esse último argumento
filename.dat
ao seu array de argumentos:Isso também funcionaria para fazer tudo de uma vez:
E então você pode espalhá- los assim:
Outra maneira de fazer isso, com base no seu próprio comentário ;) que também deve funcionar, mas talvez seja menos legível, pode ser: