У меня есть команда, которая может получить список путей к файлам, разделенная новая строка, от stdin. Мне сохранили эти пути к файлам в массиве. Как я должен отправить элементы массива в команду?
Я использовал следующее, но имею неопределенное чувство, что я не делаю его эффективно:
files=("/first/file" "/second/file" "/some/directory" "/file/with spaces")
for i in "${places[@]}" ; do echo "$i" ; done | command ...
Я предпочитаю printf
:
printf "%s\n" "${array[@]}" | ...
можно также использовать IFS
для присоединения к элементам массива с помощью символа:
(IFS= различие между "${array[@]}"
и "${array[*]}"
- то, что первый расширяется до элементов массива как отдельные слова, последний расширяется до отдельного слова, сформированного путем присоединения к элементам массива с помощью первого символа IFS
.
\n'; echo "${array[*]}") | ...
различие между "${array[@]}"
и "${array[*]}"
- то, что первый расширяется до элементов массива как отдельные слова, последний расширяется до отдельного слова, сформированного путем присоединения к элементам массива с помощью первого символа IFS
.