シェル・スクリプト・リファンレス |
コマンド集(機能別) | コマンド集(アルファベット順) | コマンド逆引き大全 | シェル・スクリプト・リファンレス |
メタ文字の取り扱い |
シェルではいくつかの記号について,特殊な意味を持っているものがある。たとえば,スペースはファイルの区切りとして利用されている。「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」オプションを付ける。
関連事項 |
echo,文字列の表示 |