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
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 ibash
, 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.
read
, vanligvis må brukeren trykkeEnter
før skriptet skrider frem; du kan deretter teste inngangen …