Shell Script [application]

Date : 2005-11-29
Author : Defolos

CONTENTS

(1.) 四則演算
(2.) エスケープシーケンス
(3.) 関数の定義

四則演算

 シェルスクリプトでは変数は文字列として扱われるため、他の言語のように+、-のような演算子を用いることができません。そこでシェルスクリプトで数値計算をする場合はexprというコマンドを使用します。また、exprコマンドで使われる演算子は次のようなものがあります。


#!/usr/bin/sh
echo "5 + 2 = `expr 5 + 2`"
echo "5 - 2 = `expr 5 - 2`"
echo "5 * 2 = `expr 5 \* 2`"
echo "10 / 2 = `expr 10 / 2`"
echo "8 % 4 = `expr 8 % 4`"

[実行結果:sample11.sh]

$ sh sample11.sh

5 + 2 = 7
5 - 2 = 3
5 * 2 = 10
10 / 2 = 5
8 % 4 = 0


エスケープシーケンス

 次に並べる文字は、シェルスクリプトでは特殊な文字として扱われるため、そのままでは普通の文字として扱えません。

; ( ) | ^ < > & * [ ] $ ` " ' { } [TAB] [SPACE]

 これらを普通の文字として扱うためにはエスケープする必要があります。特殊文字をエスケープするには次の3つが使われます。

バックスラッシュによるエスケープ

 バックスラッシュ ( \ ) の直後の特殊文字は普通の文字として扱われます。

シングルクォーテーションで囲む

 シングルクォーテーション ( ' ) で囲まれた中の特殊文字はすべて普通の文字として扱われます。

ダブルクォーテーションで囲む

 ダブルクォーテーションで囲まれた中の特殊文字は $ ` \ を除いてすべて普通の文字として扱われます。つまり、ダブルクォーテーション中では変数、コマンド置換が行われます。これが、シングルとダブルのクォーテーションの意味の違いです。


関数の定義

 よく利用する処理ステップをひとまとめにしておくと、プログラムの効率が良くなり、可読性も増します。関数の定義は次のようにします。

関数名() {
  コマンド
  .....
}

 関数を呼び出すには、スクリプト中で関数名をコールします。また、引数を渡すことができます。関数の中ではこの引数を$1, $2, ... , $8, $9で使うことができまます。


#!/usr/bin/sh
TestFunc() {
    echo ".:[関数処理]:."
    echo "引数1: $1"
    echo "引数2: $2"
}

TestFunc (*'-')/ o(^-')b"

[実行結果:sample12.sh]

$ sh sample12.sh

.:[関数処理]:.
引数1: (*'-')/
引数2: o(^-')b"


■参考文献


go back to the TOP page of Glazheim Lykeion.