シェル・プログラミング:3. メタ文字からのエスケープ

 シェルはメタ文字を先ず解釈し処理するわけですが (第1項参照),その解釈からエスケープする方法があります。

■メタ文字よりのエスケープ
 'meta', "\meta"

##########
#  例 6
##########
#!/bin/sh

var=Test
echo $var
echo '$var'
echo '\$var'
echo "$var"
echo "\$var"
実行結果)
% sh script
Test    (変数 var に値が代入され,それを表示)
$var    (メタ文字 $ をエスケープ)
\$var   (メタ文字 \ も $ もエスケープ)
Test    (1行目と同じ処理)
$var    ($ をエスケープ)
%

ダブル・クウォーテイション内では,$,\,`command` の3つをメタ文字と解釈します。すなわち,ダブル・クウォーテイション内ではそれら3つからのエスケープはできません。しかしながら,例6より,$\ を解釈し,バックスラッシュ (\) がダブル・クウォーテイション内でのエスケープに使えることが分かります。

##########
#  例 7
##########
#!/bin/sh

var='ls | wc -w'   # ` ではなく '.
echo "'$var' gives us the number of files: `ls | wc -w`"
実行例)
% sh script
'ls | wc -w' gives us the number of files: 6

(" 内では ' を解釈しない。`command` は解釈。)