Contenido del curso
Contenido del curso
Ian Javier Duran Roman
ivan perez
Sebastian CA
DAVID EDUARDO BAEZ SANCHEZ
Yussen Julio Solis Garro
Sergui Morejón
Jorge Montaño
Andrés Felipe Carreño
Stanley Melgar
Omar D
Miguel Angel Reyes Moreno
Junior Cupe Casquina
Miguel Ángel Ríos Yáñez
Hernan Felipe Diaz
Irving Juárez
José B. Méndez Padín
Kevin Steven Cufiño Robayo
Omar D
Joserra Parada Fontaiña
Gabriela Carolina Navarro Quintero
Andres Silva Vega
Quetzal Mendoza
Quetzal Mendoza
Victor bustos sazo
Victor bustos sazo
Victor bustos sazo
Fernando Sanchez Chavez
valentina stephany kassar acuña
Irving Juárez
Alejandro Conde
Romel Manrique
Juan Antonio Aramburo Pasapera
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.
Muchas gracias Ian Javier por las opciones
Muchas gracias hermano, me ahorraste como 5 segundos de busqueda en Google
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 "
Gracias me ayudo
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
Muchas gracias Jorge por el dato.
Mencionar que para zsh no funcionan los argumentos de read, para usar read -p es necesario interpretar el script con bash.
Más fácil
option=0 backupName="" echo "Utilidades PostGres" echo -n "Ingresar una opcion:" read REPLY option=$REPLY echo -n "Ingresa el nombre del archivo del backup:" read REPLY backupName=$REPLY echo "Opcion: $option , backupName: $backupName "
Gracias César, me ayudó
#!/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"
Estoy viendo el potencial de VIM es maravilloso.
Seguramente sabe bastante de todo lo que enseña y hace pero ojalá Platzi pudiera ofrecerle un curso de uso de Vim, hahahaha
Estaria muy bueno, yo si lo tomaria
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
Una diferencia entre bash y zsh es que el comando read esta implementado de forma diferente.
Para el caso de leer paramentos:
En bash
read -p "mensaje" variable
En zsh
read "varibale?mensaje"
Excelente aporte Kevin, de hecho tambien utilizo zsh y yo lo resolví agregando REPLY al read
option=0 backupName="" echo "Utilidades PostGres" echo -n "Ingresar una opcion:" read REPLY option=$REPLY echo -n "Ingresa el nombre del archivo del backup:" read REPLY backupName=$REPLY echo "Opcion: $option , backupName: $backupName "
read: Lee una línea de la salida estándar y la divide en campos.
Si no se proporciona ningún NOMBRE, la línea leída se guarda en la variable REPLY. Opciones: **-a** matriz asigna las palabras leídas a índices secuenciales de la variable matricial MATRIZ, empezando en cero ** -d** delim continúa hasta que se lea el primer carácter de DELIM, en lugar de línea nueva ** -e** usa Readline para obtener la línea **-i** texto Emplea el TEXTO como el texto inicial para Readline **-n** ncars regresa tras leer NCARS caracteres en lugar de esperar una línea nueva, pero honra a un delimitador si se leen menos de NCARS caracteres antes del delimitador **-N** ncars devuelve sólo después de leer exactamente NCARS caracteres, a menos que se encuentre el fin del fichero o expire la lectura, descartando cualquier delimitador _-p _prompt sale la cadena PROMPT sin un carácter de línea nueva al final antes de intentar leer **-r ** no permite que las barras invertidas escapen caracteres **-s ** no muestra la salida que proviene de una terminal **-t** tiempo expira y devuelve fallo si no se lee una línea completa de entrada en TIEMPO segundos. El valor de la variable TMOUT es el tiempo de expiración por defecto. TIEMPO puede ser un número fraccionario. Si TIEMPO es 0, ‘read’ devuelve correcto sólo si hay entrada disponible en el descriptor de fichero especificado. El estado de salida es mayor que 128 si se excede el tiempo de expiración. ** -u **df lee del descriptor de fichero DF en lugar de la entrada estándar
Si no les funcionó como a mi, tal vez esto les sirva
Por qué cuando se ejecuta el script con ./ si espera la entrada de los valores por parte del usuario pero con el comando sh o bash no?
jajajja, a mí me pasa lo mismo, pero al revés, el ./ es el que no espera.
ya probaste usando sólo la manera de read? a mí parecer echo, read, $REPLY es el que da problemas.
Tengo ubuntu en win10, pero algun cambio que ejecute antes no me permite que este script funcione bien, es como que no toma el comando -n y no espera para poner los datos, simplemente ejecuto y lanza todo el texto, no me deja ingresar parametros. hice el mismo script en maquina virtual y me funciona bien. La pregunta es ¿Como reparo el ubuntu integrado en windows. ? o que opciones cambio para que se comporte como quiere el script
bueno, mas adelante con el comando -p. todo funciona bien. parece que algo de seguridad no permite solo la validacion -n.
./ no funciona. pero si con bash y el script. aun nose pq. debe ser configuraciones de las terminales.
Aporte de años pasados pero muy bueno Unas de las opciones más utilizadas para Read
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
para quienes les da error en zsh, puede simplificarse de esta manera (el comando $REPLY estaria implicito en "read"), tambien funciona eliminando "-n"
echo "Programa utilidades postgres" echo "Ingresar una opcion:" read option echo "Ingresar el nombre del archivo del backup:" read backupName echo "opcion:$option, backupName:$backupName"
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"
Si tienes zsh poner la opcion -p te va a causar un error "no 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