Practicalなシェルスクリプトの解説書 (α版)

[ Prev | Top | Next ]

はじめに

この文書ではシステム管理の観点からシェルスクリプトの書き方についてまとめています。 対象はbourne-shell系のksh(pdksh), bashです。 csh系はいくつかの理由からシステム管理に不向きと考えるため対象から外しています。

csh系をシステム管理に使わない理由については、 Cシェルを使わない理由 を参照してください。 csh系をシステム管理に不向きとする主な理由は、書式の自由度が高い反面、様々な書き方が可能でまぎらわしくなる事、機能的な利点がほとんどない事、挙動が予測できない場面があり制御が難しい事、などが挙げられます。

bourne-shell系は空白を切り分け文字として多用するため空白を含むファイル名などの取り扱いには一部注意が必要です。 しかし全般的に覚える事が少なく、条件分岐・ループなどの制御構文はシンプルでバッチ的なコマンド実行に向いています。

最近ではksh, bashの機能拡張が進み、慣れ以外にcshが好まれる理由はないと思います。 ぜひログインシェルとしてksh, bashを登録しましょう。

知識が増えればログインシェルとして便利に使えるcsh系、少ない知識を駆使して頑張るbourne-shell系といえるかもしれません。

この文書が対象とする範囲

この文書はシステム管理者の視点からまとめたシェルスクリプトの解説書を目指しています。 稼働確認は Ubuntu 8.04 LTS amd64版上でbashとpdkshを使って行なっています。

bashが標準で準備されていない環境を想定してpdkshでも稼働確認を行ない、bash固有の表記は避けました。 しかしbashが標準装備されていない(主に商用OSの)環境では、スクリプトの中で呼び出している外部コマンドの動きに違いがあるかもしれませんので注意が必要です。

またオフィスからサーバールームにあるサーバーにログインしている環境を想定しています。 WindowsであればTeraTermやPoderosa, MachintoshであればiTerm, Linuxならkterm, gnome-terminal, konsole等を使って作業をする環境です。

Remote Login from Office Room

この文書の構成

これまでの経験から例題と遭遇する問題点を挙げてシェルスクリプトの「べき・べからず」を紹介していこうと思います。

もちろん用途や状況によって必要とされる観点は異なるため、解決策も状況によって変化します。 ここで挙げたものを一つの例として捉えて、自身が遭遇した課題に対応する際の参考になれば幸いです。


Created: 2009-12-12, Last modified: 2010-03-19

2009,2010 © Yasuhiro ABE <yasu@yasundial.org>

Valid XHTML + RDFa RDFa it (RDF/XML)!

正当なCSSです!

Creative Commons License www.yasundial.org by Yasuhiro ABE is licensed under a Creative Commons Attribution 2.1 Japan License. Permissions beyond the scope of this license may be available at http://www.yasundial.org/info/license.html.