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
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 kohdassabash
, 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.
read
, käyttäjän on yleensä lyöttäväEnter
ennen komentosarjan etenemistä; voit sitten testata syötettä …