En la sección 3.1.2.3 titulada Double Quotes, el manual de Bash dice:
Encerrar caracteres entre comillas dobles ( '"') preserva el valor literal de todos los caracteres dentro de las comillas, con la excepción de '$', ''', '\', y, cuando la expansión de historia está activado, '!'.
Por el momento estoy preocupado con la comilla simple ( '
).
Su significado especial, descrito en la sección anterior, sección 3.1.2.2 es:
El encerrar caracteres entre comillas simples (
'
) conserva el valor literal de cada carácter dentro de las comillas. Una comilla simple no puede aparecer entre comillas simples, incluso cuando está precedida por una barra invertida.
Combinando las dos exposiciones,
echo "'$a'"
donde la variable a
no está definida (por lo tanto $a
= cadena nula), debe imprimirse $a
en la pantalla, ya que ''
, teniendo su significado especial en el interior, protegería $
de la interpretación especial. En cambio, se imprime ''
. ¿Porque?
’, ‘\’, and, when history expansion is enabled, ‘!’." in the manual. But now reading it again I realized the second character is not single quote, ("'") but tilde ("
"). I'Usted malinterpreta la documentación:
"Tener su significado especial" significa que se interpreta especialmente no literalmente. Las comillas simples previenen
$
de ser ampliado. Pero las comillas simples dentro de las comillas dobles son caracteres literales, es decir, no afectan nada. Si desea que la salida$a
entonces necesitaecho '$a'
.fuente