Les kommando: Hvordan verifisere brukeren har skrevet noe

Jeg prøver å opprette en hvis annet uttalelse for å bekrefte at brukeren har skrevet inn noe. Hvis de har det skal gå gjennom kommandoene, og hvis ikke vil jeg ekko en hjelpemelding.

Kommentarer

  • Med read, vanligvis må brukeren trykke Enter før skriptet skrider frem; du kan deretter teste inngangen …

Svar

Et eksempel (ganske enkelt) er som følger. Det opprettes en fil med brukerinngang som inneholder følgende kode.

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

For å begynne å lære bash, anbefaler jeg deg å sjekke følgende lenke http://mywiki.wooledge.org/

Svar

Hvis du vil vite om brukeren skrev inn en bestemt streng, kan dette hjelpe:

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

Svar

Når flere valg er gyldige, må du gjøre en stund-betingelse for å matche regulært uttrykk :

For eksempel:

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

Det vil fortsette å be om input, til det kommer inn i ett av de tre valgene.

Kommentarer

  • Det ville være bedre å bruke en select uttalelse i bash, hvis problemet var å begrense valget til et sett med alternativer.
  • @Kusalananda, i stedet for å gi -1, gi et faktisk eksempel! Forslaget mitt fungerer bra. Vis at ditt forslag også er bra. Ikke gi ' t bare -1 fordi du kan – det ' er virkelig ikke nyttig for andre lesere.
  • Her er ' et eksempel: select image in rhel74 rhel75 cirros35; do [ -n "$image" ] && break; done
  • @Kusalananda nå er dette veldig nyttig, takk! Jeg ville også ha lagt til [ -z "$image" ] && select ... for å hoppe over hele valget, hvis $ image allerede er satt.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *