Página siguiente Página anterior Índice general

4. Comillas

El uso de las comillas en la programación en shell es un tema bastante importante. En los lenguajes de alto nivel normalmente las comillas sólo se utilizan para las ristras, y no necesitan un aprendizaje especial para usarlas: simplemente saber (en el lenguaje C, por ejemplo) que las comillas simples son caracteres y que las comillas dobles requieren reservar memoria, porque son ristras, o sea, punteros a caracteres.

4.1 Tres tipos de comillas

En la programación en shell en UNIX hay tres tipos de comillas útiles: La comilla simple ('), la comilla doble (") y la comilla invertida (`). Cada una tiene un propósito diferente, y se deben saber usar todas bien.

La comilla simple (') sirve para coger literales. Es importante darse cuenta de que algo encerrado entre comillas simples siempre es un solo parámetro, aunque sea una ristra vacía ('').

La comilla doble sirve para sustituir lo que hay dentro (valores de variables, caracteres especiales), pero después de sustituir queremos tratarlo como si estuviera encerrado entre comillas simples. Esto es útil cuando, por ejemplo, tenemos que dar un parámetro a un programa, pero ese parámetro es leído del teclado y no sabemos si la ristra es vacía. Si nos tenemos que asegurar de que se trata como un parámetro, tendríamos que encerrarlo entre comillas simples (recordemos que '' sigue siendo un parámetro, aunque vacío), pero si lo encerramos entre comillas simples no se sustituirá la variable. La forma de hacerlo es encerrando la variable entre comillas dobles.

Veamos esto en el siguiente ejemplo:

        x=100
        y='500$x'
        echo $y         # Esto enseñará `500$x' en pantalla
        y="500$x"
        echo $y         # Esto enseñará `500100' en pantalla

Las que quedan son las comillas invertidas (`). Estas se utilizan con órdenes, y se sustituyen por la salida del programa que está entre las comillas invertidas. Por ejemplo, si queremos almacenar en una variable el número de usuarios que hay actualmente en el sistema, podemos hacer

        usuarios=`who | wc -l`

Por si queda alguna duda, who dice los usuario que hay en el sistema, poniendo uno en cada línea, y wc -l cuenta las líneas que tiene el texto que le entre por la entrada estándar, sacando el número resultante a la salida.

4.2 Separadores de parámetros

Hay otras razones para desear poner parámetros encerrados entre comillas simples o dobles: si queremos el literal exacto del contenido de una variable.

Si una variable (por ejemplo, porque se le ha asignado la salida estándar de un programa) contiene saltos de línea, y no ponemos comillas, entonces el intérprete lo entenderá como que esos saltos de línea son separadores de parámetros, y por ejemplo el echo los separará con un espacio. Tendremos un problema parecido si ponemos más de un espacio para separar los parámetros:

        x='10     y 5 espacios'
        echo $x         # Saldrá en pantalla '10 y 5 espacios'
        echo `$x'       # Saldrá en pantalla `$x'
        echo "$x"       # Saldrá en pantalla '10     y 5 espacios'

¿Queda claro? Pues eso.


Página siguiente Página anterior Índice general