Shell Script [Base]

Date : 2005-11-23
Author : Defolos

CONTENTS

(1.) Shell Scriptの基礎
- シェルスクリプトの作成
- シェルスクリプトの実行
- コメント、改行
(2.) 変数と引数
- 変数
- 引数
(3.) 代入

Shell Scriptの基礎

 シェル・スクリプト(ShellScript)とは、連続したUNIXのコマンドを記載したファイルのことです。
 本来ならいくつものコマンドを打つ必要のある行動を、シェルスクリプトファイル一つを実行するだけで済ませることができます。DOSでいうところのバッチファイルに当たります。

● シェルスクリプトの作成

 シェルスクリプトを書くには、シェル上で"vi sample1.sh"とタイプし、sample1というファイルを作ってから編集します。

[ソース:sample1.sh]


#!/bin/sh
echo "I wanna be ...."

 上記のスクリプトは最も基本的なスクリプトです。実行した結果は次のとおりです。

[実行結果:sample1.sh]


$ sh sample1.sh

I wanna be ...

 echoコマンドはタイプした文字列を表示するコマンドですので、このように表示されます

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

 シェルスクリプトを実行するには二通りの方法があります。

  1. $ sh [スクリプトのパス]とタイプして実行する
  2. chmodコマンドで実行権限を与えた後、$ [スクリプトのパス]とタイプして実行する

● コメント、改行

 コメントは行頭に「#」をつけます。「#」をつけることで、その一行がコメントとして扱われます。コメントは人が読むための部分で、コンピュータには解釈されません。

 改行する場合は、改行する直前に「\」をつけます。


変数と引数

●変数

 変数とは、データを一時的に入れておく箱のようなものだと表現されることが多いです。例えば、BOXという名前の変数に"test"という文字列データを入れておくとしますと次のようになります。


BOX = test

 このように一時的に変数に入れておいたデータを、プログラムのほかの部分で呼び出すことができます。


echo $BOX

 これを実行すると、"test"と画面に表示されます。

 シェルスクリプトの場合は、変数を参照するには変数の前に「$」が必要です。代入は「=」で行い、代入するときには「$」は必要ありません。また、変数名に使用できる文字も英数字と「_」(アンダーバー)に限られます。

[注意点]

 変数名の中には、あらかじめ定義されている特別な変数も存在します。例えば、次のような変数です。

● 引数

 引数(ひきすう)とは、コマンドの後に続く文字のことです。例えば$ su root の"root"の部分に当たります。
 シェルスクリプトでは、一つ目の引数は$1と言う変数に引数を収納しています。前述のリストを参照してください。この変数に収納されたデータを参照するには次のようにします。

[ソース:sample2.sh]


#!/bin/sh
echo "It's content of $1:$1"

[実行結果:sample2.sh]

$ sh sample2.sh test(*'-')
It's content of $1:test(*'-')

 二つ以上の引数を並べる場合は次のようにします。

[ソース:sample3.sh]


#!/bin/sh
echo $1-$2-$3

[実行結果:sample3.sh]

$ sh sample3.sh a b c
a-b-c

 ただし、$nには$9までしかなく、$10は使用できません。しかし、通常は使用する引数が9つを超えることはまずないので、あまり気にしなくてもよいでしょう。


代入

 コマンドの実行結果を変数に代入する場合は、バッククォーテーション(`)で囲みます。

[ソース:sample4.sh]


#!/bin/sh
box=`date`
echo $box

[実行結果:sample4.sh]

$ sh sample4.sh
Fri Dec 3 23:53:07 JST 2004

 また、変数に代入しなくても``で囲まれた範囲はコマンドとして解釈されます。

[ソース:sample5.sh]


#!/bin/sh
echo "現在時刻: `date` です。"

[実行結果:sample5.sh]

$ sh sample5.sh
現在時刻: Fri Dec 3 23:53:07 JST 2004 です。

■参考文献


go back to the TOP page of Glazheim Lykeion.