パソコン悪戦苦闘記録

Linuxで変数名をスペルミスしたときの挙動

 最近、Ubuntu Linux で、コマンド操作や、シェルスクリプトを作るなどして楽しんでいます。

 コマンドやスクリプトがうまく実行され、自分が構想したとおりに動いてくれたときは、気分爽快、気持ちがスカッとします。
 この達成感が、たまんない
 私は、コンピューターゲームはしないのですが、ゲーム進行がうまくいって、次のステージに上がることができたときの達成感が、おそらく、こういう気分でしょう。





 コマンドやスクリプトは、ユーザーが命じたとおりに動作し、融通は一切ききません。たった1文字のスペルミスであっても許してくれません。即座にエラーが出て、怒られます。

 このようにスペルミスがあれば、エラーを出して怒ってくれるのが原則です。
 けど、怒ってくれればいいのに、そうならない場面があります。
 それは、「変数」です。

 $ files=`find . -type f -name "*.sh"` ; echo ${files} 
というコマンドを打ち込みました。
 このコマンド実行の結果、「.sh」の拡張子のファイルを見つけ出して、表示してくれます。

 ところが、ここで変数を記述するとき、スペルミスを犯してしまいました。
 「${files}」 とすべきところを、
 「${file}」  と誤記してしまいました。
語尾に「s」を付け忘れ、変数「files」を、「file」とスペルミスしています。

 このとき、「fileという変数はないぞ。」と、エラーを出して怒ってくれればいいのに、そうはなりません。
 どうなるかというと、シレーっと、空白行が出力されます。
 変数「file」には値が何も代入されていないという解釈がされて、エラーを出すことなく、「空文字列」を出力するからです。

 WordマクロやExcelマクロのVBAでは、変数宣言の強制を設定しておくと、「fileという変数は定義されていません」っていうエラーを出してくれます。
 この仕様に慣れていたので、最初は戸惑いました。

 が、これは、Bashシェルの仕様なのです。
 受け入れるしかありません。そのうち、これに慣れてくるでしょう。




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


《2024年5月12日追記》
 Linuxシェルでの「変数の扱い方」全般を記事にまとめました。
  こちらの記事をご覧ください。
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「Ubuntu」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事