【課 題】
 ホーム・ディレクトリに設定ファイル(~/.sample)がある場合は設定ファイルを読み出し,存在しない場合は/usr/local/share/sampleファイルの設定を読み出すスクリプトを作成せよ。なお,設定ファイルには任意の変数に代入するスクリプトが記述されているものとする。

【解 説】
 シェル・スクリプトでは各ユーザーごとの設定をドット・ファイルとして保存しておくことがある。シェル・スクリプトは,設定ファイルを見つけると,そのファイルに記述されている設定を読み出す。設定ファイルが存在しない場合は,どのユーザーも読み出せるディレクトリ(/usr/local/share/などの共有ディレクトリ)などにある初期設定ファイルを読み出す手法もよく利用される。

 今回のスクリプトは,「ホーム・ディレクトリに所定のファイルがある場合は実行し,ない場合は初期設定のファイルを読み出す」というのが主な目的になる。

 設定ファイルの内容を読み込むには設定ファイルの前に「.」を付けて実行する。例えば,ホーム・ディレクトリ上にある「.sample」ファイルを読み込む場合は,

. ${HOME}/.sample

とする。${HOME}はユーザーのホーム・ディレクトリが格納されている変数だ。

 設定ファイルにはシェル・スクリプトで用いられる変数の代入を記入しておけばよい。例えば,「WORK_DIR」変数の設定値を「${HOME}/work」にする場合は,.sampleファイルに次のように記述しておく

WORK_DIR="${HOME}/work"

 次にプログラムの流れを考える。今回はファイルが存在するか否かを確認し,その結果に応じて条件分岐して読み出すファイルを決める。よって,図1のようなフローチャートになる。

図1●フローチャート
図1●フローチャート
ホーム・ディレクトリにファイルが存在する場合は,目的のファイルを読み込む。また,存在しない場合は,初期設定ファイルを読み込む。

 条件分岐にはifを利用する。条件の判別には,testまたは[...]コマンドを用いる。今回の判別式はファイルが存在するか否かを確かめるので「-f」を利用する。よって判別式は,以下のようになる。

[ -f ~/.sample ]


【解答例と練習問題は次ページ】