web-dev-qa-db-fra.com

Comment envoyer des éléments de tableau à stdin d'une commande?

J'ai une commande qui peut recevoir une liste de chemins de fichiers, séparés par des sauts de ligne, de stdin. J'ai ces chemins de fichier stockés dans un tableau. Comment dois-je envoyer les éléments du tableau à la commande?

J'ai utilisé ce qui suit, mais j'ai le vague sentiment que je ne le fais pas efficacement:

files=("/first/file" "/second/file" "/some/directory" "/file/with spaces")
for i in "${places[@]}" ; do echo "$i" ; done | command ...
2
Arronical

Je préfère printf:

printf "%s\n" "${array[@]}" | ...

Vous pouvez également utiliser IFS pour joindre des éléments de tableau à l'aide d'un caractère:

(IFS=$'\n'; echo "${array[*]}") | ...

La différence entre "${array[@]}" et "${array[*]}" est que le premier se développe en éléments de tableau en tant que mots séparés, le second se développe en un seul mot formé en joignant les éléments de tableau en utilisant le premier caractère de IFS.

4
muru