シェル解析レベルでエスケープ文字について話すのではないことを明確にしたいと思います。
私が知る限り、エスケープすべき文字は2つだけです%
。\
テキストを印刷するには、%
前のエスケープ文字を使用する必要があります%
。
printf '%%'
リテラルを印刷するには、\
前のエスケープを使用する必要があります\
。
printf '\\'
エスケープ文字を文字通り解釈しなければならない他の状況はありますか?
ベストアンサー1
型パラメータの中で、および文字printf
のみが特別です(POSIXに従って特別ではなく指定されていません)。%
\
"
\"
しかし、重要メモ。
ほとんどの実装では、
printf
およびのバイト値は特別であり、POSIX仕様はユーティリティがたとえばC関数へのインタフェースになるように要求するため、これを要求すると解釈されることもあります。\
%
printf
printf(3)
wprintf(3)
%.3s
3文字ではなく3バイトに減らす必要があります。)。BIG5やGB18030などの一部の文字エンコーディングには、バックスラッシュを含む数百の文字があります。脱出するそのような場合は、対応する文字
printf
エンコーディングの各バイトの前に挿入する必要があります\
。0x5c
たとえば、
zh_HK.big5hkscs
(香港)ロケールで使用されるBIG5-HKSCSでは、Ěαжふ㘘㙡䓀䨵䪤么佢俞偅傜兝功吒吭园坼垥塿墦声娉娖娫嫹嬞孀尐岤崤幋廄惝愧揊擺暝枯柦槙檝歿汻沔涂淚滜潿瀙瀵焮燡牾狖獦珢珮琵璞疱癧礒稞穀笋箤糭綅縷罡胐胬脪苒茻莍蓋蔌蕚螏螰許豹贕赨跚踊蹾躡鄃酀酅醆鈾鎪閱鞸餐餤駹騱髏髢髿鱋鱭黠﹏