A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Curso de Programaci贸n en Bash Shell

Curso de Programaci贸n en Bash Shell

Marco Antonio Toscano Freire

Marco Antonio Toscano Freire

Capturar informaci贸n usuario

12/43
Recursos

Para poder capturar informaci贸n tenemos dos formas dentro de un programa Bash.

  • Utilizando en conjunto con el comando echo
  • Utilizando directamente el comando read

Aportes 30

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Unas de las opciones m谩s utilizadas para Read

-p: Permite ingresar una frase o prompt antes de pedir el dato.
-s: Modo Sigiloso. No muestra ning煤n caracter en la terminal, util para contrase帽as o informaci贸n sensible.
-n [num]: Permite leer como m谩ximo n caracteres.
-r: Toma el bot贸n de retroceso o backspace como un caracter y no borra ningun otro caracter previamente escrito.

#!/usr/bin/env bash
#lec_6_file.sh

option=0
name=""

read -p "Set you option:" option
read -p "Set you name:" name

echo "option:$option , name:$name"

#!/usr/bin/env bash
#lec_6_file.sh

option=0
name=""

echo -n "Set you option:"
read
option=$REPLY
echo -n "Set your name:"
read
name=$REPLY

echo "option:$option , name:$name"
  • Script interactivos: Es un script retroalimentado por el usuario
  • echo -n: Imprimir informaci贸n sin el caracter 鈥淺n鈥 al final, es decir sin el salto de l铆nea
  • El comando 鈥渞ead鈥 es para leer o capturar informaci贸n del standard input
  • La variable 鈥$REPLY鈥 es donde se almacenar谩 esa informaci贸n del standard input

Listo, muy importante revisar la primera l铆nea, ya que en mi caso, si no est谩 totalmente unida no funciona correctamente el bash

#!/bin/bash

6

#!/bin/bash
# Bash para captura la informacion del usuario utilizando echo read

option=0
backupName=""
echo "Programa Utilidades Postgres"
echo -n "Ingresar una opcion:"
read
option=$REPLY
echo -n "Ingresa el nombre del archivo de Backup:"
read
backupName=$REPLY
echo "La opcion selecionada fue : $option y el nombre del Backup es: $backupName"

7

#!/bin/bash
# Bash para captura la informacion del usuario utilizando read

option=0
backupName=""
contrasena=""
echo "Programa Utilidades Postgres"
read -p "Ingresar una opcion:" option
read -p "Ingresa el nombre del archivo de Backup:" backupName
read -s -p "Ingresa contrase帽a:"  contrasena
echo "La opcion selecionada fue : $option El nombre del Backup es: $backupName La contrae帽a es: $contrasena "

Una alternativa de borrado en vim salir del modo insert y hacer shift+d esto tomara el cursor como punto de origen y borrara todo el texto que encuentre hasta el final de la linea

M谩s c贸modo y pr谩ctico usar la segunda opci贸n, s贸lo con read.

nombre=""
read -p "Introduce tu nombre: " nombre
echo $nombre

Estoy viendo el potencial de VIM es maravilloso.

Este es un ejemplo de los b谩sicos, en donde solo se usa la variable REPLY

#!/bin/bash

name=""
age=0

echo "Please give me your name"
read
name=$REPLY
echo "Now, can you give me your age, please"
read
age=$REPLY
echo -e "Name: $name \nAge: $age"

Seguramente sabe bastante de todo lo que ense帽a y hace pero ojal谩 Platzi pudiera ofrecerle un curso de uso de Vim, hahahaha

Estoy usando un raspberry para ejecutar los comandos y veo el curso en una maquina con windows, por eso descubri un programa muy util.
.
se llama WinSCP muy util para conectarse via SSH a una maquina con linux desde una con windows y descargar informacion desde la segunda

Si le das esc + A(awebo tiene ser may煤scula) en el vim te lleva a editar desde la ultima posici贸n en el linea

Para leer contrase帽as, se puede utilizar el par谩metro -s de read. Sin embargo, es mejor hacer un script POSIX compliant, de esta forma nuestro script correr谩 sin problemas en el shell de cualquier sistema UNIX.

#!/bin/sh
stty -echo
printf 	"Contrase帽a: "
readPASSWORD
stty -echo
printf  "\n"

...

Muy buena explicaci贸n del profesor.

Si tienes zsh poner la opcion -p te va a causar un error 鈥渘o coprocess鈥. Y es porque en zsh la sintaxis de read es un poco diferente y tendr铆a que ser por ejemplo:

read "option?Ingresa una opcion:"
echo "$option"
```

para limitar el numero de caracteres se usa -k en lugar de -n para bash, y -s sirve para lo mismo. Aqu铆 hay m谩s informaci贸n al respecto https://zsh.sourceforge.io/Doc/Release/Shell-Builtin-Commands.html
# !/bin/bash

option=0
backupName=""

echo "Programa de Utilidades PostgresSQL"
echo -n "Ingresar una Opci贸n:"
read option 
echo -n "Ingresar el nombre del archivo del backup:"
read backupName
echo "Option: $option,  BackupName: $backupName"

![](

genial

Para capturar la informaci贸n del usuario solamente con 鈥渞ead鈥:
read -p 鈥淧ROMPT鈥 variableRespuesta

Buen aporte 馃槂

Copio mis archivos:

6_readEcho.sh

<h1>! /bin/bash</h1> <h1>Programa para ejemplificar como capturar la informacion del usuario utilizando el comando echo, read y #REPLY</h1> <h1>Autor: Jose Suarez</h1>

option=0
backupname=""

echo "Programa utilidades Postgres"
echo -n "Ingresar una opcion:"
read
option=$REPLY
echo -n "Ingresar nombre del archivo del backup:"
read
backupname=$REPLY

echo 鈥淥pcion: $option , NombreBackup: $backupname鈥

7_read.sh

<h1>! /bin/bash</h1> <h1>Programa para ejemplificar como capturar la informacion del usuario utilizando el comando read</h1> <h1>Autor: Jose Suarez</h1>

option=0
backupname=""

echo "Programa utilidades Postgres"
read -p 鈥淚ngresar una opcion:鈥 option
read -p 鈥淚ngresar nombre del archivo del backup:鈥 backupname
echo 鈥淥pcion: $option , NombreBackup: $backupname鈥

#!/bin/bash
#programa de calculo de la velocidad en km/h, ingresando la distancia y el tiempo

distancia=0
tiempo="鈥
velocidad=鈥"
echo "programa calculo de velocidad"
read -p 鈥渋ngresar una distancia en kilometros:鈥 distancia
read -p 鈥渋ngresar valor de tiempo en horas:鈥 tiempo
echo "distancia:$distancia , tiempo:$tiempo"
echo 鈥渓a velocidad calculada es:$(( distancia / tiempo ))km/h鈥

el comando read -p me marca el siguiente error;
read: no query process
驴Sabr谩n que puede ser?
Para el ejercivio tuve que modificar mi codigo;

  2 # Programa para ejemplificar como capturar la informacion del usuario utilizando el comando read
  3 
  4 option=0
  5 backupName=""
  6 
  7 echo "Programa de utilidades Postgres"
  8 echo "Ingrese una opcion"
  9 read  option
 10 echo  "Ingrese el nombre del archivo del backup"
 11 read backupName
 12 echo "Opcion: $option , backupName: $backupName"```

Este es un ejemplo mas avanzado donde se utilizan sentencias if y la bandera -s en el read

#!/bin/bash

read -p "Type your name: " name
read -p "Type your email: " email
read -sp "Type your password: " password
echo -e "\r"
read -sp "Repeat your password: " password2

if [ $password==$password2 ]; then
        echo -e "\nGreat, welcome to gmail $name"
else
        echo -e "\nThe passwords don't match"
fi
#! /bin/bash

option=0
backup_name=""

echo "Utilities program"

echo -n "Insert an option: "
read
option=$REPLY

echo -n "Insert the backup filename: "
read
backup_name=$REPLY

echo "Option: $option, backup name: $backup_name."
#! /bin/bash

option=0
backup_name=""

echo "Utilities program"

read -p "Insert an option: " option
read -p "Insert the backup filename: " backup_name

echo "Option: $option, backup filename: $backup_name."
<h1>! /bin/bash</h1> <h1>Programa para ejemplificar como capturar la informaci贸n del usuario utilizando el comando read</h1> <h1>Autor: Martin Davila</h1>

option=0
backupName=""

echo "Programa Utilidades Postgres"
read -p 鈥淚ngresar una opci贸n:鈥 option
read -p 鈥淚ngresar el nombre del archivo del backup:鈥 backupName
echo 鈥淥pci贸n:$option , backupName:$backupName鈥