Citiți comanda: Cum să verificați dacă utilizatorul a tastat ceva

Încerc să creez o instrucțiune if else pentru a verifica dacă utilizatorul a introdus ceva. ar trebui să ruleze prin comenzi și, dacă nu, vreau să fac ecou unei declarații de ajutor.

Comentarii

  • Cu read, de obicei utilizatorul trebuie să apese Enter înainte ca scriptul să progreseze; puteți testa apoi intrarea …

Răspuns

Un exemplu (destul de ușor) este următorul. Se creează un fișier numit userinput care conține următorul cod.

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

Pentru a începe să învățați bash, vă recomand să verificați următorul link http://mywiki.wooledge.org/

Răspuns

Dacă doriți să știți dacă utilizatorul a introdus un anumit șir, acest lucru ar putea ajuta:

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

Când sunt valide mai multe opțiuni, creați o condiție de timp pentru a se potrivi cu expresie regulată :

De exemplu:

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

Va continua să solicite intrare, până la introducerea uneia dintre cele trei opțiuni.

Comentarii

  • Ar fi mai bine să folosiți o instrucțiune select în bash, dacă problema ar restrânge alegerea la un set de opțiuni.
  • @Kusalananda, mai degrabă decât să dați -1, dați un exemplu real! Sugestia mea funcționează bine. Arătați că și sugestia dvs. este bună. Nu ' dați doar -1 pentru că puteți – ' nu este util pentru alți cititori.
  • Iată ' un exemplu: select image in rhel74 rhel75 cirros35; do [ -n "$image" ] && break; done
  • @Kusalananda acum este foarte util, mulțumesc! Aș fi adăugat și [ -z "$image" ] && select ... pentru a omite întreaga selecție, dacă $ image este deja setată.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *