Curso de Linux N21. Programación en Bash 008: Entradas por teclado.

Cordiales Saludos


21_portada.png


banner_bash.png

Corresponde en esta publicación tratar el tema de la Entrada de Datos por teclado. Esta acción la veremos cada vez que estudiemos un lenguaje de programación.

Todas las variables usadas hasta hoy la hemos asignado directamente dentro del script. Con la entrada de datos tenemos una opción muy potente para el tratamiento de los datos. Ahora podemos entrar datos distintos cada vez que ejecutemos el programa. Aquí se abre un nuevo mundo de posibilidades.

A continuación la estructura básica para solicitarle un dato al usuario por medio del teclado.


21_60.png

Ejecución del código

$ bash script_60.sh 
Introduce por teclado un color
blanco
Ingresaste el color: blanco


0-separador_bash.png

La forma resumida o mejorada es usando directamente read con la opción -p.

21_61.png

Ejecución del código

$ bash script_61.sh 
Introduce por teclado un color: blanco
Ingresaste el color: blanco


0-separador_bash.png

Si por algún motivo o por nuestro propio interés no colocamos una variable para recibir lo que introducimos por teclado, esta información se guarda en una variable interna denominada $REPLY.

21_62.png

Ejecución del código

$ bash script_62.sh 
Introduce por teclado un color: Blanco
Ingresaste el color: Blanco


0-separador_bash.png

En los scripts anteriores cuando escribíamos con el teclado, se mostraba lo que íbamos escribiendo. Con la opción -s lo que escribamos no se mostrará. Ya esto lo hemos visto cuando nos piden una contraseña. Y en el siguiente script simulo la solicitud de una contraseña.

21_63.png

Ejecución del Código

$ bash script_63.sh 
Introduce por teclado la contraseña: 
Tu contraseña es: (8EuN34@#/.Po


0-separador_bash.png

Podemos solicitar varias variables al momento de solicitar los datos. Dependerá del mensaje, para que el usuario sepa cuantos valores debe introducir y muy importante tener las variables que recibirán dichos valores. Aquí solicitamos dos datos y tenemos dos variables para recibirlos: num1 y num2

21_64.png

Ejecución del código

$ bash script_64.sh 
Introduce dos numero: 123 321
Numero 1: 123
Numero 2: 321


0-separador_bash.png

Podemos solicitar más de un dato y guardarlos dentro de un vector, con la opción -a.

Esta opción es más efectiva que la descrita en el script anterior. Imaginemos que con la estructura anterior necesitamos 10 datos, debemos tener 10 variables para recibirlos, en cambio usando el vector es ilimitado el número de datos a introducir.


21_65.png

$ bash script_65.sh clear
Introduce varios numero: 
3 5 7 9 10
El vector es 3 5 7 9 10
El primer elemento es: 3
El ultimo elemento es: 10

Otra forma de hacer el ejercicio es:

  1 #!/bin/bash
  2 # script_65a.sh Por: Rafael Aquino
  3 # Entrada de datos por teclado, Vector
  4 
  5 read -p "Introduce varios numero: " -a vector
  6 echo "El vector es ${vector[@]}"
  7 echo "El primer elemento es: ${vector[0]}"
  8 echo "El ultimo elemento es: ${vector[-1]}"
  9 #...................................
                                          


0-separador_bash.png

Podemos tener una variable por default que nos permitirá hacer nuestros script más dinámicos.

Ya este formato lo conocemos cuando instalamos un comando, aplicación o cuando actualizamos nuestro sistema:

Do you want to continue? [Y/n]
Si colocamos Y o ENTER se ejecuta la acción.


21_66.png

Ejecución del Código (Tecleando ENTER)

$ bash script_66.sh
Deseas continuar? S/n (default: s) 

Tu respuesta es: s

Ejecución del Código (Tecleando n)

$ bash script_66.sh
Deseas continuar? S/n (default: s) 
n
Tu respuesta es: n

Ejecución del Código (Podemos si queremos tipear "s" igual funcionará)

$ bash script_66.sh 
Deseas continuar? S/n (default: s) 
s
Tu respuesta es: s

Otra forma:

 1 #!/bin/bash
  2 # script_66a.sh Por: Rafael Aquino
  3 # Entrada de datos por teclado, nombre por default
  4 
  5 read -p "Deseas continuar? S/n (default: s) " resp
  6 resp="${resp:=s}"
  7 echo "Tu respuesta es: $resp"
  8 #...................................


0-separador_bash.png

Otra forma de darle dinamismo a nuestros script es colocando un tiempo de espera para que tecleemos algo, transcurrido el tiempo y si no hemos introducido ningún valor se sale del la solicitud de datos.
En esta oportunidad combiné la variable default (visto en el ejercicio anterior) con este ejercicio, por si no se teclea nada, automáticamente coloca el valor por default.


21_67.png

Ejecución del código (Expirando el tiempo)


$ bash script_67.sh
Introduce un numero, (default: 10)
Tu respuesta es: 10

Ejecución del código (introduciendo un número por teclado)

$ bash script_67.sh
Introduce un numero, (default: 10)
543
Tu respuesta es: 543

Otra forma

  1 #!/bin/bash
  2 # script_67a.sh Por: Rafael Aquino
  3 # Entrada de datos por teclado, expiracion de espera
  4 
  5 read -p "Introduce un numero, (default: 10)" -t 10 resp
  6 resp="${resp:=10}"
  7 echo "Tu respuesta es: $resp"
  8 #...................................


0-separador_bash.png

Esta formato de solicitud de dato es muy útil cuando queremos limitar el número de caracteres. Si necesitamos tres caracteres sólo tomará tres caracteres.


21_68.png

Ejecución del código

$ bash script_68.sh
Introduce un numero de tres cifras 
678
Tu numero es: 678

Otra forma

  1 #!/bin/bash
  2 # script_68a.sh Por: Rafael Aquino
  3 # Entrada de datos por teclado, limite de caracteres 
  4 
  5 read -p "Introduce un numero de tres cifras " -n 3 resp
  6 echo -e "\nTu numero es: $resp"
  7 #...................................

Hasta aquí nuestra publicación. Como siempre modifiquemos todos estos ejercicios para tener mas dominios sobre ellos.

IMPORTANTE: Los comando vistos aquí y en próximas publicaciones están limitados para mostrarlos y conceptualizarlos para nuestro quehacer diario. Cada comando tiene muchas opciones que debemos investigar por nuestra propia cuenta cuando estemos trabajando con ellos. Aprovechemos el internet para conocer en profundidad el comando que estemos estudiando y en primer orden no olvidemos lo potente y todo lo que nos brinda el comando man para conocer la sintaxis y todo lo relacionado con todos los comandos que tenemos en nuestro sistema sin recurrir a internet.


bannerfundamentos.png

Todos a practicar, incluyéndome! Nos vemos en la próxima publicación...


Estos ejercicio y los anteriores los puedes encontrar en el repositorio del curso: https://gitlab.com/btcsiraquino/hp_bash_ejercicios


Mi Twitter



0
0
0.000
3 comments
avatar

Thanks for your contribution to the STEMsocial community. Feel free to join us on discord to get to know the rest of us!

Please consider delegating to the @stemsocial account (85% of the curation rewards are returned).

You may also include @stemsocial as a beneficiary of the rewards of this post to get a stronger support. 
 

0
0
0.000