Er zijn drie aanhalingstekens: het escape teken, enkele aanhalingstekens, en dubbele aanhalingstekens.
Een backslash zonder aanhalingstekens ( **** ) is het escape-teken. Het behoudt de letterlijke waarde van het volgende teken dat volgt, met uitzondering van <newline>. Als een ** ** <newline> paar verschijnt, en de backslash is zelf niet geciteerd, dan wordt de ** ** <newline> behandeld als een regelvoortzetting (dat wil zeggen, het wordt verwijderd uit de invoerstroom en effectief genegeerd).
Als u tekens tussen enkele aanhalingstekens zet, blijft de letterlijke waarde van elk teken binnen de aanhalingstekens behouden. Een enkel aanhalingsteken mag niet tussen enkele aanhalingstekens staan, zelfs niet als het wordt voorafgegaan door een backslash.
Tekens tussen dubbele aanhalingstekens behouden de letterlijke waarde van alle tekens binnen de aanhalingstekens, met uitzondering van $ , ` , ** , and, when history expansion is enabled, **!. The characters $ and ` behouden hun speciale betekenis binnen dubbele aanhalingstekens. De backslash behoudt zijn speciale betekenis alleen wanneer deze wordt gevolgd door een van de volgende tekens: $ , ` , “ , **** , of . Een dubbel aanhalingsteken kan binnen dubbele aanhalingstekens worden aangehaald door het vooraf te laten gaan door een backslash. Indien ingeschakeld, zal de geschiedenis worden uitgebreid tenzij een ! tussen dubbele aanhalingstekens wordt ge-escaped met een backslash. De backslash die aan de ! voorafgaat, wordt niet verwijderd.
De speciale parameters ***** en @ hebben een speciale betekenis wanneer ze tussen dubbele aanhalingstekens staan (zie PARAMETERS hieronder).
Woorden van de vorm $‘ string ’ worden speciaal behandeld. Het woord wordt uitgebreid tot string, waarbij backslash-geëscaped tekens worden vervangen zoals gespecificeerd door de ANSI C standaard. Backslash escape sequenties, indien aanwezig, worden als volgt gedecodeerd:
**\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**
Het uitgebreide resultaat is enkel aanhalingstekens, alsof het dollarteken niet aanwezig was.
Een tekenreeks met dubbele aanhalingstekens, voorafgegaan door een dollarteken ( **$"** _string_ **"** ), zorgt ervoor dat de tekenreeks wordt vertaald volgens de huidige locale. Als de huidige locale **C** of **POSIX** is, wordt het dollarteken genegeerd. Als de tekenreeks wordt vertaald en vervangen, wordt de vervanging dubbel geciteerd. **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
Het uitgebreide resultaat is enkel aanhalingstekens, alsof het dollarteken niet aanwezig was.
Een tekenreeks met dubbele aanhalingstekens, voorafgegaan door een dollarteken ( $” string “ ), zorgt ervoor dat de tekenreeks wordt vertaald volgens de huidige locale. Als de huidige locale C of POSIX is, wordt het dollarteken genegeerd. Als de tekenreeks wordt vertaald en vervangen, wordt de vervanging dubbel geciteerd.