シェルで外部ファイルを読み込む。サンプルシェルで解説。

Linux

今回は、シェルで外部ファイルを読み込む方法を紹介します。


シェルファイルは、非常に強力なスクリプトです。
使い方によっては、ちょっとした機能は実現することができます。


外部ファイルの読み込みパターン


外部ファイルを読み込むパターンとして、以下の2パターンについて説明します。


  • 外出し定義ファイルの読み込み
  • シェルからシェルを呼び出す

外出し定義ファイルの読み込み


シェルでちょっとした機能を実現する際に、さまざまなパラメータを外部ファイルに定義することが必要になる場合があります。
ファイル読み込み・書き込み系のシェルであればファイルパスを外部ファイルに定義したり、ですね。

そういった外部ファイル定義についてもシェルで可能です。


外部ファイル読み込みのサンプルシェル


サンプルシェルは以下になります。

#!/bin/sh
# 
# 外部ファイルの読み込み
# 

    echo "start."
    while read line
    do
        KEY=`eval echo $line | awk '{print $1}'`
        VAL=`eval echo $line | awk '{print $2}'`
        echo $KEY
        echo $VAL
    done < setting.config
    echo "end."

外部ファイルとなる「setting.config」は以下です。

line1    value1
line2    value2
line3    value3

実行結果は以下になります。

$ sh configLoad.sh
start.
line1
value1
line2
value2
line3
value3
end.

行データを繰り返し読み込む


行データを読み込む方法は以下になります。


while文で、自動的に最終行まで外部ファイルの読み込みをおこなっていきます。
読み込み対象ファイルをdone部分に記載することで、対象ファイルの読み込むをおこないます。


上記サンプルプログラムは、シェルファイルと同フォルダに、外部ファイルとなる「setting.config」が存在する状態のシェルファイルとなります。

    while read line
    do
        ・・・制御・・・
    done < 設定ファイルパス

lineに1行データが格納されるので、”・・・制御・・・”の部分にlineに対する処理を記載することになります。


awk(オーク)コマンドで列ごとに読み込み


awk(オーク)コマンドは、文字列を抽出するコマンドになります。
{print $N}で、N番目の列を抽出することができます。


上記のサンプルプログラムは、2列の行データなので、{print $2}までしかないですが、列をもっと増やしていきたい場合は、{print $3}といった具合に列の数を増やしていけば、対象の列データを読み込むことができます。


シェルからシェルを呼び出す


共通機能を定義したシェルを準備した場合、そのシェルを他のシェルから呼び出したい場合があります。

つまり、シェルからシェルを呼び出す、ということですね。


シェルからシェルを呼び出すサンプル


サンプルシェルは以下になります。

呼び出すシェルと呼び出されるシェルの2つになります。


呼び出す側のシェル

#!/bin/bash

`./sub.sh`
RET=$?
echo $RET

呼び出される側のシェル

#!/bin/sh
exit 10

シェルを呼び出す


シェルを呼び出す場合の記載は簡単です。

シェルのパスを「`」で囲めば呼び出すことができます。


`./sub.sh`

シェルから返り値を受け取る


シェルから返り値を受け取る場合は、呼び出される側は「$?」で取得できます。


RET=$?

呼び出される側は、「exit」を用いて返り値を返却できます。


exit 10



sakusaku

都内でSIerをやっています。 使用している技術は、Java、PHP、MySQL、PostgreSQL、Oracle、Apache、Tomcat、あたりです。 Pythonやってみたいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください