0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Bash】テキストデータやコマンドの標準出力を配列に格納する。

Last updated at Posted at 2025-06-12

改行ごとに配列に格納する場合

array.txt
aaa
bbb
ccc

array.sh
#!/bin/bash

function arrayEcho() {
    echo "aaa"
    echo "bbb"
    echo "ccc"
}

readarray -t array < array.txt
echo "${array[@]}"

readarray -t array < <(arrayEcho)
echo "${array[@]}"

readarray(mapfileの別名)は標準入力を改行コードを含んだ文字列に分割し、配列に格納するコマンドである。
-tオプションで改行コードを削除するので普通の使い方では入れる。
<(arrayEcho)でコマンドの標準出力を仮想デバイスに変換してファイルとして扱ってくれるものである。

スペース区切りの1行テキストや出力を配列に格納する場合

array2.txt
aaa bbb ccc

array2.sh
#!/bin/bash

function arrayEcho() {
    echo aaa bbb ccc
}

read -ra array < array2.txt
echo "${array[@]}"

read -ra array < <(arrayEcho)
echo "${array[@]}"

readは標準入力から変数に代入するコマンドです。デフォルトでは改行まで格納します。
-aオプションで標準入力を区切り文字IFSで分割して配列として変数に格納します。
-rオプションでエスケープ文字を無効にします。
readarrayコマンドでもオプションを加えればできなくはないですが、スペースの区切り文字は1文字でないと難しいなどあつかいに注意が必要なのでreadにしました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?