Il existe trois mécanismes de citation : le caractère d'évasion, les guillemets simples et les guillemets doubles.
Une barre oblique inversée non citée ( ** ) est le caractère d'évasion. Elle préserve la valeur littérale du caractère suivant, à l'exception de <newline>. Si une paire ** <newline> apparaît, et que la barre oblique inverse n'est pas elle-même citée, le ** <newline> est traité comme une continuation de ligne (c'est-à-dire qu'il est supprimé du flux d'entrée et effectivement ignoré).
Le fait de mettre les caractères entre guillemets simples préserve la valeur littérale de chaque caractère à l'intérieur des guillemets. Une apostrophe ne peut pas être placée entre des apostrophes simples, même si elle est précédée d'une barre oblique inversée.
Le fait de mettre les caractères entre guillemets doubles préserve la valeur littérale de tous les caractères entre guillemets, à l'exception de $, ` , ** , and, when history expansion is enabled, **!. The characters $ and ` qui conservent leur signification particulière entre guillemets doubles. La barre oblique inversée ne conserve sa signification particulière que lorsqu'elle est suivie de l'un des caractères suivants : $ , ` , “ , ** , ou **<newline>. Une double citation peut être citée entre guillemets en la faisant précéder d'une barre oblique inversée. Si elle est activée, l'expansion de l'historique sera effectuée à moins qu'un ! apparaissant entre guillemets doubles ne soit échappé par une barre oblique inversée. La barre oblique inversée précédant le ! n'est pas supprimée.
Les paramètres spéciaux * et @ ont une signification particulière lorsqu'ils sont entre guillemets (voir PARAMÈTRES ci-dessous).
Les mots de la forme $‘ string ’ sont traités spécialement. Le mot se développe en chaîne, les caractères en retrait étant remplacés comme spécifié par la norme ANSI C. Les séquences d'échappement backslash, si elles existent, sont décodées comme suit :
**\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**
Le résultat développé est indiqué par une seule citation, comme si le signe du dollar n'avait pas été présent.
Une chaîne de caractères à deux guillemets précédée du signe du dollar ( **$"** _string_ **"** ) entraînera la traduction de la chaîne de caractères selon la locale actuelle. Si la locale courante est **C** ou **POSIX** , le signe dollar est ignoré. Si la chaîne est traduite et remplacée, le remplacement se fait entre guillemets. **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
Le résultat développé est indiqué par une seule citation, comme si le signe du dollar n'avait pas été présent.
Une chaîne de caractères à deux guillemets précédée du signe du dollar ( $” string “ ) entraînera la traduction de la chaîne de caractères selon la locale actuelle. Si la locale courante est C ou POSIX , le signe dollar est ignoré. Si la chaîne est traduite et remplacée, le remplacement se fait entre guillemets.