PR
 シェル・スクリプト・リファンレス
コマンド集(機能別) | コマンド集(アルファベット順) | コマンド逆引き大全 | シェル・スクリプト・リファンレス

 メタ文字の取り扱い

 シェルではいくつかの記号について,特殊な意味を持っているものがある。たとえば,スペースはファイルの区切りとして利用されている。「My Document」というファイルを表示したい場合に,


$ cat My Document 

としてしまうと,「My」と「Document」の2つのファイルを表示しようとしてしまう。

 これらシェルで予約されている記号(メタ文字)や改行といったエスケープ・シーケンスを使いたい場合は,文字列をクォーテイション("や')記号でくくったり,メタ文字の前にバックスラッシュ(\)記号を付ける。

 前述した例では,


$ cat "My Document" 
$ cat 'My Document' 
$ cat My\ Document 

のように表記できる。

 メタ文字は以下の通のようなものがある。


"  $  @  &  '  (  )  ^  |  [  ]  {  }  ;  *  ?  <  >  `  \  スペース
改行,タブといったエスケープ・シーケンス


 バック・スラッシュ(\)

 メタ文字を表示したい場合は,メタ文字の前にバック・スラッシュ(\)を付ける。たとえば,「$100」と表示したい場合は,


$ echo \$100 
$100

のようにする。また,複数のメタ文字がある場合は,それぞれのメタ文字の前にバック・スラッシュを付ける。例えば,「A&B : $10」と表示したい場合は,「&」と「$」,スペースのそれぞれの前にバック・スラッシュを付ける。


$ echo A\&B\ :\ \$10 
A&B : $10

 バック・スラッシュ自身を表したい場合はバック・スラッシュを2つ並べて記述する。


$ echo \\ 
\


 シングル・クォーテイション(')

 メタ文字を多く利用する場合は,多数のバック・スラッシュを使うことになり,見にくくなってしまう。シングル・クォーテイション(')記号でくくると,くくられた中のメタ文字は特殊な意味を持たなくなり,スクリプトもすっきりと表記できる。たとえば,「A&B : $10」であれば,


$ echo 'A&B : $10' 
A&B : $10

とすればよい。

 また,シングル・クォーテイションのみは特殊な意味を持っているため,シングル・クォーテイション内にシングル・クォーテイションを記述することはできない。


 ダブル・クォーテイション(")

 ダブル・クォーテイション(")にくくられた場合も,メタ文字は特殊な意味を持たなくなる。ただし,以下のメタ文字については特殊な意味を保持し続ける。


"  $  `  \

 これらのメタ文字を表記したい場合は,メタ文字の前にバック・スラッシュを付ける必要がある。たとえば,「My "Fantastic" Car : $2000」と表記したい場合は,


$ echo "My \"Fantastic\" Car : \$2000" 
My "Fantastic" Car : $2000

とする。


 エスケープ・シーケンス

 コンピュータでは改行やタブといった目で見える形で表せない文字がある。これらの文字を取り扱いたい場合は,エスケープ・シーケンスを利用する。エスケープ・シーケンスには以下のようなものがある。


エスケープ・シーケンス 意味
\a ベルを鳴らす
\b バック・スペース
\e エスケープ文字
\f フォーム・フィールド文字
\n 改行
\r 復帰
\t 水平タブ
\v 垂直タブ
\数字 指定したASCIIコードの文字。数字は8進数3桁で表記する
\x数字 指定したASCIIコードの文字。数字は16進数3桁で表記する

 エスケープ・シーケンスを利用すれば,1行で複数行を表すこともできる。


$ echo -e "Fukuda\t: PlanA\nAso\t: PlanB" 
Fukuda  : PlanA
Aso     : PlanB

 この場合は,エスケープ・シーケンスにタブ「\t」と改行「\n」を利用している。また,echoでエスケープ・シーケンスを使う場合は「-e」オプションを付ける。