web-dev-qa-db-ja.com

配列要素をコマンドの標準入力に送信する方法は?

Stdinから改行で区切られたファイルパスのリストを受け取ることができるコマンドがあります。これらのファイルパスは配列に格納されています。配列要素をコマンドに送信するにはどうすればよいですか?

私は以下を使用しましたが、私はそれを効率的に行っていないという漠然とした感覚があります:

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

私はprintfを好みます:

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

IFSを使用して、文字を使用して配列要素を結合することもできます。

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

"${array[@]}""${array[*]}"の違いは、前者は個別の単語として配列要素に展開し、後者はIFSの最初の文字を使用して配列要素を結合することにより形成される単一の単語に展開することです。

4
muru