Czytaj polecenie: Jak sprawdzić, czy użytkownik coś wpisał

Próbuję utworzyć instrukcję if else, aby sprawdzić, czy użytkownik coś wprowadził. Jeśli tak powinien przebiegać przez polecenia, a jeśli nie, chcę wyświetlić instrukcję pomocy.

Komentarze

  • Z read, zazwyczaj użytkownik musi nacisnąć Enter przed rozpoczęciem wykonywania skryptu; możesz następnie przetestować dane wejściowe …

Odpowiedź

Przykład (dość prosty) jest następujący. Tworzony jest plik o nazwie userinput, który zawiera następujący kod.

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

Aby rozpocząć naukę basha, polecam sprawdzenie następującego linku http://mywiki.wooledge.org/

Odpowiedź

Jeśli chcesz wiedzieć, czy użytkownik wprowadził określony ciąg, może pomóc:

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

Odpowiedź

Jeśli można wybrać kilka opcji, ustaw warunek while, aby dopasować wyrażenie regularne :

Na przykład:

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

Będzie prosić o wprowadzenie danych, aż do wprowadzenia jednej z trzech opcji.

Komentarze

  • Lepiej byłoby użyć instrukcji select w bash, gdyby chodziło o ograniczenie wyboru do zestawu opcje.
  • @Kusalananda, zamiast podawać -1, podaj rzeczywisty przykład! Moja sugestia działa dobrze. Pokaż, że twoja sugestia też jest dobra. Nie ' nie dawaj po prostu -1, bo możesz – to ' nie jest pomocne dla innych czytelników.
  • Oto przykład ': select image in rhel74 rhel75 cirros35; do [ -n "$image" ] && break; done
  • @Kusalananda. To jest bardzo pomocne, dzięki! Dodałbym również [ -z "$image" ] && select ..., aby pominąć cały wybór, jeśli $ image jest już ustawiony.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *