ITPASS 実習レポート 1

名前 林 和輝

担当情報実験機 joho10

問 1

スクリプトの URL

quiz1.sh.txt

スクリプトの使い方の解説

いわゆるシーザー暗号を解読するためのシェルです。

まずスクリプトファイルを任意のディレクトリにダウンロードします。

次にitpassサーバ内のkadai1-1_data.txt, kadai1-2_data.txt, kadai1-3_data.txtを、先のディレクトリと同様の場所にコピーします。

スクリプトファイルの拡張子を「.sh.txt」から「.sh」に変更し、実行権限を与えます。

「./quiz1.sh [調べるテキストファイル名]」と入力して実行します。この際、ファイル名にkadai1-1_data.txt、kadai1-2_data.txt、kadai1-3_data.txt以外を入力すると、「Error」と表示されます。

実行結果へのリンク

問1の実行結果

参考資料

memo-off.blogspot.jp
http://memo-off.blogspot.jp/2012/11/bashn.htmhttp://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231163/

trコマンドの扱い方について参考にしました。

池田くんのレポート
http://itpass.scitec.kobe-u.ac.jp/~ikedaryo/report01/scripts/quiz1.sh.txt

見ていて、似たような方法でdoを使って回すことを思いつきました。

共同作業した人の名前

なし

工夫したこと, 感想

trコマンドを見つければ、終わりまですぐでした。

同じようなコマンドを26回入力していたのですが、これをdo文を利用して、数行でまとめられました。



問 2

スクリプトの URL

quiz2.sh.txt

スクリプトの使い方の解説

まずスクリプトファイルを任意のディレクトリにダウンロードします。

次にitpassサーバ内の気象データの圧縮ファイルkadai2_data.tar.gzを、先のものと同様のディレクトリにコピーし、gzファイルを展開します。

スクリプトファイルの拡張子を「.sh.txt」から「.sh」に変更し、実行権限を与えます。

「./quiz2.sh」入力すると、表示したいデータの入力を要求されるので、1、2、3のいずれかの数字を入力します。このとき1、2、3以外の文字を入力するとエラー文が表示されます。

実行結果へのリンク

問2の実行結果

参考資料

竹野研究室
http://takeno.iee.niit.ac.jp/~shige/misc/script/awk1/node6.html

awk内でintを用いて値の整数部分を抽出する方法を参考にしました。

ソフトウェアエンジニアのためのtips
http://sweng.web.fc2.com/ja/program/bash/read-each-line.html

ファイルを行ごとに処理する方法を参考にしました。

zenpouの日記
http://d.hatena.ne.jp/zenpou/20081001/1222868503

forの適用範囲を値で指定する方法を参考にしました。

教えて!goo
http://oshiete.goo.ne.jp/qa/4766063.html

ファイルの行数を抽出する方法を参考にしました。

共同作業した人の名前

TA 岡崎正悟さん

デバッグの仕方についてアドバイスをいただきました。

工夫したこと, 感想

本当は2つのdoループの組み合わせで綺麗にまとめたかったのですが、なぜかdoループの外に引数が引き継ぐことができないという現象が発生し、dの値を書き起こせないでいました。

これについてTAさんとも相談したものの、原因を突き止められなかったため、doループ内に条件を設けて、最後のデータを読み終わった時、ループ内でdの値を書き起こしてしまうような構造に、大きく書き換えました。

うるう年の場合(day=366)とそうでない場合(day=365)で書き起こすタイミングが変わるため、どうしたものかと思いましたが、その年の日数をawkで呼び出すという思いつきのおかげで、スッキリとはしないものの、なんとか書き上げることができました。

シェルを別のディレクトリに移動させなければ動かなかったのですが、内部でファイルの場所を指定する修正を加えたことによって、この手間を省きました。