目次
- シェルスクリプト
- シェルスクリプトの基礎
- ファイルのチェック
- 制御構造
- シェルスクリプトの実行環境
シェルスクリプト
シェルスクリプトとは、スクリプト言語によるプログラミング機能です。
シェルスクリプトの基礎
シェルスクリプトは、テキストファイルにコマンドを記述するだけで作成できます。
sourceコマンド
sourceコマンドを使用するとスクリプトを実行することが出来ます。
source [スクリプト]
sourceの代わりに「.」で置き換えることが出来ます。
$ . [スクリプト]
execコマンドとは指定したコマンドを既存のジョブと置き換えて実行するコマンドです。
スクリプトに渡す引数
bashでは、特殊な変数を用いて引数などを参照できます。
変数名 | 説明 |
$0 | シェルスクリプトファイル名(フルパス) |
$1 | 一番名の引数 |
$2 | 二番目の引数 |
$# | 引数の数 |
$@ | 全ての引数 |
$* | 全ての引数 |
実行結果の戻り値
コマンドを実行すると、終了時にシェルに対して戻り値を返します。
正常終了した場合は0
正常終了しなかった場合は0以外の値が返されます。
ファイルのチェック
ファイルが存在するかどうかによってスクリプトの動作を変えるなどファイルに関する情報を取得する時に、testコマンドを使います。
ファイル形式のテスト
以下、ファイル形式のテストについての条件式です。
条件式 | 実行結果 |
-f ファイル | (ディレクトリなどを除く)ファイルがあれば真 |
-d ディレクトリ | ディレクトリがあれば真 |
-r ファイル | ファイルが存在し、かつ読み込み可能であれば真 |
-w ファイル | ファイルが存在し、かつ書き込み可能であれば真 |
-x ファイル | ファイルが存在し、かつ実行可能であれば真 |
-s ファイル | サイズが0より大きいファイルがあれば真 |
-L ファイル | シンボリックリンクであるファイルがあれば真 |
ファイル特性のテスト
以下、ファイル特性のテストについての条件式です。
条件式 | 実行結果 |
-e ファイル | ファイルがあれば真 |
ファイル1 -nt ファイル2 | ファイル1がファイル2より修正時刻が新しければ真 |
ファイル1 -ot ファイル2 | ファイル1がファイル2より修正時刻が古ければ真 |
数値のテスト
以下、数値のテストについての条件式です。
条件式 | 実行結果 |
数値1 -eq 数値2 | 数値1と数値2が等しければ真 |
数値1 -ge 数値2 | 数値1が数値2より大きい、もしくは等しければ真 |
数値1 -gt 数値2 | 数値1が数値2より大きければ真 |
数値1 -le 数値2 | 数値1が数値2よりより小さい、もしくは等しければ真 |
数値1 -lt 数値2 | 数値1が数値2未満であれば真 |
数値1 -ne 数値2 | 数値1と数値2が等しくなければ真 |
文字列のテスト
以下、文字列のテストについての条件式です。
条件式 | 実行結果 |
-n 文字列 | 文字列の長さが0より大きければ真 |
-z 文字列 | 文字列の長さが0であれば真 |
文字列1 = 文字列2 | 2つの文字列が等しければ真 |
文字列2 != 文字列2 | 2つの文字列が等しくなければ真 |
テストの論理結合
以下、テストの論理結合についての条件式です。
条件式 | 実行結果 |
!条件 | 条件式が偽であれば真 |
条件1 -a 条件2 | 両方の条件式が真であれば真(and) |
条件1 -o 条件2 | いずれかの条件式が真であれば真(or) |
制御構造
シェルスクリプトは、条件によって処理を分岐したり、繰り返し処理を実行したり出来ます。
if文による条件分岐
条件によって処理を選択するにはif文を使います。
条件式が真の場合、実行文1が実行されます。
条件式が偽の場合、実行文2が実行されます。
if 条件式
then
実行文1
else
実行文2
fi
case文による条件分岐
式の値に応じれ複数に分岐する場合はif文よりcase文の方が便利です。
case 式 in
値1)
実行文1;;
値2)
実行文2;;
:
:
esac
for文による繰り返し処理
繰り返し処理を行う場合には、for文を用います。
指定した変数にリスト中の値を代入していき、そのつど実行文を実行します。
for 変数名 in 変数に代入する値のリスト
do
実行文
done
while文による繰り返し処理
while文は、条件文が満たされている間、doとdoneの間の実行文を実行します。
while 条件文
do
実行文
done
readコマンド
readコマンドとは、標準入力からまたはリダイレクションによるテキストファイルなどからデータを読み取り、それを変数に代入します。
シェルスクリプトの実行環境
シェルスクリプトは、シェルの種類によって異なります。
作成したスクリプトがbashシェル用に書かれている場合、スクリプトの先頭で以下のように指定します。
#!/bin/bash
最後まで読んで頂き、ありがとうございました。
他の分野へ移動できる全体ページへは下記リンクから移動できます。