シェルスクリプトの作成



シェルスクリプトの作成

シェルスクリプトファイルの拡張子

シェルスクリプトファイルの拡張子は、慣例的に「.sh」とされています。

UNIXのファイルシステムなので拡張子は任意に指定できますが、第三者にもわかりやすくするために「.sh」を使うべきといえます。


実行スクリプトの指定

「#!/bin/sh」をシェルスクリプトファイルの1行目に記述します。


「#!<プログラムのパス>」とは指定したプログラムでスクリプトを実行するという意味です。

プログラムのパスはwhichコマンドなどで調べられます。

「which sh」コマンドを実行すると「/bin/sh」や「/usr/bin/sh」と表示されますので、これらを指定します。

なお、rubyスクリプトファイルならば「#!/usr/bin/ruby」、perlスクリプトファイルならば「#!/usr/bin/perl」と記述します。


コメントの記述

行中に「#」文字がある場合、それ以降をコメントと見なします。

#!/bin/sh
# コメント
GLOBAL_VAR=1 #コメント

スクリプト内容の記述について

UNIXコマンドおよびシェルの組み込みコマンドを行単位で記述します。

処理はスクリプトファイルの先頭行から開始され、スクリプトファイル終端で実行完了します。

最も簡単なシェルスクリプトは、コマンドをそのまま並べることです。

$ cat archive.sh

#!/bin/sh
cd ../www/
zip -r ./backup/data.zip ./data
rm -rf ./date

関数の利用

シェルスクリプトでも関数を作成することができます。

構文は以下の通りです。

関数名()
{
  実行処理
}

サンプルを以下に記述します。

$ cat function.sh
#!/bin/sh

func_sample()
{
  if [ $# -gt 0 ]
  then
    echo "\$0=$0"
    echo "\$#=$#"
    echo "\$@=$@"
    echo "\$*=$*"
    echo "\$1=$1"
    echo "\$2=$2"
    return 0
  else
    return 1
  fi
}
func_sample $@ 
ret=$?
echo "result=${ret}"

外部シェルスクリプトの呼び出し

各シェルスクリプトで共通に使用したい関数を外部ファイルに作成し、利用に際して呼び出すことができます。

外部ファイルの読込は、各シェル内で「 . ファイル名 」と記述すれば外部ファイルに記述した関数を使用できます。

外部ファイルに「変数」を定義しても同様に使用できます。

. func_lib.sh



シェルスクリプトの実行

スクリプトの実行

バイナリの実行ファイルと同様に、スクリプトは単一プロセスで実行されます。

シェルスクリプトの実行方法は以下の2通りがあります。


シェルスクリプトは、shコマンドの引数にして実行することができます。

sh スクリプトファイルパス

スクリプトファイルに実行権限を与えることで、コマンドとして実行することが可能です。

$ chmod 755 script.sh
$ ./script.sh

実行内容の出力

シェルスクリプトは、バイナリの実行ファイルと同様に、入出力のリダイレクトを行えます。

以下のリダイレクトで標準出力をファイルに出力することができます。

$ ./backup.sh > backup.log

標準エラー出力のリダイレクトを指示する場合には「2>」を指定します。

$ ./backup.sh > backup.log 2>backup_error.log

すべての出力を記録する場合には、以下のように実行します。

$ ./backup.sh > backup.log 2>&1


関連




スポンサード リンク