read con Bash

Comando read para Linux

Con el comando read de Linux podemos leer la entrada de un usuario desde la terminal y asignarla a una variable. También podemos leer la entrada de un archivo.

Se suele usar en las aplicaciones para leer datos de entrada o almacenados en un archivo y disponer de ellos en variables.

read [opciones] variable

En este scritp.sh vamos a ver lo sencillo que resulta interactuar con el usuario solicitándole que introduzca su edad. Guardaremos en la variable edad el valor que introduzca desde teclado el usuario.

En el ejemplo gracias a la estructura if mostraremos un mensaje indicando si es mayor o menor de edad.

#!/bin/bash

echo "Ingresa tu edad:"
read edad

if [ $edad -lt 18 ];
then
    echo "Menor de edad"
else
    echo "Mayor de edad"
fi
Almacenando con read de Linux el valor introducido por el usuario

También podemos almacenar el contenido de un fichero en una variable.

Para el siguiente ejemplo almacenaremos lo que contenga el fichero hola.txt en la variable contenido y la mostraremos en pantalla.

#!/bin/bash

while read linea
do
    echo $linea
done < hola.txt

Opciones con read en Linux

La mejor forma de dar potencia a nuestros comandos de Linux es hacer uso de las opciones disponibles para cada comando. Recuerda que puedes ver las opciones del comando read escribiendo en la terminal man read.

  • -p: muestra un mensaje personalizado antes de leer la entrada del usuario.
  • -r: evita que las barras diagonales se interpreten como caracteres de escape.
  • -a: almacena la entrada en un array.
  • -t: establece un tiempo límite para la entrada.
  • -n: define el número máximo de caracteres que se leen.

En el siguiente ejemplo haremos uso de varias opciones para ver su funcionamiento y la potencia que añaden al comando read de Linux.

  • Tiempo máximo para introducir datos de 10 segundos.
  • Número máximo de caracteres 20.
  • Nos mostrará el mensaje de «Introduce: «
#!/bin/bash

read -t 10 -n 20 -p "Introduce: " nombre
echo "Has introducido: $nombre"

Dejar un comentario

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