特殊文字のエスケープ

シャープ記号(#)、ドル記号($)は、インデックス ファイル内で特別な意味を持ちます。インデックス ファイル エントリ内でそのリテラル値を引き受けるには、これらの文字をエスケープする必要があります。
casp1032jp
シャープ記号(#)、ドル記号($)は、インデックス ファイル内で特別な意味を持ちます。インデックス ファイル エントリ内でそのリテラル値を引き受けるには、これらの文字をエスケープする必要があります。
シャープ記号(#)
インデックス ファイル内でシャープ記号(#)が出現することは、常にコメントの開始を示します。mkmm がインデックス ファイルを処理する際、行上のシャープ記号とそれに続く文字は無視されます。コメントの先頭としてのシャープ記号のインタプリタ処理を防ぐためには、シャープ記号を環境変数 ${PS} で置き換えます。これによって、mkmm がリテラル シャープ記号に展開します。
たとえば、インデックス ファイルの行
mm: Acme Router #2 Management Module
は、mkmm によって、エントリ「mm: Acme Router」にコメント「#2 Management Module」が続いているように解釈されます。一方、行
mm: Acme Router ${PS}2 Management Module
は以下のように展開されます。
mm: Acme Router #2 Management Module
ドル記号($)
$VAR、${VAR}、または $(VAR) のコンテキストにおけるドル記号は、環境変数の先頭を示します。mkmm がインデックス ファイルを処理する場合は、環境変数が展開され、区切っているドル記号は失われます。環境変数の一部としてのドル記号のインタプリタ処理を防ぐためには、記号を環境変数 ${DS} で置き換えます。これによって、mkmm がリテラル ドル記号に展開します。
環境変数 $VNUM が値「1.1」に設定され、mkmm が呼び出される前にエクスポートされると、インデックス ファイルの行
mm: Acme Router Version $VNUM
は、以下のように展開されます。
mm: Acme Router Version 1.1
一方、エントリ
mm: Acme Router Version ${DS}VNUM
は、以下のように展開されます。
mm: Acme Router Version $VNUM
上記の例では、環境変数の ${VAR} または $(VAR) 形式を使用して、直後のテキストから環境変数名を分離させています。たとえば、以下のインデックス ファイルの行
mm: Acme Router Version $VNUM
では、環境変数 $VNUM が展開されますが、以下のインデックス ファイルの行
mm: Acme Router Version ${V}NUM
では、環境変数 ${V} が展開され、NUM はリテラル値を保持します。