Lue komento: Kuinka tarkistaa, että käyttäjä on kirjoittanut jotain

Yritän luoda if else -käskyn varmistaaksesi, että käyttäjä on kirjoittanut jotain. sen pitäisi kulkea komentojen läpi, ja jos ei, haluan toistaa ohjearvon.

Kommentit

  • Kanssa read, käyttäjän on yleensä lyöttävä Enter ennen komentosarjan etenemistä; voit sitten testata syötettä …

Vastaus

Esimerkki (melko helppo) on seuraava. Luodaan tiedosto nimeltä userinput, joka sisältää seuraavan koodin.

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

Aloita bashin oppiminen suosittelemalla, että tarkistat seuraavan linkin http://mywiki.wooledge.org/

Vastaa

Jos haluat tietää, onko käyttäjä kirjoittanut tietyn merkkijonon, tämä voi auttaa:

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

vastaus

Kun useita valintoja on kelvollinen, tee jonkin aikaa ehto vastaamaan säännöllistä lauseketta :

Esimerkki:

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

Se kysyy syötteitä, kunnes syötät yhden kolmesta vaihtoehdosta.

Kommentit

  • Olisi parempi käyttää select -lausetta kohdassa bash, jos ongelmana oli rajoittaa valinta vaihtoehtoja.
  • @Kusalananda antaa todellisen esimerkin sen sijaan, että antaisi -1. Ehdotukseni toimii hyvin. Osoita, että myös ehdotuksesi on hyvä. Älä ' anna vain -1, koska voit – se ' ei todellakaan ole hyödyllinen muille lukijoille.
  • Tässä ' s esimerkki: select image in rhel74 rhel75 cirros35; do [ -n "$image" ] && break; done
  • @Kusalananda nyt tämä on erittäin hyödyllinen, kiitos! Olisin lisännyt myös [ -z "$image" ] && select ... ohittaaksesi koko valinnan, jos $ image on jo asetettu.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *