bash配列でstdinを読む

bash配列でstdinを読む

私は次のことを達成したいと思います:

list=()
while read i; do
  list+=("$i")
done <<<"$input"

そして

IFS=$'\n' read -r -a list <<<"$input"

私は何が間違っていましたか?

input=`/bin/ls /`

IFS=$'\n' read -r -a list <<<"$input"

for i in "${list[@]}"; do
  echo "$i"
done

リストは印刷する必要があります/が、最初の項目だけがインポートされます。

ベストアンサー1

使用する必要がありますマップファイル(またはその同義語配列を読む、)で紹介bash 4.0

mapfile -t list <<<"$input"

一つ読む呼び出しは標準入力全体ではなく、1行でのみ機能します。

read -a list標準の最初の行の内容で配列を埋めますlist。あなたの場合、bin「リスト」配列の唯一の要素を取得します。

おすすめ記事