Existen tres mecanismos de entrecomillado: el carácter escape, las comillas simples y las comillas dobles.
Una barra invertida no entrecomillada ( ** ) es el carácter de escape. Conserva el valor literal del siguiente carácter, con la excepción de la barra invertida. Si aparece un par ** <newline>, y la barra invertida no está entrecomillada, el ** <newline> se trata como una continuación de línea (es decir, se elimina del flujo de entrada y se ignora efectivamente).
Al encerrar los caracteres entre comillas simples se mantiene el valor literal de cada carácter dentro de las comillas. Una comilla simple no puede aparecer entre comillas simples, incluso si va precedida de una barra invertida.
Al encerrar los caracteres entre comillas dobles se conserva el valor literal de todos los caracteres entre las comillas, con la excepción de $ , ` , ** , and, when history expansion is enabled, **!. The characters $ and ` que conservan su significado especial dentro de las comillas dobles. La barra invertida sólo conserva su significado especial cuando va seguida de uno de los siguientes caracteres: $ , ` , “ , \N , o . Una comilla doble puede ser citada dentro de comillas dobles precediéndola de una barra invertida. Si se activa, la expansión del historial se realizará a menos que un ! que aparezca entre comillas dobles se escape con una barra invertida. La barra invertida que precede al ! no se elimina.
Los parámetros especiales * y @ tienen un significado especial cuando aparecen entre comillas dobles (véase PARÁMETROS más adelante).
Las palabras de la forma $‘ cadena ’ se tratan de forma especial. La palabra se expande a cadena, con los caracteres de barra invertida reemplazados según lo especificado por el estándar ANSI C. Las secuencias de escape de barra invertida, si están presentes, se decodifican como sigue:
**\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**
El resultado expandido está entre comillas simples, como si el signo de dólar no hubiera estado presente.
Una cadena entre comillas dobles precedida por un signo de dólar ( **$"** _string_ **"** ) hará que la cadena se traduzca según la configuración regional actual. Si la configuración regional actual es **C** o **POSIX** , el signo de dólar se ignora. Si la cadena se traduce y se reemplaza, el reemplazo es de doble comilla. **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
El resultado expandido está entre comillas simples, como si el signo de dólar no hubiera estado presente.
Una cadena entre comillas dobles precedida por un signo de dólar ( $” string “ ) hará que la cadena se traduzca según la configuración regional actual. Si la configuración regional actual es C o POSIX , el signo de dólar se ignora. Si la cadena se traduce y se reemplaza, el reemplazo es de doble comilla.