つれづれ電脳記(日くらしPCに向かひて)

つれづれなるままに、日くらしPCに向かひて、その悪戦苦闘ぶりをそこはかとなく書き付くるおじさん。たまに雑談[管理人:goosyun]

つれづれなるままに、日くらしPCに向かひて、デジタル関係の悪戦苦闘ぶりをそこはかとなく書き付くるおじさんです。
たまに雑談してます。連絡・問い合わせフォームは、ページ最下部に置いています。[著者(運営人):goosyun]

(当ブログには本文中に広告リンクが含まれています。)

痛恨の変数名タイプミス・スペルミス~正確なタイピングの必要性

 20年以上前にやり取りした大量のメールファイルが、今でも残っています。
 そのファイルを、現在のメモ帳Microsoftテキストエディタ)で開いても文字化けしないように、文字コード変換の必要があります。先週、その方法を、自分なりに見つけ出しました。
 Linuxのシェル、bashを使う方法です。

 昔のファイルの文字コードを、
  iso-2022-jp」から「UTF-8」に変換する方法については、
 こちらの記事をご覧ください。

 文字コード変換対象のファイルは大量にあるため、一つ一つの手作業ではとてもやってられません。そこで、その大量のファイルの文字コードを一括で変換するシェルスクリプトを作りました。

 完成したシェルスクリプトのコードは、次のとおりです。

複数ファイルの文字コード一括変換スクリプト
 #!/bin/bash
 for myf in ~/kiroku_mail/dai1/*.txt
 do 
  newf=$(basename ${myf}) 
  iconv -f iso-2022-jp -t UTF-8 ${myf} > ~/afterconv/${newf} 
 done 


 このスクリプトの中味については、今日の記事では触れません。
 スクリプトの中味の説明は、できればまた後日、ブログ記事にしたいと思っています。

 今回記事は、そんな専門的なことではなく、もっと一般的な話題です。
 何かというと、変数名のタイプミス、スペルミスについてです。
 

 シェルスクリプトに関してはまだ初学者の域を出ないので、スクリプト作成作業は、いろいろと調べながら、勉強しながらの作業でした。
 そのように、時間をかけてようやく完成したスクリプトを、いざ実行してみるのですが、エラーが出て動きませんでした。
 「おかしいな、なぜ動かない。」
などとぼやきながら、構文に間違いがないか、コマンドの使い方がこれでいいのか、などとあれこれ見直し作業を行いました。
 そのように、かなり長い時間、もがき苦しんでいるうちに、
 「あっ!これだ。」
というのが見つかりました。

 文字コード変換後のファイルを保存する処理を記述した部分、
> ~/afterconv/${newf}
です。
 そこに、なんと、タイプミス、スペルミスがありました。

 ${newf} とすべきところを、
 ${nwef} としていたのです。





 そのようなスペルミスがあれば、スクリプトはまともに動くはずはありませんわね。
 構文ミス、使うべきコマンドが適切なのか、などを疑っていたのですが、そんなハイレベルな問題ではありませんでした。単なるタイプミス、スペルミスという、基本的なところで失敗していたのです。

 これがVBAだと、変数のタイプミスがあれば指摘してくれる仕組みが備わっています。「変数宣言」という仕組みです。
 ところが、シェルスクリプトには「変数宣言」という作業が不要とされている代わりに、変数名の書き間違いの指摘はしてはくれません。
 となれば、自分自身の力で、正確な記述をしていくことしか、防止の手段がありません。

 手元のキーボードを見ることなく、ディスプレイ画面だけを見ながらのタッチタイピングはできるのですが、タイプミスが多いのが私の大きな欠点です。これからも Ubuntu Linux をコマンド操作で使っていこうとするなら、正確なタイピングが必要となります。うーん、もう一度、タイピングの練習を基礎からやり直す必要があるかな、なんてことを真剣に考えた今日の出来事でした。

 ちなみに、上記${nwef}としていたタイプミスの箇所を、${newf}と修正することで、スクリプトはまともに動くようになりました。それにより、すべてのファイルの文字コード変換が、一括、自動で、あっという間に終わりました。




それでは、また次の記事で
goosyun