bash 3でサブシェル出力を配列に移動する

bash 3でサブシェル出力を配列に移動する

bash 3でサブシェルコマンドの結果を配列に取得する方法は?

私はこれを達成するためにbash 4で次のようにmapfileを使用してきました。

mapfile -t myarray < <(someScript.sh)

ただし、私が使用している一部のサーバーにはbash 3のみがインストールされており、bash 4にアップグレードすることはできません。

Bash 4で同等のコマンドは何ですか?

配列の行を繰り返し、各行の内容に対して操作を実行できる必要があります。

ベストアンサー1

の変種寄稿者: @NarūnasK

readarray() {
  local i=0
  unset -v "$1"
  while IFS= read -r "$1[i++]"; do :; done
  eval "[[ \${$1[--i]} ]]" || unset "$1[i]"
}

例:

$ readarray a < <(seq 10)
$ printf '%s\n' "${a[2]}"
3

おすすめ記事