パソコン悪戦苦闘記録

Linuxシェルbashでの変数の利用方法、使い方

 先日、Linuxで変数を扱うに当たって、変数名をスペルミスしたときの挙動を記事にして紹介しました。
 
 変数名のスペルミス時のLinuxの挙動は、
 こちらの記事をご覧ください。

 いい機会なので、Linuxの変数全般について簡単にまとめておくことにします。
 主に、Linuxにおいて変数を利用する方法(変数はどのようにして使うのか)です。正確には、bashなどのシェルにおける変数の利用方法です。

 Linuxのシェルbash等においても変数を利用できます。特に、シェルスクリプトにおいては、よく利用します。
 けれども、どのようにすれば利用できるのか、どう書けばよいのか、最初のうちは分かりません。
 私も、Linuxに初めて出会った当初の初心者のうちは戸惑いました。それまで、ExcelマクロやWordマクロのVBAの中で変数をよく利用していましたが、bashでの変数の扱いは、VBAとはまたちょっと違う部分もあります。そのために、戸惑うところがありました。





変数とは
 変数とは、文字列や数値などの値に名前を付けて、メモリ上に格納しておく仕組みです。これによって、後からそのメモリに格納された値を参照できるようになります。


変数宣言
 bashにおいては、変数の宣言は特に必要ありません。
   <変数名>=<値>
とするだけで、自動的に変数になります。
 <変数名>=<値>という形式で記述さえすれば、もうそれだけで<変数名>とした文字列は、それ以降、変数となるのです。
 VBAにおいては、
   Dim myStr as string
と、変数の宣言を行って、それから、
  myStr = "gooSyun"
と、値の代入をします。
 ですから、Linuxを使う前、bashで変数を扱うようになるまでは、変数宣言は当然のことと思っていました。宣言が不要というは、最初のうちは、抵抗がありました。
 けど、そのうちに、「そんなもんだ。」と、慣れてきます。プログラミング言語ごとに、それぞれの流儀があるというわけです。


値の代入
 他のプログラミング言語と違い、イコール(=)記号の前後にスペースを入れてはいけません。
 bashにおいては、スペース区切りは特別な働きをする特殊文字ですから。つまり、スペース区切りの後ろの文字列はコマンドの引数と取り扱われるので、変数としているつもりの文字列がコマンドと解釈されてしまいます。
 その結果、「コマンドが見つかりません。」というエラー表示が出ます。「そのようなコマンドはありません。」というわけです。

 なお、bashでは、特別な記述をしない限り、変数に代入された値は文字列として扱われます。そのため、他のプログラミング言語と違って、代入する文字列を""等で囲む必要はありません。
 ただし、スペースを含む文字列を値として代入したい場合は、''(シングルクォーテーション)や、""(ダブルクォーテーション)で囲みます。''や""がエスケープ文字となり、スペースの特殊文字としての働きを無効化してくれます。


変数名
 変数名に利用できる文字列は、アルファベットと数字と、記号の「_」(アンダースコア)だけです。
 Linuxのシェルでは、環境変数を除いて、変数名のアルファベットは小文字だけを使用するのが一般のようで、大文字と小文字の組合せ(myStrのような変数名)はあまり使われない、とのことです。これも、それぞれの言語の流儀でしょう。


変数の参照
 最後は、「変数の参照」です。値を代入した変数をコマンドの引数などで使用するとき、代入値を参照する方法です。
 変数の値を参照するには、変数名の前に「$」を付けます。
  $ myname="goo Syun"
  $ echo $myname
という要領です。
 なお、変数の後ろに通常の文字列をつなげるには、変数名を{}で囲み、変数部分を明示的に指定する必要があります。
  $ echo 私の名前は${myname}です。
という要領です。
 少々面倒でも、{}の不要な場合であっても、変数参照時はいつも{}を付けるようにしておくと、分かりやすく、可読性が高まります。


おすすめできる入門書


それでは、また次の記事で
goosyun
名前:
コメント:

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

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

 

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

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

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