Leer comando: Cómo verificar que el usuario haya escrito algo

Estoy tratando de crear una declaración if else para verificar que el usuario haya ingresado algo. Si lo ha hecho debe ejecutarse a través de los comandos, y si no, quiero repetir una declaración de ayuda.

Comentarios

  • Con read, normalmente el usuario tiene que presionar Enter antes de que el script progrese; luego puede probar la entrada …

Respuesta

Un ejemplo (bastante fácil) es el siguiente. Se crea un archivo llamado userinput que contiene el siguiente código.

#!/bin/bash # create a variable to hold the input read -p "Please enter something: " userInput # Check if string is empty using -z. For more "help test" if [[ -z "$userInput" ]]; then printf "%s\n" "No input entered" exit 1 else # If userInput is not empty show what the user typed in and run ls -l printf "You entered %s " "$userInput" ls -l fi 

Para empezar a aprender bash, te recomiendo que consultes el siguiente enlace http://mywiki.wooledge.org/

Respuesta

Si desea saber si el usuario ingresó una cadena específica, esto podría ayudar:

#!/bin/bash while [[ $string != "string" ]] || [[ $string == "" ]] # While string is different or empty... do read -p "Enter string: " string # Ask the user to enter a string echo "Enter a valid string" # Ask the user to enter a valid string done command 1 # If the string is the correct one, execute the commands command 2 command 3 ... ... 

Responder

Cuando varias opciones sean válidas, establezca una condición while para que coincida con expresión regular :

Por ejemplo:

#!/bin/bash while ! [[ "$image" =~ ^(rhel74|rhel75|cirros35)$ ]] do echo "Which image do you want to use: rhel74 / rhel75 / cirros35 ?" read -r image done 

Seguirá solicitando información, hasta que ingrese una de las tres opciones.

Comentarios

  • Sería mejor usar una select declaración en bash, si el problema fuera restringir la elección a un conjunto de opciones.
  • @Kusalananda, en lugar de dar -1, ¡da un ejemplo real! Mi sugerencia funciona bien. Demuestre que su sugerencia también es buena. No ' solo dé -1 porque puede: ' no es realmente útil para otros lectores.
  • Aquí ' es un ejemplo: select image in rhel74 rhel75 cirros35; do [ -n "$image" ] && break; done
  • @Kusalananda ahora esto es muy útil, ¡gracias! También habría agregado [ -z "$image" ] && select ... para omitir toda la selección, si $ image ya está configurado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *