【bashシェル】コマンドの実行結果を配列に格納する


この記事はプロモーションを含みます。

bashシェル

bashシェルスクリプトで、コマンドの実行結果を配列に格納する方法を解説します。

はじめに・構文

「ls」や「cat」コマンドの実行結果を配列に格納し、その配列を元にループしつつ、1行ずつ取り出して処理を行う方法を説明します。

コマンドの実行結果を配列に格納する構文は以下の通りです。

変数名=(`実行するコマンド`)

サンプルスクリプト

ここでは、「cat」コマンドの実行結果を配列に格納するサンプルを記載しています。

以下は、catコマンドで表示するファイルです。

ABCDE
FGHIJ
KLMNO
PQRST
UVWXY

サンプルのスクリプトです。

#!/bin/bash

# コマンドを実行し、結果を配列に格納
result=(`cat /home/data/file1.log`)

# ループ回数のカウンタ
count=0

# 読み込んだファイルを1行ずつ処理
for line in "${result[@]}"
do
	# インクリメント
	count=$((++count))

	# 値の表示
	echo "${count}行目:${line}"
done

サンプルの実行結果です。
catコマンドで表示したファイルが1行ずつ読み込まれて処理されていることが分かります。

1行目:ABCDE
2行目:FGHIJ
3行目:KLMNO
4行目:PQRST
5行目:UVWXY

実行結果にスペースやタブを含む場合

コマンドの実行結果に「半角スペース」や「タブ文字」を含む場合、正しく1行として認識されない場合があります。
このような場合は、以下の記事を参考にしてみて下さい。

コメント

タイトルとURLをコピーしました