• Top
  • What's New
  • Command
  • Basic
  • Server
  • Security
  • Conf
  • tools
  • etc
  • blog
  • link
  • サイトについて
  • メール
INDEX /  yum /  Shellscript / 
最終更新日 2005/04/07  

シェルスクリプト

シェルスクリプトとは
シェルスクリプトの書式
シェルスクリプトの実行
シェルスクリプト内の変数
シェルスクリプトの特殊変数
条件分岐(if文)
test文
シェルスクリプトとは
シェルスクリプトとは、コマンドラインで実行する一連のコマンドをファイルを書き出し、逐次実行するものです。
bashなどのシェルに組み込まれているインタプリタが一行一行順に実行してくれます。
また、条件分岐や繰り返しなどの機能がある為、簡単なプログラムを組むことができます。
シェルスクリプトの書式
シェルスクリプトを書く場合の決まり事は、他のプログラム言語とくらべて非常に少ないです。
インタプリタのパスの指定ぐらいになります。基本的には、コマンドの羅列になります。 シェルスクリプトの例(bash)
#/bin/sh
echo "Hello shellscprit"
echo "Hello GNU/Linux"

  1. インタプリタのパスを指定
  2. echoコマンドを使用して、引数の文字列を表示
  3. echoコマンドを使用して、引数の文字列を表示
シェルスクリプトの実行
作成したシェルスクリプトを実行する方法は三通りあります。
  1. 「bash」コマンドを使用して実行
      書式 bash スクリプトファイル名
      オプション -v コメント行も含め、エコー表示しながら実行
             -x 実行分のみをエコー表示しながら実行

  2. 「source」または「.」(ドット)コマンドを使用して実行
      書式 source スクリプトファイル名
          .(ドット) スクリプトファイル名

  3. ファイルに実行権をつけて実行
      実行方法
    #chmod +x スクリプトファイル名
    #./スクリプトファイル名
シェルスクリプト内の変数
シェルスクリプト内で変数を定義することができる。
構文  変数名=代入する値
例
[root@host /root]# VAR=test
[root@host /root]# echo $VAR
test
シェルスクリプトの特殊変数
シェルスクリプトでは、よく引数を利用する。そのために引数のための特殊な変数が用意されている
変数名 説明
$0スクリプトファイル名
$11番目の引数名
$22番目の引数名
${10}10番目の引数名
$#引数の数
#@すべての引数名
$$プロセスID
条件分岐(if分)
条件分岐は「if」を使用する。「if」「else」を用いて条件分岐を行う
また、「if」文のブロックはは「fi」で終了する。
構文
if 条件
 then
   実行文(条件文が真0の時)
 else
   実行文(条件文が偽0以外の時)
fi
サンプル
#!/bin/sh

if cd $1
  then
    echo "cd OK!"
  else
    echo "cd Erorr"
fi
上記の例は、cdコマンドで指定した第一の引数で移動できれば、真のthenの文と実行。偽ならばelseの文と実行する
test文
if文を用いた条件判断には、よくtest文が用いられる。
test文を利用すると、簡単にファイルの存在等と確認し、if文などの条件分岐に利用することが可能になる
構文  if test 条件
構文2  if [ 条件 ]
test文の条件判定(ファイル編)
条件式 実行結果
-e ファイル名ファイルが存在すれば真
-f ファイル名ファイルが普通のファイルであれば真
-d ファイル名ファイルがディレクトリであれば真
-x ファイル名ファイルに実行権がついていれば真
-r ファイル名ファイルが読み込み可能であれば真
-w ファイル名ファイルが書き込み可能であれば真
-L ファイル名ファイルがシンボリックリンクであれば真
-s ファイル名ファイルサイズが0でなければ真

test文の条件判定(文字列編)
条件式 実行結果
-x 文字列文字列が空(0)であれば真
-n 文字列文字列が空(0)でなければ真
文字列1=文字列2文字列1と文字列2が等しければ真

test文の条件判定(論理演算編)
条件式 実行結果
!条件ファイルが存在すれば真
条件1 -a 条件2条件1と条件2が共に真であれば真
条件1 -o 条件2条件1と条件2のどちらかが真であれば真

test文の条件判定(数値編)
条件式 実行結果
数値1 -eq 数値2数値1と数値2が等しければ真
数値1 -ne 数値2数値1と数値2が異なれば真
数値1 -gt 数値2数値1が数値2より大きければ真
数値1 -ge 数値2数値1が数値2以上であれば真
数値1 -lt 数値2数値1が数値2より小さければ真
数値1 -le 数値2数値1が数値2以下であれば真

if文とtest文と組み合わせ例
#!/bin/sh

if [ -f "$1"]
  then
    echo "OK!"
  else
    echo "Erorr" fi

 
Copyright (c) 2005 Mukuan All Rights Reserved.