今号では、知っておくとちょっと便利なシェルスクリプトの基本、および簡単なサンプルプログラムについてご紹介します!
シェルスクリプトとは?
シェルスクリプトは、テキストファイルにコマンドを列挙し、処理を一括して実行するために使用します。
複数の処理を定期的に実行したい場合にシェルスクリプトを作っておけば、逐一コマンドを入力・実行する手間が省けます。
基本の書き方
# cat test.sh #!/bin/bash …
スクリプトの最初の1行目 #!/bin/bash は #!/bin/sh と記載することもあります。
これらの違いはシェルを動作させるプログラムの種類の違いによるものですが、ほとんどの場合、どちらを使用しても動作に違いはありません。
2行目以降に、実行させたいコマンド等を記載していきます。
コマンド例1 (引数・終了ステータス)
1) 引数に関するコマンド
- $#
指定された引数の数が設定されます。# cat oss1.sh #!/bin/bash echo $# # ./oss1.sh 1 b c 3
上記の場合、指定した引数 (a,b,c) の合計数 である 3 が表示されます。
- $1-$n
指定された引数の中身(値)が設定されます。# cat oss2.sh #!/bin/bash echo $1 echo $2 echo $3 # ./oss2.sh a b c a b c
上記の場合、スクリプト内で$1~$3を指定しているため、1~3番目までの引数の値 a,b,c が表示されます。
2) 終了ステータスを表示するコマンド
- $?
当該シェルスクリプトの終了ステータス (0なら正常終了、0以外なら異常終了) が設定されます。# cat oss3.sh #!/bin/bash ls -l oss3.sh echo $? ls -l oss0.sh echo $? # ./oss3.sh -rwxr--r--. 1 root root 56 1月 24 11:10 oss3.sh 0 ls: oss0.sh にアクセスできません: そのようなファイルやディレクトリはありません 2
上記の場合、スクリプト内で ls -l コマンドを実行し、対象ファイルの詳細情報を取得します。
oss3.sh は存在するためファイルの詳細が表示され、終了ステータスとして 0 が表示されましたが、oss0.sh は存在しないためエラーとなり、終了ステータスとして 2 が表示されました。なお、0以外の場合にどのような数値が設定されるかは、各コマンドの実装によります。
※次号以降も、数回に分けてシェルスクリプトのコマンド例や作り方についてご紹介していきます。