ITPASS 実習レポート 1

名前 秋山峻寛

担当情報実験機 joho 01


問 1

スクリプトの URL

問1のスクリプトquiz1.sh.txt


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

まず上記URLに記載の全文をコピーしquiz1.shというファイルを作る。次にファイルの実行権限を変更しスクリプトを実行できるようにする。
ITPASSサーバからjpcolor.scv,eurocolor.scv,metrocolor.scvをquiz1.shと同じディレクトリにコピーする。

実行するとまずRのカラーコードを聞かれるので入力する。ここで0〜255の整数以外の数字を入力するとエラーが出るのでやり直す。
同じようにG,Bについても入力する。

入力したカラーコードは16進数に変換された後、それに対応する色の名前があれば表示する。


実行結果へのリンク

quiz1.shの実行例


参考資料

hydrocul (2014/8/29) "sed コマンド コマンドの使い方(Linux) hydroculのメモ 複数の処理をさせるには"
10進数を16進数に変換させる際に利用

"株式会社ITポートさくら (2015/15/16) "逆引きシェルスクリプト-whileループのサンプル - Linuxと過ごす -oのサンプルスクリプト(or)"
0〜255以外の値を入力した時のエラー処理に利用

modulormix (2011/8/7) "trコマンドで空白文字を削除 OpenGroove"
16進数へ変換するとき3つのコードを空白で区切った。その空白を削除するために利用

日経BP社 (2006/2/24) "Linuxコマンド集 - 【 : 】 何もせず、0を返す:ITpro"
if文である条件で真の時に何もしたくなかったため利用

日経BP社 (2006/2/27) "Linuxコマンド集 - 【 grep 】 文字列を検索する:ITpro"
カラーコードのデータファイルから対応する色を探すときに利用

etuts+ (2015/7/24) "シェルスクリプト数字判定 - eTuts+ Server Tutorial 数字判定 その1. expr を利用する (整数判定)"
入力した値が小数の場合にエラー処理をするために参考にした

共同作業者

なし


工夫したこと, 感想

文字の置換をすることによって10進数から16進数への変換を行った。それぞれの桁を空白で区切って独立させることにより変換を可能にした。
変換後、その空白を削除することによりカラーコードのデータファイルから対応する色の名前を探せるようにした。
また、それぞれの桁の変換後の結果、空白を削除したあとの結果を一時的にテキストファイルに保存する方法を用いた。

ifコマンドの前でgrepコマンドによりカラーコードに対応する色の名前を出力しているので、thenでは結果を出力する必要がなく0を返した。

最初から自分自身でスクリプトを作成することに不安があったが、作業していくうちにコツをつかめた。


問 2

スクリプトの URL

問2のスクリプトquiz2.sh.txt


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

上の問1の場合と同様に、quiz2.sh.txt内の全文をコピーしquiz2.shというファイルを作った後、ファイルの実行権限を変更する。
実行する際に引数として西暦年を入力する。実行すると2016年1月から指定した年の12月までにある13日の金曜日の日数が表示される。
ここで2016年より前の年を指定するとエラーが出るのでやり直す。


実行結果へのリンク

quiz2.shの実行例


参考資料

Wikipedia (2015/11/17) "ツェラーの公式 - Wikipedia"
ある日付の曜日を知るために利用

Slow Danc (2008/6/30) "ファイルの中身を空にするコマンド - Slow Dance"
スクリプトの途中結果を出力したファイルの中身を、すべてのスクリプトの実行前に空にするときに利用

日経BP社 (2006/2/27) "Linuxコマンド集 - 【 grep 】 文字列を検索する:ITpro"
ツェラーの公式で導出した、金曜日を表す"6"という数字を抜き出したりその数を数えるときに利用

共同作業者

なし


工夫したこと, 感想

while文による繰り返しとツェラーの公式により求めた2016年から指定年までの13日の金曜日(を表す"6"という数字)をその日数分だけ一時的にファイルに出力した。
そのファイルからgrepコマンドにより"6"の数を数えることにより13日の金曜日の日数を数えた。

しかし一度スクリプトを実行すると次回からは21.txtに途中結果が追加されてしまうため正しく日数を表示することができない。
そこで、スクリプトの末尾に21.txtを削除するコマンドを組み込むことにより繰り返しスクリプトを実行することを可能にした。

問1・問2のどちらもスクリプトの途中結果をファイルに一時的に保存することが最も工夫した点である。またその一時ファイルを削除するようにした。

他の受講生のスクリプトと自分のものを比べてみて、改善点がないか考えたい。