2017年10月31日 星期二

Bash Quoting

quoting 是引號的意思,有單引號「'」跟雙引號「"」,作用是跳脫特殊字元 (metacharacters, ...) 和保留字的解釋,或避免參數擴展。另外「\」也用來跳脫特殊字元,在此一併說明。
  • \<字元>:跳脫緊接著字元的特殊意義。除了「\<換行字元>」是連結到下一行,一般編輯器看到是行尾「\」,然後換了一行。
  • 單引號包起來:跳脫裡面所有字元及字的特殊意義。包括「\」,所以單引號無法巢狀使用。
  • 雙引號包起來:跳脫裡面所有字元及字的特殊意義,除了
    • 「$」及「`」的擴展仍進行
    • 「\」跳脫 $、`、"、\、<換行>
    • 「!」歷史擴展仍進行,但「\!」不進行歷史擴展。在 POSIX 模式「!」沒特殊意義。
    • 「*」及「@」.... (見 PARAMETERS).
雙引號可以藉由「\"」跳脫來巢狀使用

$'string':「$」後的單引號字串會轉換裡面的下列「\<字元>」成 ANSI C 標準字元,轉換後依照上述單引號方式解釋。
\<字元>轉換後字元
\aalert (bell)
\bbackspace
\e 或 \Eescape
\fform feed
\nnew line
\rcarriage return
\thorizontal tab
\vvertical tab
\\backslash
\'single quote
\"double quote
\nnn用 1 到 3 位十進位數字表示 8-bit 字元
\xHH用 1 到 2 位十六進位數字表 示8-bit 字元
\uHHHH用 1 到 4 位十六進位數字表示 Unicode (ISO/IEC 10646) 字元
\UHHHHHHHH用 1 到 8 位十六進位數字表示 Unicode (ISO/IEC 10646) 字元
\cxcontrol-x 字元
應用:Shell 工作完成自動發聲通知

$"string":「$」後的雙引號字串依據 locale 轉換,轉換後依照上述雙引號方式解釋。

延伸閱讀

沒有留言:

張貼留言

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...