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

2 comentarios en “La diferencia entre comillas y dobles comillas en el shell

  1. JO
    José Cerrejón hace 14 años

    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!

  2. SE
    Sebastian Dominguez hace 14 años

    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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *