シェル・スクリプトはプログラムの一種ですから,作成にはプログラミングに関する知識が必要です。そこで最初にプログラミングの基本的な考え方をおさらいしておきましょう。

構造化プログラミング

 シェル・スクリプトやC言語は,手続き指向型のプログラミング言語です。一方,C++やJavaなどはオブジェクト指向型のプログラミング言語です。手続き指向の「手続き」とは,処理をする内容*5の形態を指します。処理内容の誤りがバグになります。

 プログラムの誤りには,文法の誤りと論理の誤りがあり,前者はインタプリタ(あるいはコンパイラ)が指摘してくれますが,後者はプログラム作成者やプログラム試験担当者などの人間自身が誤りそのもの,あるいは誤りの原因を見つけ出さなければなりません*6

 プログラムを作成するときには,いかにバグの少ないのプログラムを作成するかが大切です。これを実現するための基本概念が「構造化プログラミング」です*7。構造化プログラミングの考え方の基本は(プログラムを構成する各機能の)モジュール化にあります。言い換えれば,個別の部品(パーツ)を組み合わせて完成品を作ることが,構造化プログラミングです。

連接・選択・反復の基本構造

 構造化プログラミングの基本的な部品(基本構造)は,「連接」,「選択」,「反復」の3つです。この3部品があれば,あらゆる種類のプログラムを作成できます*8

 「連接」は連続とも言います。プログラムを逐次(連続)的に実行することです。「選択」は,指定した条件が成立したか否かで実行する内容が異なります。「反復」は繰り返しとも言います。指定した条件が成立している間は,特定の処理を反復します。


図1 PADの基本部品
[画像のクリックで拡大表示]

 まずは,プログラムにこだわらず,人間の行動に基づいた具体例を示すことにしましょう。また,処理手順を分かりやすくするために,図式表現を行います。ここでは,フロー・チャート(流れ図)ではなく,PAD(問題分析図)を利用します(図1[拡大表示])。

(1)朝起きて,顔を洗い,朝食を取る

 最初の行動は「朝起きる」ことであり,次に「顔を洗う」,そして最後に「朝食を取る」となります。「朝起きる」前に「顔を洗う」ことや「朝食を取る」ことはできません。つまり,行動の順序がきちんと決まっており,その順番に従って行動しなければなりません。これが「連接」です。

(2)昼食で,空腹ならざるそば2枚,空腹でなければざるそば1枚を注文する

 「空腹」が選択の条件で,この条件が成立する場合には「ざるそば2枚」を注文しますが,条件が成立しない場合は「ざるそば1枚」を注文します。

(3)そば屋の席が空くまでは並んで待つ

 「そば屋の席が空くまで」が反復の条件です。この条件が成立している間は「並んで待つ」処理を行います。そば屋に空席があれば,並んで待つ必要はありませんから,反復処理は実行されません。

「再入門 体で覚えるLinuxの基本」の目次ページはこちらから