quickie

Bash: ¿Cual es la diferencia entre las comillas dobles y simples?.

Debido a la consulta de un lector del blog decidimos hacer una entrada para explicar la diferencia entre comillas dobles ("), comillas simples (') y comillas invertidas [backticks] (`) en Bash.

Imágen de portada

Las comillas dobles ("") se usan para encerrar frases, generalmente se usan cuando tenemos que referirnos a un nombre de archivo o directorio que contiene espacios. Un par de ejemplos:

ls -l "Mis Documentos"

cat  "documento de texto con espacios.txt"

Lo que esté dentro de las comillas dobles se toma literalmente a excepción de los caracteres $ (sustitución de variable), ` (sustitución de comando) y \ (caracter de escape). Más ejemplos:

echo "$SHELL"

export TEST="`ls | wc -l`"

En el primer ejemplo el contenido de la variable SHELL es mostrado en el terminal, siendo el resultado "/bin/bash" porque estamos usando Bash o en su defecto la ruta del shell que se esté utilizando. En el segundo ejemplo se asigna dinamicamente a la variable TEST el resultado que devuelve el comando entre las comillas simples (en este caso la cantidad de archivos y directorios en el directorio actual).

Las comillas simples (') también se usan para encerrar frases sin embargo todo lo que esta dentro de las comillas simples es tomado literalmente.

echo '$SHELL'

El resultado sería:

$SHELL

Esta es la gran diferencia entre los tipos de comillas más importantes. Otro ejemplo:

echo 'las comillas "simples" cuidan a las dobles'

y devuelve

las comillas "simples" cuidan a las dobles

Las comillas invertidas (`) son interpretadas como sustitución de comandos, es decir, los comandos que estén dentro serán pasados al comando que lo preceden. Por ejemplo el comando:

echo "estoy en el directorio `pwd` y contiene `ls -d | wc -l` subdirectorios"

devuelve

estoy en el directorio /home/Documentos y contiene 3 subdirectorios

Basicamente eso sería todo, y como siempre en el mundo linux/unix para saber más hay que leer las páginas de man bash.



Comentarios