La diferencia entre comillas y dobles comillas en el shell

Ayer leí un interesante artículo en How-To Geek, sobre el uso de comillas y dobles comillas, que es muy esclarecedor para todos aquellos que hacemos un uso frecuente del terminal, y que vamos aprendiendo a base de teclado y lo que vamos leyendo aquí y allá, sin el uso de ningún manual (craso error).

Esto me lleva a reproducirlo más o menos, con algunos ejemplos adicionales, y mis propias pruebas e interpretaciones.

Entrecomillado de texto

Si lo que entrecomillas es simplemente texto, da lo mismo como lo hagas, es exactamente igual:


mkdir "esto es una prueba"
mkdir 'esto es una prueba'

ambas instrucciones crearan un directorio llamado “esto es una prueba”. Otra manera de hacer la misma operación es:


mkdir esto\ es\ una\ prueba

Expansión de variables

La diferencia entre el encomillado sencillo y doble toma su importancia cuando tratamos con variables en la línea de comando, de forma que el shell expande una variable en su contenido cuando se ejecuta, es decir:


prueba="Esto es una prueba"

Ahora ya puedes utilizar esta variable en la línea de comandos, de forma que cuando tu ejecutes este comando:


echo $prueba

El terminal te devolverá: Esto es una prueba

Aquí es donde se puede ver la diferencia entre comillas y dobles comillas. Si ejecutas:


echo '$prueba'

el terminal de devoverá: $prueba

Sin embargo ejecutando:


echo"$prueba"

lo que te devolverá el terminal será: Esto es una prueba

En pocas palabras con las dobles comillas se sustituye la variable por su contenido

Un paso más allá, ejecución de comandos

Sin embargo, cuando utilizas ` lo que haces es ejecutar un comando en otro comando, por ejemplo si quieres utilizar el comando “pwd” en otro comando, deberías hacerlo de esta manera:


echo `pwd`/prueba

que en el caso de estar en mi directorio,  daría como resultado: /home/atareao/prueba

Este mismo resultado lo puedes obtener ejecutando esta línea:


echo "`pwd`/prueba"

donde hemos “envuelto” todo entre dobles comillas, sin embargo si lo hacemos con simples comillas encotraremos como salida `pwd`/prueba

Resumiendo

  • Dobles comillas
    • Usar dobles comillas cuando se encierran variables o se utilizan comandos envueltos en “
    • Todos los carácteres se intrepetan tal y como son, excepto $ y ` que serán expandidos en el shell
  • Simples comillas
    • Todos los caracteres son interpretados como una tal y como son

Vía | How-To Geek

Si te ha gustado el artículo, apúntate y te mantendré actualizado sobre el que es el mejor sistema operativo. Te mostraré como mejorar tu entorno de trabajo y conseguir ser mucho mas productivo

Publicado en la categoría... Ubuntu y su entorno de escritorio Unity
Etiquetado como...
  • Tan sólo aclarar que en el mundo de la programación, es igual, así que los que programen en PHP u otro lenguaje, este tutorial les enseñará la diferencia entre comillas simples y dobles. Gracias!

  • Muy buena aclaración. Creo que a muchos les servirá.

    En el caso de ejecutar un comando dentro de otro, o simplemente deseamos capturar su salida, creo que es mucho mas claro usar $(comando). Pej:
    echo $(ls)
    es una forma rebuscada de listar los directorios. Otro posible ejemplo:
    Fecha=$(date)
    echo “Son las $Fecha”
    Aunque también podía hacerse sin la variable intermedia.

    Por cierto, me gusto mucho el sitio