はじめる人のびぎねっと。

プライバシーポリシー

読み物

Linux基礎

シェルスクリプトとは?

シェルスクリプトは,複数の処理をまとめて行なうOSのシェルが直接解釈・処理できるスクリプトのことです。スクリプトとは,機械語への変換作業を省略して,簡単に実行できるようにした簡易のプログラムのことです。

シェルスクリプトは,シェルごとに独自の文法が採用されています。一般的な文法は,1行が1つのコマンドとして扱われます。特に,LinuxやUNIX系OSのシェルは複雑な繰り返し処理や条件分岐などに対応しています。そのため,シェルスクリプトだけで,複雑な処理を自動化することができます。

例として,シェルスクリプトを実際に見てみたい場合は,”/etc/init.d”の中を確認してみてください。各種サービスの起動・停止用のシェルスクリプトを確認するとこができます。

※シェルについては,Linuxきその”シェルとは?”を参考にしてください。

BシェルとBash

現在利用できる最も古いシェルが「Bシェル(Bourne shell)」です。AT&Tのベル研究所で開発され,開発者の1人であるSteven Bourne氏の名前にちなんで,この名が付けられました。Bシェルは,ほとんど全てのOSで利用できるので標準的なシェルといわれています。そのため,シェルスクリプトの作成には,Bシェルがよく用いられます。

Linuxでは,Bシェルの代わりに,Bシェルを強化した「Bash(Bourne again shell)」と呼ばれるシェルが使われています。Bashは,Bシェルとの互換性を維持しながら,拡張されています。例えば,変数の照合演算や数値演算など,プログラム言語としても便利な機能が多く追加されています。その他,ユーザーインターフェイスも機能強化され,ヒストリー機能やエイリアスなども追加されました。これらの機能により,複雑なシェルスクリプトを書けるようになりました。

シェルスクリプトを書く

シェルスクリプトの例として,下記に条件分岐のif文を使った簡単なプログラムを示します。

このシェルスクリプトは,引数として指定されたファイルが存在すると,ファイルが見つかった意のメッセージを返し,見つからない場合はエラーメッセージを返します。

●シェルスクリプトの例(条件分岐を用いた)

$cat filecheck←プログラム名は“filecheck”
#!/bin/bash←bashを使ってプログラムを実行
if test -f $1; then←$1(引数)と同じものがあった場合
echo " $1 is found. "←見つかったメッセージを出力
else←同じものがなかった場合
echo " $1 is not found!! "←エラーメッセージを出力
fi←if文の終了を示す

●シェルスクリプトの実行

$chmod u+x filecheck←実行権限を与える
$ ls -lF←ディレクトリの中を確認
-rw-rw-r-- 1 root root aaa
-rw-rw-r-- 1 root root bbb
-rwxrw-r-- 1 root root filecheck*

Fオプションで実行可能なもののファイル名の後に*が付く

$./filecheck aaa←aaaファイルがディレクトリ内にあるか調べる
aaa is found.←aaaが存在する
$./filecheck ccc←cccがあるか調べる
ccc is not found!!←cccは存在しないのでエラーメッセージが出力される

例にあげたif文以外にも,いろいろな条件分岐やコマンドを使って便利なプログラムを作ることができます。

このページのTOPへ