我有一个命令,可以从 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
。