IT

シェルスクリプト【LPIC level1】

目次

  • シェルスクリプト
  • シェルスクリプトの基礎
  • ファイルのチェック
  • 制御構造
  • シェルスクリプトの実行環境

シェルスクリプト

シェルスクリプトとは、スクリプト言語によるプログラミング機能です。

シェルスクリプトの基礎

シェルスクリプトは、テキストファイルにコマンドを記述するだけで作成できます。

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 = 文字列22つの文字列が等しければ真
文字列2 != 文字列22つの文字列が等しくなければ真

テストの論理結合

以下、テストの論理結合についての条件式です。

条件式実行結果
!条件条件式が偽であれば真
条件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

最後まで読んで頂き、ありがとうございました。

他の分野へ移動できる全体ページへは下記リンクから移動できます。