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=$'\n'; echo "${array[*]}") | ...
"${array[@]}"
と"${array[*]}"
の違いは、前者は個別の単語として配列要素に展開し、後者はIFS
の最初の文字を使用して配列要素を結合することにより形成される単一の単語に展開することです。