HP-BASIC入門
ホーム » 技術集 » シェルスクリプト

シェルスクリプト



HP-BASIC入門で説明しましたシェルの応用がこのシェルスクリプトです。 シェルスクリプトとはシェルに作業させたいことを書いたコマンド集、 というのが一番適切な表現かもしれません。 実際にはこのコマンド、このコマンド・・・という羅列を書いておき、順次 実行させていくのが基本的な用法でしょう。 本来一つずつやるべき実行を一度にできるとWindowsではなくUNIXの便利さを 感じることができます。

HP-UNIXにおいてはデータやログファイルを見たり、サーバーに転送したりするなど、ワークステーションに作業させたいことがたくさんあります。 またデータファイルを簡便に見たり、ファイルを整形したりと使う場面もおおくプログラミング技術を身につけることは業務を効率よく行っていく上で必須です。 たとえば、サーバーがSS1~SS5まであり、ファイルのリストを収集したいときは

#! /usr/bin/sh
remsh SS1 ls -lsa > SS1.list
remsh SS2 ls -lsa > SS2.list
remsh SS3 ls -lsa > SS3.list
remsh SS4 ls -lsa > SS4.list
remsh SS5 ls -lsa > SS5.list


というように、スクリプトを組んでいきます。 これだけでもルーチンワークを自動化することができ、大きな工数削減になります。 プログラム作成の際には動作確認はもちろん、ワークステーションの負荷にも気を 配る必要があります。


シェルについて




通常、UNIXにはCコンパイラ等が入っており、開発の環境が整っているものですが、何せHP-UXという独自性の強いワークステーションではCコンパイラが入っていないことも多いです。 そのため、テキストファイルを自動的に閲覧したり、各サーバーのファイルを自動的に収集したり・・・、といったことをシェルにて実現する必要が出てきます。 Cやそのほかのプログラムに比べて簡単に実行できるのですが、実行負荷は結構高いので、測定等に影響が出たりもします。 そのため、一時的にアイドリング状態になっているときに行うようにプログラムを組んだり、夜間に自動的に実行できるようにcronプログラムを組んだりします。

例としては、先述のように実行したいコマンドを並べていきます。
logsend.sh

#!/bin/sh cp /usr/log.txt log.backup.txt
rcp Server01 log.backup.txt


#!/bin/shは"シェルスクリプトだ"ということを明言するもので、必ず最初に記述します。 これでサーバーにログを送るサンプルプログラムです。 このプログラムを実行するには実行形式にする必要があり、

$chmod 777 logsend.sh


のように実行権限をあたえてやる必要があります。 また、作成したlogsend.shは環境変数$PATHが明示していない場合、 カレンとディレクトリにファイルがある場合でしか使用できません。 そのため、$PATHを用いてファイルにパスを通すか、パスがあらかじめ通っているディレクトリにファイルを移動させていつでも実行できるようにしておく必要があります。