パソコン悪戦苦闘記録

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

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

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





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

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

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


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

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

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

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


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




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

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

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

 

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

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

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