Página principal » cómo » ¿Cuál es la diferencia entre las cotizaciones simples y dobles en la Bash Shell?

    ¿Cuál es la diferencia entre las cotizaciones simples y dobles en la Bash Shell?

    Incluir texto entre comillas es una práctica bastante estándar en la línea de comandos, especialmente cuando se trata de archivos que tienen espacios en los nombres, pero ¿cómo sabe si usar comillas simples o dobles? Echemos un vistazo a la diferencia, y cuándo deberías usar una frente a la otra..

    La regla general es que las comillas dobles todavía permiten la expansión de variables dentro de las comillas, y las comillas simples no lo hacen. Sigue leyendo.

    Citas con texto simple

    Si simplemente estás adjuntando algunas palabras de texto, realmente no importa cuál uses, ya que ambas funcionarán exactamente igual. Por ejemplo, estos dos comandos crearán un directorio llamado Test Directory:

    mkdir "Directorio de prueba"
    mkdir 'Directorio de prueba'

    Los tipos más experimentados probablemente notarán que también podría usar mkdir Test \ Directory si quisiera.

    Expansión de la Variable de Shell

    La diferencia entre comillas simples y dobles se vuelve más importante cuando se trata de variables en la línea de comandos de manera predeterminada, bash expandirá una variable como $ test en la cadena completa. Primero, le asignaremos la variable:

    prueba = "Esto es una prueba"

    Ahora puede usar esta variable en la línea de comando, como esta, que simplemente debería mostrar Esto es una prueba a la consola:

    prueba de $ echo

    Aquí es donde la diferencia entre comillas dobles y simples se hace más clara: cuando se usan comillas simples, las variables no se expandirán. Por ejemplo, si ejecuta este comando:

    echo '$ test'

    No verá más que '$ test' en la línea de comando cuando use comillas simples, pero se mostrará correctamente cuando use comillas dobles:

    Lo mismo funciona cuando usa el carácter 'para expandir un comando en la línea de comandos. Por ejemplo, digamos que querías usar el pwd comando desde dentro de otro comando: usaría backticks para decirle al shell que lo expanda:

    echo 'pwd' / prueba

    Si estuvieras en tu carpeta de inicio verías una salida que se veía así:

    / home / geek / test

    Digamos, por ejemplo, que se encuentra en una carpeta que tiene un espacio en la ruta y desea utilizar el comando ln para crear un enlace simbólico a un archivo en el directorio actual. Por lo general, debe especificar la ruta completa al usar el comando ln, por lo que es mucho más fácil usar 'pwd' para guardar la escritura.

    Mira lo que sucede cuando intentas y usas el comando sin encerrarlo entre comillas:

    ln -s 'pwd' / test / home / geek / linkedname

    En su lugar, tendrá que rodear entre comillas:

    ln -s "'pwd' / filename" / algo / otro / ruta

    Para un ejemplo más concreto, supongamos que tenemos una estructura de carpetas como este ejemplo, donde todos los nombres de archivos tienen espacios en ellos:

    Como el comando Unzip no admite el uso de * para ejecutarlo en todos los archivos, deberá usar el comando for en su lugar. Aquí es donde las cosas se ponen interesantes:

    para f en * .zip; descomprima $ f; hecho

    Ups! Parece que no funcionó.

    Lo que tendremos que hacer en su lugar es usar comillas dobles alrededor de la variable $ f, como esto:

    para f en * .zip; descomprima "$ f"; listo

    Ahora, cada vez que el comando for atraviesa el bucle, se ejecuta un comando como este:

    descomprimir "prueba 1.zip"

    Por supuesto, se realizaría un ciclo y ejecutaría un comando similar para cada archivo en el directorio.

    Revisemos

    Ahora que hemos revisado los ejemplos, los revisaremos rápidamente en caso de que no los haya visto:

    Doble comillas

    • Úselo cuando desee encerrar variables o usar la expansión de shell dentro de una cadena.
    • Todos los caracteres se interpretan como caracteres normales, excepto por $ o ', que se expandirán en el shell.

    Comillas simples

    • Todos los caracteres dentro de comillas simples se interpretan como un carácter de cadena.

    Y así termina la lección de las citas. Úsalos sabiamente.