echo list / array para xargs [duplicado]

1

Digamos que eu tenha uma lista / matriz:

list=(a b c)

como posso ecoar cada elemento para xargs? Algo como:

for v in list; do echo v; done; | xargs

existe uma maneira menos detalhada?

    
por Alexander Mills 26.09.2018 / 04:19

2 respostas

4

printf '%s\n' "${list[@]}" | xargs

Isso imprimiria cada elemento de list em sua própria linha e essa lista delimitada por nova linha seria passada para xargs .

"${list[@]}" expandiria para os elementos individualmente citados em dobro de list . printf reutilizará sua string de formatação se receber mais argumentos do que os espaços reservados na string de formatação.

    
por 26.09.2018 / 07:48
1

A menos que seja uma lista particularmente longa, você pode dispensar xargs inteiramente

list=(a b c)

# With xargs
printf "%s\n" "${list[@]}" | xargs foo    # Results in « foo a b c »

# Without xargs
foo "${list[@]}"                          # Also results in « foo a b c »

Naturalmente, a aplicabilidade disso à sua situação depende dos sinalizadores adicionais (se houver) que você deseja passar para o comando xargs real.

    
por 26.09.2018 / 11:46