ITPASS 実習レポート 1

山田 皓生

担当情報実験機 joho17

問 1

スクリプトの URL

quiz1.sh.txt

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

このスクリプトは、"kadai1-1_data.txt" "kadai1-2_data.txt" "kadai1-3_data.txt" 内にある文字列をアルファベット順に何文字かずらしてできた暗号を解読するためのものです。

使用するための準備として、最初に、このファイルを任意のディレクトリへコピーします。上のリンクで表示されるスクリプトをコピーし、任意のディレクトリにて "quiz1.sh" を作成、貼り付け、保存してください。次に、保存した "quiz1.sh" のユーザーパーミッションに実行権限を与えます。 最後に、ITPASSサーバ上のデータファイル"kadai1-1_data.txt" "kadai1-2_data.txt" "kadai1-3_data.txt" をquiz.shをおいたディレクトリへコピーします。以上で準備は完了です。

このスクリプトを実行すると、最初に暗号解読の対象になるファイルの名前の入力を求められます。表示される3つのファイル名のうち、1つを選んで入力してください。尚、入力を間違えると、再度入力を求められます。ファイル名を入力すると、出力結果として暗号を1文字から26文字までずらしたものが表示されます。

実行結果へのリンク

result_1.txt

参考資料

シェルスクリプト入門 書き方のまとめ http://motw.mods.jp/shellscript/tutorial.html Memo on the web 最終閲覧日 8月30日 シェルスクリプトの基本構文の確認に利用しました。

Linuxコマンド集 http://itpro.nikkeibp.co.jp/article/COLUMN/20060223/230520/?TOC=1 日経BP社 最終閲覧日 2015/8/30 Linuxコマンドを調べたり確認するのに利用しました。

逆引きシェルスクリプト http://linux.just4fun.biz/%E9%80%86%E5%BC%95%E3%81%8D%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88.html 最終閲覧日 2015/8/30 シェルスクリプトでやりたい操作のためにはどのようなコマンドが必要なのかを調べました。

簡単で正しいHTMLの書き方 http://mahlog.typepad.jp/html/ Toda Masalu 最終閲覧日 2015/8/31 HTMLの書き方を調べました。

共同作業した人の名前

毛利 安裕美 山崎 祐太朗

工夫したこと, 感想

出力結果を1行にして表示するのに試行錯誤して、提出した形を偶然見つけました。かなり苦労しました。その処理部分(#出力文字の1行化)ですが、入力されたファイル名からcaseで場合分け(#caseで場合分け)をしています。しかし、上の無限ループ部分(#入力エラー処理)のifの条件式をorにせず、if elif elifの3つに分けて、それぞれで異なる変数を設定(kadai1-1_data.txtならばx=1)し、処理部分でkadai1-$x_data.txtとすれば、caseの場合分けをせず1つにまとめることができると思います。ただ、結局ifの場合分けが多くなるので、このままにしています。文字変換のところですが、untilのおかげですっきり纏められたと思います。

問 2

スクリプトの URL

quiz2.sh.txt

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

このスクリプトは、kadai2_data内にある2005年1月1日から2014年12月31日までの気象データが入ったcsvファイルから、猛暑日・真夏日・夏日の日数をそれぞれカウントするためのものです。

使用するための準備として、最初に、このファイルを任意のディレクトリへコピーします。上のリンクで表示されるスクリプトをコピーし、任意のディレクトリにて "quiz2.sh" を作成、貼り付け、保存してください。次に、保存した "quiz2.sh" のユーザーパーミッションに実行権限を与えます。最後に、ITPASSサーバー上にある圧縮データファイル "kadai2_data.tar.gz" を "quiz2.sh" と同じディレクトリへコピーし展開します。以上で準備は完了です。

このスクリプトを実行すると、最初に猛暑日・真夏日・夏日の日数のうちどれを表示するかの選択を求められます。猛暑日の日数を1、真夏日の日数を2、夏日の日数を3とし、1〜3のいずれかを入力してください。それら以外が入力された場合、再度入力を求められます。入力が済むと、年別の指定の日数が表示されます。

実行結果へのリンク

result_2.txt

参考資料

シェルスクリプト入門 書き方のまとめ http://motw.mods.jp/shellscript/tutorial.html Memo on the web 最終閲覧日 8月30日 シェルスクリプトの基本構文の確認に利用しました。

Linuxコマンド集 http://itpro.nikkeibp.co.jp/article/COLUMN/20060223/230520/?TOC=1 日経BP社 最終閲覧日 2015/8/30 Linuxコマンドを調べたり確認するのに利用しました。

逆引きシェルスクリプト http://linux.just4fun.biz/%E9%80%86%E5%BC%95%E3%81%8D%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88.html 最終閲覧日 2015/8/30 シェルスクリプトでやりたい操作のためにはどのようなコマンドが必要なのかを調べました。

簡単で正しいHTMLの書き方 http://mahlog.typepad.jp/html/ Toda Masalu 最終閲覧日 2015/8/31 HTMLの書き方を調べました。

共同作業した人の名前

毛利安裕美 樋口波平

工夫したこと, 感想

最初は、#数値の入力 の部分でselectを使っていたのですが、後に #データ読み込み で使うwhileとでループが2つになり、構成がややこしくなり、結局課題1と似たような形となりました。#年別最高気温データの作成 で一時ファイルを作り、そこに処理途中データを保存するようにしたのは、コマンドの出力結果を変数として処理を行ってもエラーが起きてしまったからです。うまく構成すればエラーは起きないのかもしれませんが、それで数時間は悩んだので、現在の形に落ち着きました。もっとも苦労したのは、データの抜き出して、最高気温のみのデータを作成することでした。cutとtrでうまく出来ましたが、やってはエラー、やってはエラーの繰り返しで苦労しました。これは課題1・2に通して言えることですが、試して悩んで、やっとうまく行った時はとても嬉しく、達成感がありました。