シェルスクリプト
この演習で作成するコマンド(シェルスクリプトにおいて)、最終行の改行を忘れると、最終行のコマンドが実行されないので注意する。
先頭行の最初が#であればcshのスクリプトと解釈されるとオンラインマニュアルには記載があります。
まず、各自$HOME/UNIXclass
に移動して、ichoに用意した次のディレクトリの内容をコピーする。次に、今コピーしたディレクトリshellscript
に移動する。cpコマンドに"-r"オプションをつけるとディレクトリごとコピーできる。
----------------------------------------------------------------------------
icho% cd
icho% cd UNIXclass
icho% cp -r /home1/akira/SAMPLE/shellscript .
^^^
(最後のピリオドを忘れないこと)
icho% cd shellscript
icho% pwd (各自自分のホームディレクトリ下であることを確認すること)
----------------------------------------------------------------------------
コピーされるファイルは以下の通り。
コピーしたディレクトリ下のファイルex-1を以下の通りシェルスクリプトとして実行できるように変更する。
----------------------------------------------------------------------------
icho% csh ex-1
(ここで必要な作業を行い以下のようにシェルへ入力するだけで実行できるようにする)
icho% ex-1
----------------------------------------------------------------------------
pwd コマンド、ls -F コマンド、dateコマンドを続けて実行するコマンドを「ex-2」という名前で作成し、実行してみよ。
ファイル「judge」を各自で実行し、動作を確認する。このファイルを変更して以下に示す要求を満たすコマンド「ex-3」を作成し、実行してみよ。
ファイル「judge」は成績判定を行うコマンドである。現在は、80点、70点、60点がそれぞれABCDの境目となる点数である。
この境目となる点数を変更したい場合、このままでは、ファイル中の数箇所を同時に書き換えなければならない。
そこで、この境目となる点数を変数に格納し、その変数への代入文を書き換えるだけで境目となる点数を変更できるようにする。
具体的にはif文の前に境目となる点数をシェル変数に代入し、if文の中に直接点数が書かれている数値をシェル変数の参照に書き換える。
ファイル「input-output」「division」それぞれを各自で実行し、動作を確認する。これらのファイルを統合して以下に示す要求を満たすコマンド「ex-4」を作成し、実行してみよ。
ファイル「division」は除算を行う整数2つを引数として受け取っている。
これを以下の実行例に示すような問い合わせ型のコマンドに変更する。
----------------------------------------------------------------------------
icho% ex-4
除算を行う整数を入力してください: 10 ← "10"は、入力する値
もう一つの整数を入力してください: 3 ← "3"は、入力する値
商=3 余り=1 ← これが計算結果
----------------------------------------------------------------------------
(これは余力のある人が行ってください)ファイル「schedule」「query-date」を各自で実行し、動作を確認する。これらのファイルを変更して以下に示すような要求を満たすコマンド「ex-5」を作成し、実行してみよ。
ファイル「query-date」は、dateコマンドを実行するかどうかをif文を用いている。
ファイル「schedule」を参考にして「query-date」をswitch文を使うように変更する。
(さらに余力のある人が行ってください)以下に示すような要求を満たすコマンド「ex-6」を作成し、実行してみよ。
コマンドex-6は引数に指定した整数を掛け合わせた結果を返すコマンドである。
引数は、2個から8個まで自由に変えることができるものとする。引数の数が9個以上ならばエラーを返すようにする。
例えば、出来上がったex-6を実行した場合以下のようになるはずである。
----------------------------------------------------------------------------
icho% ex-6 1 2
2
icho% ex-6 1 2 3
6
icho% ex-6 1 2 3 4 5 6 7 8
40320
icho% ex-6 1 2 3 4 5 6 7 8 9
引数は8個までにしてください
icho%
----------------------------------------------------------------------------
ヒント:foreach文、$#argv、$*などを使うとできる。
上記課題の1から5までを実行して出来上がったシェルスクリプトファイルを以下のコマンドを実行し、一つにまとめる。 以下のコマンドの詳細については、テキスト第3章を参照のこと。
----------------------------------------------------------------------------
icho% pwd (各自実習を行ったディレクトリであることを確認すること)
icho% more ex-[1-4] > report-5
----------------------------------------------------------------------------
科目名、学籍番号、所属、氏名の記載されたファイルを作成する。
上記二つのファイルを提出する。 レポート提出にはreport.shを用いること。なお、report.shは、この演習で作成したディレクトリにコピーしておくとよい。
提出期限 | 2005年10月17日午後10時 | |
---|---|---|
宛先 | akira-report-05@ipe.tsukuba.ac.jp | 佐藤 |
件名 | Report05 | 全て半角で入力、途中にスペースを入れない |
電子メール以外での提出は採点対象にならない。
電子メールに「科目名、所属、学籍番号、氏名」が書いてある。2点
電子メールに課題ex-1が含まれている。2点
電子メールに課題ex-2が含まれている。2点
電子メールに課題ex-3が含まれている。2点
電子メールに課題ex-4が含まれている。2点
授業のページに戻る
第4回のページへ戻る
第6回のページへ進む