El comando read: Realizar pausas en scripts bash

Muchas veces necesitamos introducir pausas en nuestros scripts, solicitando al usuario que pulse alguna tecla o realizando una espera de un tiempo determinado.

En este post, vamos a ver algunos ejemplos de pausas que podemos realizar, utilizando el comando read.

Normalmente, cuando en un script queremos solicitar al usuario que introduzca un valor para almacenarlo en una variable, hacemos lo siguiente:

read nombre

De este modo, lo que introduzcamos mediante teclado, se almacenará en la variable nombre.

Si, además, queremos solicitarle que introduzca un valor, indicándole en qué consiste el valor que debe introducir, usamos el parámetro -p:

read -p 'Introduce tu nombre: ' nombre

Ahora bien, si queremos evitar que los caracteres introducidos por el usuario se muestren en pantalla, podemos utilizar el parámetro -s:

read -sp 'Contraseña: ' pass

En el ejemplo anterior, estamos solicitando al usuario que introduzca su contraseña sin mostrarse por pantalla y ésta se almacenará en la variable pass.

Del mismo modo, que usamos el comando para solicitar que el usuario introduzca datos mediante teclado, si lo que nos interesa es pedirle que pulse ENTER,

read -rsp $'Pulsa ENTER para continuar... \n'

El usuario en realidad podrá introducir todos los caracteres que quiera, pero como estamos utilizando el parámetro -s, no se muestran y el efecto final es como si tan pulsara sólo ENTER.

Si queremos, también podemos pedir al usuario que pulse cualquier tecla para continuar:

read -rsp $'Pulsa cualquier tecla para continuar...\n' -n 1

De este modo, lo que estamos haciendo es indicar al comando que sólo se debe introducir un caracter. Así, al pulsar una sola tecla, terminará el comando.

También podríamos pedir al usuario que pulse ESCAPE para continuar:

read -rsp $'Pulsa escape para continuar...\n' -d $'\e'

Por otro lado, utilizando el parámetro -t seguido del número de segundos, podemos realizar una pausa que dure un tiempo determinado:

read -t 3 -rsp $'Espere 3 segundos...\n' 

También podemos combinar opciones:

read -t 9 -n 1 -rsp $'Pulse una tecla o espere 9 segundos para continuar...\n'

En el ejemplo anterior se esperará 9 segundos o la pulsación de una tecla.

Be the first to comment

Por favor acceder para comentar.