そこで、以下のように、自分なりに整理してみました。
シェルスクリプトでは、通常の文字列とは異なる、特別な働きをする(特別な役割を持つ)文字がいくつかあります。
この文字を、特殊文字と言います。特殊記号とか、メタキャラクタという言い方もします。
; & ( ) | ^ < > ? * [ ] $ ' " ` { } 改行 タブ スペース
などです。
例えば、特殊文字の一つ「$」は、その後ろの文字列は変数名であるとシェルに解釈させ、変数に代入されている値に置き換える働きをします。
しかし、場合によっては、特殊文字を通常の文字として扱ってもらいたいこともあります。
このときに使うのが、クォーテーションです。クォーテーションには3つの種類があり、次のような使い方をします。
バックスラッシュ(\)
特殊文字の直前に「\」を置く
シングルクォート(')
特殊文字を含む文字列を「'」で囲む
ダブルクォート(")
特殊文字を含む文字列を「"」で囲む囲む
これらのクォーテーションを使うと、特殊文字に特別な働きをさせることなく、特殊文字を通常の文字として扱うことができます。このように、特殊文字から特別な働きを奪うことを、「エスケープする」という言い方をします。
上記の3つのクォーテーションは、それぞれ次のような機能、効力の違いがあります。
【1】バックスラッシュ「\」
次の1文字を通常の文字として扱います。
これは、「¥」キーで入力します。Windows上では円マーク(¥) が表示されますが、Linuxのターミナルでは「\」と表示されます。
【2】シングルクォーテーション「'」
シングルクォーテーションは囲まれた文字列を普通の文字列として扱います。
シングルクォーテーションは一番強力なもので、全ての特殊文字をエスケープします。唯一の例外は、シングルクォーテーションで、シングルクォーテーションだけは、これでエスケープできません。
【3】ダブルクォーテーション「"」
ダブルクォーテーションはほとんどの特殊文字をエスケープしますが、
1 $
2 バッククォート(`)
3 バックスラッシュ(\)
この3つはの文字はエスケープすることができません。2 バッククォート(`)
3 バックスラッシュ(\)
【補足】
バッククォートについて
上記3つのクォーテーションと逆の働きをするのが、バッククォート(`)です。
バッククォートは、囲まれた文字列にコマンドとしての役割を与えます。バッククォートで囲まれた文字列は、コマンドとして働き、その実行結果の文字列に置き換えます。
それでは、また次の記事で
■■■■ goosyun ■■■■