read

read sirve para leer input de la terminal y guardarlo en una variable (o dos, si se especifican espacios). read var1. Si no se especifica una variable se almacena en $REPLY - se puede aprovechar para ignorar input de read.

read.sh

#!/usr/bin/env bash

echo -n "Introduce nombre y apellido: "
read nombre apellido

echo "Tu nombre es ${nombre} y ${apellido}."

exit 0
$ bash read.sh
# Introduce nombre y apellido: Joseph Smith
# Tu nombre es Joseph y tu apellido es Smith.

La opción -r sirve para interpretar \ literalmente (en lugar de permitir varias líneas).

Hay otras opciones, pero hay que usarlas en el orden correcto para que funcionen.

Opción Descripción
-s no hace eco del input
-n especifica el número de caracteres de input que acepta, y no detecta enter como opción
-p imprime el siguiente mensaje antes del input
-r interpreta \ literalmente
-t temporizado; si no hay input sale del programa

También se pueden guardar líneas de un archivo a una variable.

read2.sh

#!/usr/bin/env bash

read -s -n1 -p "Introduce una tecla" tecla
echo
echo "Has introducido la tecla ${tecla}."

exit 0
$ bash read2.sh
# Introduce una tecla
# Has introducido la tecla a.

Se puede formatear mejor utilizando las opciones de shell.

Algunas teclas tienen un código especial: flecha arriba \[A, flecha abajo \[B, flecha derecha \[C, flecha izquierda \[D, insertar \[2 y borrar \[3.