如何将数组元素发送到命令的标准输入?

如何将数组元素发送到命令的标准输入?

我有一个命令,可以从 stdin 接收文件路径列表(以换行符分隔)。我将这些文件路径存储在数组中。我应该如何将数组元素发送给命令?

我曾使用过以下方法,但隐约感觉我做得不够有效:

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

答案1

我更喜欢printf

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

您还可以使用IFS字符连接数组元素:

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

"${array[@]}"和 的区别在于"${array[*]}",前者将数组元素扩展为单独的单词,而后者则扩展为使用 的第一个字符连接数组元素形成的单个单词IFS

相关内容