Как отправить элементы массива в stdin команды?

У меня есть команда, которая может получить список путей к файлам, разделенная новая строка, от stdin. Мне сохранили эти пути к файлам в массиве. Как я должен отправить элементы массива в команду?

Я использовал следующее, но имею неопределенное чувство, что я не делаю его эффективно:

files=("/first/file" "/second/file" "/some/directory" "/file/with spaces")
for i in "${places[@]}" ; do echo "$i" ; done | command ...
3
задан 3 February 2017 в 15:43

1 ответ

Я предпочитаю printf:

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

можно также использовать IFS для присоединения к элементам массива с помощью символа:

(IFS= 

различие между "${array[@]}" и "${array[*]}" - то, что первый расширяется до элементов массива как отдельные слова, последний расширяется до отдельного слова, сформированного путем присоединения к элементам массива с помощью первого символа IFS.

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

различие между "${array[@]}" и "${array[*]}" - то, что первый расширяется до элементов массива как отдельные слова, последний расширяется до отдельного слова, сформированного путем присоединения к элементам массива с помощью первого символа IFS.

5
ответ дан 1 December 2019 в 15:34

Другие вопросы по тегам:

Похожие вопросы: