Læs kommando: Sådan verificeres, at brugeren har skrevet noget

Jeg prøver at oprette en hvis ellers-sætning for at bekræfte, at brugeren har indtastet noget. Hvis de har det skal køre gennem kommandoerne, og hvis ikke, vil jeg gentage en hjælpeforklaring.

Kommentarer

  • Med read, typisk skal brugeren ramme Enter før scriptet skrider frem; du kan derefter teste input …

Svar

Et eksempel (ret let) er som følger. Der oprettes en fil med navnet userinput, der indeholder 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 at begynde at lære bash anbefaler jeg dig at tjekke følgende link http://mywiki.wooledge.org/

Svar

Hvis du vil vide, om brugeren indtastede en bestemt streng, kan dette hjælpe:

#!/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, skal du stille et stykke tid for at matche regulært udtryk :

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 bliver ved med at bede om input, indtil det indtaster et af de tre valg.

Kommentarer

  • Det ville være bedre at bruge en select udsagn i bash, hvis problemet var at begrænse valget til et sæt valgmuligheder.
  • @Kusalananda, i stedet for at give -1, giver et faktisk eksempel! Mit forslag fungerer godt. Vis, at dit forslag også er godt. Giv ' t bare -1 fordi du kan – det ' er virkelig ikke nyttigt for andre læsere.
  • Her er ' et eksempel: select image in rhel74 rhel75 cirros35; do [ -n "$image" ] && break; done
  • @Kusalananda nu er dette meget nyttigt, tak! Jeg ville også have tilføjet [ -z "$image" ] && select ... for at springe hele markeringen over, hvis $ image allerede er indstillet.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *