A menudo veo tutoriales en la web o publicaciones en este sitio que hacen un uso intensivo de los siguientes caracteres en la línea de comandos. A menudo parece que se usan con fines bastante similares. ¿Cuáles son las diferencias entre ellos cuando se usan en la línea de comandos o para la programación de shell? ¿Para qué uso cuál de ellos?
" " double quotes
' ' single quotes
` ` backticks
command-line
bash
NES
fuente
fuente
\
siempre se trata literalmente cuando se incluye entre comillas simples, incluso si precede a a'
. Después de una apertura'
, la siguiente'
siempre se interpreta como la cita de cierre. Algo parecido a'
las comillas en una cadena entre comillas simples se puede lograr al finalizar las comillas, escapar'
individualmente y comenzar a citar nuevamente. Es decir, aunque\'
no funciona entre los'
caracteres iniciales y finales ,'\''
sí. (Vea la corrección de Gilles en una de mis publicaciones cuando cometí el mismo error para más detalles.)Esto se explica muy bien en la sección correspondiente del manual de bash. Brevemente, cualquier cosa entre comillas simples se interpreta literalmente. Así por ejemplo:
Compare eso con las versiones no citadas:
Las comillas dobles permiten la expansión variable (también la expansión del historial y algunas otras cosas). Básicamente, los usa cuando se trata de algo que desea ver ampliado. Por ejemplo:
En otras palabras, las comillas simples protegen completamente una cadena del shell, mientras que las comillas dobles protegen algunas cosas (espacios, por ejemplo) pero permiten que las variables y los caracteres especiales se expandan / interpreten correctamente.
fuente
Las comillas simples (
''
) se utilizan para preservar el valor literal de cada carácter encerrado dentro de las comillas.Usando comillas dobles (
""
), se conserva el valor literal de todos los caracteres encerrados, excepto el signo de dólar ($
), las comillas (comillas simples hacia atrás``
) y la barra invertida (\
).Cuando se incluye dentro de back-ticks (
``
), el shell interpreta algo que significa "la salida del comando dentro de los back-ticks". Esto se conoce como "sustitución de comando", ya que la salida del comando se sustituye por el comando en sí.referencias:
fuente
Las comillas simples evitan la expansión variable, mientras que las comillas dobles lo permiten.
fuente
Solo estoy hablando en general pero:
""
- Se utiliza para procesar cierta información dentro de ellos antes de la salida. (Como en PHP).name=NESS; echo "Hello my name is $name"
generará:Hello my name is NESS
''
- Se usa para mostrar la salida tal como es. (También como en PHP).Hello my name is $name
Entonces, la diferencia entre comillas dobles y simples es que las comillas dobles procesan la variable y muestran el valor, mientras que las comillas simples muestran el nombre de la variable sin procesamiento.
``
- Se utiliza para citar comandos que luego se asignan a otra variable.fuente
Las comillas simples encierran un valor que debe tomarse literalmente: se suprimen todos los tipos de expansión. Por lo general se utiliza si el valor incluye o puede incluir espacios en blanco (espacio, tabulador, nueva línea), o caracteres especiales (
$
,\
,`
) que el usuario no desea ser ampliado / especialmente tratado por la cáscara.Las comillas dobles encierran un valor que tendrá variables y se realizará el reemplazo de caracteres. Se requiere cuando la salida puede contener espacios en blanco y debe asignarse como un valor único.
Las comillas posteriores encierran un comando, cuyos resultados se desean como valor. Conchas más nuevas permiten el uso de
$(...)
en lugar de`...`
. Prefiero el método más nuevo.El siguiente código puede ayudar a comprender lo que está sucediendo.
fuente