シェル・プログラミング: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` は解釈。)