-------------------------------------------------------------------------- # 表題 : 大文字, 小文字入れ換えおよび # 数字の削除を行うシェルスクリプト # # 履歴 : 2004/11/01 北守 太一 ■ はじめに - 本文書について 本文書は 2004/10/29 の情報実験中に出された課題に対する 解答を述べたものである. 課題の内容は指定された操作を 行うシェルスクリプトの作成である. 課題の詳細な内容は 情報実験講義資料(http://www.ep.sci.hokudai.ac.jp/~inex/2004/1029/jitsugi/t\ ask.html) を参照されたい. ■ 課題に対する解答 - 情報実験機 joho15 - シェルスクリプトのパス /home/kitamo/work/inex/2004/inex2004-kadai/kadai.sh # ローカルホストにて - 表示された画像 ふとんの上にだらけた姿の小高助手の写真. ■ シェルスクリプトの解説 - 文字の変換 while ループ, cut コマンド, case 文を用いてファイル名を一文字 ずつ取り出し文字の変換を行っていく. まず wc コマンドを用いてファイルに書かれている文字列の文字数を 求める. 文字列の数だけループを回し, 最初の文字から順番に一文字 ずつ取り出して文字の変換を行う. 変換した文字は一文字ずつ 変数 text の後ろにつけていく. 文字の変換は case 文を用いて行う. case 文中ではアルファベット 52 文字と数字の場合の全 53 通りの変換を記してある. - ファイルが存在するかのチェック 新しいファイル名を得るごとにそのファイル名のテキストファイルが 存在するかどうかをチェックする. ファイルが存在するかのチェック には test コマンドに -e オプションをつけることにより可能である. - 情報実験機番号の指定 情報実験機の番号によって最終的に得られる画像ファイルが異なる. 本シェルスクリプトでは引数に情報実験機の番号を指定することに より, 自機(joho15)のみではなく様々な情報実験機番号の画像ファ イルをスクリプトの書き換えをすることなく見ることが可能である. 引数を指定しない場合はデフォルト値として default に指定された 情報実験機番号の画像ファイルを表示する. なお, 引数に情報実験機以外の番号を指定した場合の処理を施して いない. そのため情報実験機以外の番号を引数に指定した場合は エラーとなる. ■ 作成したシェルスクリプト 作成したスクリプトは長いので別ファイルにしてこのメールに 添付する. ■ 感想 文字列の変換をどうするかを決めるのに最も苦労した. 結局 case 文を使うことによって処理したが, スクリプトが長くなって 読みずらい上に, 処理効率も悪い. ヒントにあった sed, tr コマンド を用いるともっと効率のよいスクリプトができるかもしれない. ■ 参考資料 inex(2004) : 最低限 UNIX [III] (情報実験第 4 回実技編資料) http://www.ep.sci.hokudai.ac.jp/~inex/2004/jitsugi/menu.html ---------------------------------------------------------------