(1 respuesta)
Cerrado hace 2 años .
Solía usar ''
y ""
(comillas simples y dobles) indistintamente en la línea de comando, pero recientemente noté que '$HOME/some/dir'
no se expande, mientras que "$HOME/some/dir"
es. Busqué un poco y encontré que ""
permite algunos protección de caracteres especiales, mientras que ''
permite una protección completa. Entonces, ¿qué otros caracteres están protegidos por ''
? y no ""
?
EDITAR:¿Qué son prácticos situaciones en las que estas diferencias pueden ser significativas?
Respuesta aceptada:
Eche un vistazo a la página de manual de bash. Hay una sección completa sobre citas. Debido a que tiene licencia bajo GFDL, que no es compatible con la licencia CC-BY-SA que se usa aquí, no citaré todo, pero realmente leer esa es la respuesta más definitiva.
En resumen, las comillas simples detienen toda interpretación:la cadena se representa literalmente. Las comillas dobles dejan $
(signo de dólar), ` (comilla inversa) como especial y (barra invertida) como especial cuando va seguido de otros caracteres determinados. ¡Y
!
se tratará de manera especial si la función de expansión del historial está habilitada (lo cual es predeterminado).
En el uso práctico, el $
es el gran problema, ya que a menudo uno puede querer las diversas expansiones que permite (variables y más), al tiempo que evita que el shell confunda la mayor parte de la línea de comandos.