viernes, 17 de marzo de 2017

Opciones

read soporta las siguientes opciones:

Tabla 28-1: Opciones de read
Opción Descripción
-a array Asigna la entrada a array, comenzando con el índice cero. Veremos los arrays en el Capítulo 35.
-d delimitador El primer carácter de la cadena delimitador se usa para indicar el final de la entrada, en lugar de un carácter de nueva línea.
-e Usa Readline para manejar la entrada. Esto permite editar la entrada de la misma forma que la línea de comandos.
-i cadena Usa cadena como una respuesta por defecto si el usuario simplemente presiona Enter. Requiere la opción -e.
-n num Lee num caracteres de entrada en lugar de la línea completa.
-p prompt Muestra un prompt para la entrada usando la cadena prompt.
-r Modo raw. No interpreta las barras invertidas como escapados.
-s Modo silencioso. No envía caracteres a la pantalla cuando son escritos. Es útil cuando introducimos contraseñas u otra información confidencial.
-t segundos Tiempo de espera. Finaliza la entrada tras segundos. read devuelve un estado de salida distinto de cero si una entrada excede el tiempo.
-u fd Usa como entrada el descriptor de archivo fd, en lugar de la entrada estándar.

Usando varias opciones, podemos hacer cosas interesantes con read. Por ejemplo, con la opción -p, podemos proporcionar una cadena de prompt:

#!/bin/bash

# read-single: read multiple values into default variable

read -p "Enter one or more values > "

echo "REPLY = '$REPLY'"

Con las opciones -t y -s podemos escribir un script que lee entrada "secreta" y caduca si la entrada no se completa en un tiempo especificado:

#!/bin/bash

# read-secret: input a secret passphrase

if read -t 10 -sp "Enter secret passphrase > " secret_pass; then
     echo -e "\nSecret passphrase = '$secret_pass'"
else
     echo -e "\nInput timed out" >&2
     exit 1
fi

El script pregunta al usuario por una frase secreta y espera entrada durante 10 segundos. Si la entrada no se completa en el tiempo especificado, el script sale con un error. Como la opción -s se incluye, los caracteres de la contraseña no se muestran en la pantalla al escribirla.

Es posible proporcionar al usuario una respuesta por defecto usando las opciones -e y -i juntas:

#!/bin/bash

# read-default: supply a default value if user presses Enter key.

read -e -p "What is your user name? " -i $USER
echo "You answered: '$REPLY'"

En este script, pedimos al usuario que introduzca su nombre de usuario y la variable de entorno USER proporciona un valor por defecto. Cuando se ejecuta el script muestra la cadena por defecto y si el usuario pulsa simplemente la tecla Intro, read asignará la cadena por defecto a la variable REPLY.

[me@linuxbox ~]$ read-default
What is your user name? me
You answered: 'me'

No hay comentarios:

Publicar un comentario