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

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

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

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

Linuxシェルスクリプトの特殊文字とエスケープ

 仕事から解放された週末、Ubuntu Linuxシェルスクリプトを学習し、「特殊文字」と「エスケープ」を覚えました。特殊文字エスケープについては、Webサイト上の解説を読んでも、なかなか頭に入ってきませんでした。

 そこで、以下のように、自分なりに整理してみました。





 シェルスクリプトでは、通常の文字列とは異なる、特別な働きをする(特別な役割を持つ)文字がいくつかあります。
 この文字を、特殊文字と言います。特殊記号とか、メタキャラクという言い方もします。
 ; & ( ) | ^ < > ? * [ ] $ ' " ` { } 改行 タブ スペース
などです。

 例えば、特殊文字の一つ「$」は、その後ろの文字列は変数名であるとシェルに解釈させ、変数に代入されている値に置き換える働きをします。

 しかし、場合によっては、特殊文字を通常の文字として扱ってもらいたいこともあります。
 このときに使うのが、クォーテーションです。クォーテーションには3つの種類があり、次のような使い方をします。
  バックスラッシュ(\)
   特殊文字の直前に「\」を置く
  シングルクォート(')
   特殊文字を含む文字列を「'」で囲む
  ダブルクォート(")
   特殊文字を含む文字列を「"」で囲む囲む
 これらのクォーテーションを使うと、特殊文字に特別な働きをさせることなく、特殊文字を通常の文字として扱うことができます。このように、特殊文字から特別な働きを奪うことを、「エスケープする」という言い方をします。


 上記の3つのクォーテーションは、それぞれ次のような機能、効力の違いがあります。

【1】バックスラッシュ「\」
 次の1文字を通常の文字として扱います。
 これは、「¥」キーで入力します。Windows上では円マーク(¥) が表示されますが、Linuxのターミナルでは「\」と表示されます。

【2】シングルクォーテーション「'」
 シングルクォーテーションは囲まれた文字列を普通の文字列として扱います。
 シングルクォーテーションは一番強力なもので、全ての特殊文字エスケープします。唯一の例外は、シングルクォーテーションで、シングルクォーテーションだけは、これでエスケープできません。

【3】ダブルクォーテーション「"」
 ダブルクォーテーションはほとんどの特殊文字エスケープしますが、
1 $
2 バッククォート(`)
3 バックスラッシュ(\)
この3つはの文字はエスケープすることができません。


補足
 バッククォートについて
 上記3つのクォーテーションと逆の働きをするのが、バッククォート(`)です。
 バッククォートは、囲まれた文字列にコマンドとしての役割を与えます。バッククォートで囲まれた文字列は、コマンドとして働き、その実行結果の文字列に置き換えます。




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