Es gibt drei Quoting-Mechanismen: das escape-Zeichen, einfache Anführungszeichen und doppelte Anführungszeichen.
Ein nicht in Anführungszeichen gesetzter Backslash ( ** ) ist das escape-Zeichen. Es bewahrt den literalen Wert des nächsten Zeichens, das folgt, mit Ausnahme von <Newline>. Wenn ein ** <newline>-Paar erscheint und der Backslash selbst nicht in Anführungszeichen steht, wird der ** <newline> als Zeilenfortsetzung behandelt (d. h. er wird aus dem Eingabestrom entfernt und effektiv ignoriert).
Durch das Einschließen von Zeichen in einfache Anführungszeichen bleibt der literale Wert jedes Zeichens innerhalb der Anführungszeichen erhalten. Ein einfaches Anführungszeichen darf nicht zwischen einfachen Anführungszeichen stehen, auch wenn ein umgekehrter Schrägstrich vorangestellt ist.
Das Einschließen von Zeichen in doppelten Anführungszeichen behält den literalen Wert aller Zeichen innerhalb der Anführungszeichen bei, mit Ausnahme von $ , ` , ** , and, when history expansion is enabled, **!. The characters $ and `, die ihre besondere Bedeutung innerhalb von doppelten Anführungszeichen behalten. Der Backslash behält seine besondere Bedeutung nur, wenn er von einem der folgenden Zeichen gefolgt wird: $ , ` , “ , ** , oder **<newline>. Ein doppeltes Anführungszeichen kann innerhalb von doppelten Anführungszeichen zitiert werden, indem ihm ein umgekehrter Schrägstrich vorangestellt wird. Wenn diese Option aktiviert ist, wird die Historienexpansion durchgeführt, es sei denn, ein !, der in doppelten Anführungszeichen erscheint, wird mit einem Backslash escaped. Der Backslash vor dem ! wird nicht entfernt.
Die speziellen Parameter * und @ haben eine besondere Bedeutung, wenn sie in doppelten Anführungszeichen stehen (siehe PARAMETER unten).
Wörter der Form $‘ string ’ werden speziell behandelt. Das Wort wird zu string expandiert, wobei Zeichen mit Backslash-Escape-Sequenzen gemäß dem ANSI C-Standard ersetzt werden. Backslash-Escape-Sequenzen, falls vorhanden, werden wie folgt dekodiert:
**\a** alert (bell) **\b** backspace **\e**** \E **an escape character** \f **form feed** \n **new line** \r **carriage return** \t **horizontal tab** \v **vertical tab** \ **backslash**
Das expandierte Ergebnis steht in einfachen Anführungszeichen, als ob das Dollarzeichen nicht vorhanden gewesen wäre.
Eine Zeichenkette in doppelten Anführungszeichen, der ein Dollarzeichen ( **$"** _string_ **"** ) vorangestellt ist, bewirkt, dass die Zeichenkette entsprechend dem aktuellen Gebietsschema übersetzt wird. Wenn das aktuelle Gebietsschema **C** oder **POSIX** ist, wird das Dollarzeichen ignoriert. Wenn die Zeichenfolge übersetzt und ersetzt wird, wird die Ersetzung in Anführungszeichen gesetzt. **single quote** \" **double quote** \**_nnn_ the eight-bit character whose value is the octal value _nnn_ (one to three digits)**\x**_HH_ the eight-bit character whose value is the hexadecimal value _HH_ (one or two hex digits)**\u**_HHHH_ the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value _HHHH_ (one to four hex digits)**\U**_HHHHHHHH_ the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value _HHHHHHHH_ (one to eight hex digits)**\c**_x_ a control-_x_ character
Das expandierte Ergebnis steht in einfachen Anführungszeichen, als ob das Dollarzeichen nicht vorhanden gewesen wäre.
Eine Zeichenkette in doppelten Anführungszeichen, der ein Dollarzeichen ( $” string “ ) vorangestellt ist, bewirkt, dass die Zeichenkette entsprechend dem aktuellen Gebietsschema übersetzt wird. Wenn das aktuelle Gebietsschema C oder POSIX ist, wird das Dollarzeichen ignoriert. Wenn die Zeichenfolge übersetzt und ersetzt wird, wird die Ersetzung in Anführungszeichen gesetzt.