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行として認識されない場合があります。
このような場合は、以下の記事を参考にしてみて下さい。
リンク
コメント