我有一个命令可以从标准输入接收文件路径列表,换行符分隔。我将这些文件路径存储在一个数组中。我应该如何将数组元素发送到命令?
我使用了以下方法,但有一种模糊的感觉,我没有有效地做到这一点:
files=("/first/file" "/second/file" "/some/directory" "/file/with spaces")
for i in "${places[@]}" ; do echo "$i" ; done | command ...
我有一个命令可以从标准输入接收文件路径列表,换行符分隔。我将这些文件路径存储在一个数组中。我应该如何将数组元素发送到命令?
我使用了以下方法,但有一种模糊的感觉,我没有有效地做到这一点:
files=("/first/file" "/second/file" "/some/directory" "/file/with spaces")
for i in "${places[@]}" ; do echo "$i" ; done | command ...
我更喜欢
printf
:您还可以使用
IFS
字符来连接数组元素:"${array[@]}"
和之间的区别在于"${array[*]}"
前者将数组元素扩展为单独的单词,后者扩展为通过使用 的第一个字符连接数组元素形成的单个单词IFS
。