Commande de lecture: Comment vérifier que lutilisateur a tapé quelque chose

Jessaye de créer une instruction if else pour vérifier que lutilisateur a saisi quelque chose. Si cest le cas il devrait passer par les commandes, et sinon je veux faire écho à une instruction daide.

Commentaires

  • Avec read, généralement lutilisateur doit appuyer sur Enter avant que le script ne progresse; vous pouvez alors tester lentrée …

Réponse

Un exemple (assez simple) est le suivant. Un fichier nommé userinput est créé et contient le code suivant.

#!/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 

Pour commencer à apprendre bash, je vous recommande de vérifier le lien suivant http://mywiki.wooledge.org/

Réponse

Si vous voulez savoir si lutilisateur a saisi une chaîne spécifique, cela peut aider:

#!/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 ... ... 

Réponse

Lorsque plusieurs choix sont valides, créez une condition while pour correspondre à expression régulière :

Par exemple:

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

Il continuera à demander une entrée, jusquà ce quil entre dans lun des trois choix.

Commentaires

  • Il serait préférable dutiliser une instruction select dans bash, si le problème était de restreindre le choix à un ensemble de options.
  • @Kusalananda, plutôt que de donner -1, donnez un exemple réel! Ma suggestion fonctionne bien. Montrez que votre suggestion est également bonne. Ne donnez ' que -1 parce que vous pouvez – cela ' nest vraiment pas utile pour les autres lecteurs.
  • Voici ' un exemple: select image in rhel74 rhel75 cirros35; do [ -n "$image" ] && break; done
  • @Kusalananda maintenant cest très utile, merci! Jaurais aussi ajouté [ -z "$image" ] && select ... pour sauter toute la sélection, si $ image est déjà définie.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *