Î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
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
înbash
, 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ă.
read
, de obicei utilizatorul trebuie să apeseEnter
înainte ca scriptul să progreseze; puteți testa apoi intrarea …