シェルのクォート
ダブルクォート内のバックスラッシュによるクォートのルールは、C由来のクォート規則と異なる。\\newlineの箇所は原文が誤っているように思う。
The following characters have a special meaning to the shell and cause termination of a word unless quoted.
; & ( ) | ^ < > newline space tabA character may be quoted by preceding it with a \. \\newline is ignored. All characters enclosed between a pair of quote marks (''), except a single quote, are quoted. Inside double quotes ("") parameter and command substitution occurs and \ quotes the characters \ ` " and $.
Manual Page - sh(1)下記の文字はシェルにとって特別な意味を持ち、クォートされていなければワード終端を引き起こす。
; & ( ) | ^ < > newline space tab任意の文字は先行する\によってクォートされうる。\\newlineは無視される。シングルクォートで囲まれた、シングルクォートを除くすべての文字はクォートされる。ダブルクォート内ではパラメータ置換及びコマンド置換が行われ、\は\ ` " $をクォートする。
bash(1)のほうが判りやすい。それにしても、クォートにあてる良い訳語はないものかな。
ダブルクォートで文字を囲むとクォート内部の全ての文字は文字としての値を保持しますが、$, `, \は例外となります。$と`はダブルクォートの内部でも特殊な意味を失いません。バックスラッシュの場合は、次の文字が$, `, ", \,
http://www.linux.or.jp/JM/html/GNU_bash/man1/bash.1.html#lbAQのいずれかである場合に限り特殊な意味を失いません。前にバックスラッシュを付ければ、ダブルクォート文字をダブルクォートによるクォートの内部でクォートできます。
たとえば、シェルスクリプトのディレクトリを完全パスで取得したいとする。パスが空白を含む場合を考えると、下記の二行を一行にまとめることは相当面倒だ。
here=`dirname "$0"` here=`(cd "$here" && pwd)`
dirnameの可搬性についてはhttp://www.geocities.jp/fut_nis/html/autoconf-ja/Limitations-of-Usual-Tools.htmlを参照。