BASH SELECT COMMAND

BASH SELECT COMMAND
Plukke ut Kommando brukes i skript for menyoppretting. Ulike typer menygenereringsoppgaver kan implementeres med plukke ut Kommando som: Opprette menybasert direktørliste, Opprette en meny fra filinnhold osv. Hvordan du kan implementere denne typen oppgaver ved hjelp av bash plukke ut Kommandoen vises i denne Linux Hint -opplæringen.

Syntaks:

Velg V i data_list
gjøre
uttalelse1
Uttalelse2
Uttalelse3
Ferdig

Her blir menyelementet opprettet fra data_listen som kan være en matrise eller annen datakilde. Hvert menyelement henter fra data_listen og lagrer i en variabel for å opprette menyen. 'Velg' Kommando kan brukes med 'Case' -kommando også for å opprette menyen. Ulike typer menyopprettingsoppgaver vises her ved hjelp av veldig enkle eksempler.

Eksempel 1: Opprette en enkel meny

Lag en bash -fil som heter SELECT1.sh med følgende bashskript. Her, 'plukke ut' Kommandoen vil hente hver data fra listen og skrive ut dataene som en meny. Følgende skript inneholder merkenavnene på mobiltelefoner, og etter å ha utført skriptet vil det lage en meny med mobile merker og be brukeren velge ethvert merke. Det vil trykke navnet på det valgte merket. Brukeren må trykke på Ctrl+c å avslutte fra skriptet.

#!/bin/bash
# Definer menylisten her
Velg merkevare i Samsung Sony iPhone Symphony Walton
gjøre
Echo "Du har valgt $ merke"
Ferdig

Produksjon:

Kjør manuset.

$ BASH SELECT1.sh

Følgende utgang vises etter å ha kjørt skriptet og valgt menyelementet nummer 1 og 4.

Eksempel-2: Velg kommando med en saksuttalelse

Hvordan du kan opprette en bash -meny med sakserklæring vises i dette eksemplet. Lag en bash -fil som heter SELECT2.sh med følgende bashskript. Etter å ha kjørt skriptet, vil brukeren velge ethvert menyelement og saksuttalelse vil samsvare med den valgte verdien med saksverdi. Her brukes flere saksverdier for å samsvare med det valgte menyelementet. Hvis ingen av saksverdien samsvarer med det valgte menyelementet, vil "Ugyldig oppføring" skrive ut.

#!/bin/bash
ekko "hvilket operativsystem liker du?""
# Operativsystemnavn brukes her som en datakilde
Velg OS i Ubuntu Linuxmint Windows8 Windows7 WindowsXP
gjøre
sak $ os i
# To saksverdier er her erklært for matching
"Ubuntu" | "Linuxmint")
ekko "Jeg bruker også $ OS.""
;;
# Tre saksverdier er her erklært for matching
"Windows8" | "Windows7" ​​| "Windows XP")
ekko "Hvorfor prøver du ikke Linux?""
;;
# Matching med ugyldige data
*)
ekko "ugyldig oppføring.""
gå i stykker
;;
Esac
Ferdig

Produksjon:
Kjør manuset.

$ BASH SELECT2.sh

Den forskjellige utgangen vil vises for forskjellige utvalg. Her blir 1 valgt første gang som er Ubuntu. det stemte overens med første saksevneutskrift på meldingen “Jeg bruker også Ubuntu”. 4 velges neste gang, og menyelementet er Windows 7 Men det er ingen saksverdi med dette navnet. Så denne gangen skrev det ut "Ikke godkjent inngang" og avslutt fra skriptet.

Eksempel-3: Opprette nestet bash-meny

Når noen menyer opprettes under den andres meny, kalles den en nestet meny. Den nestede menyen kan opprettes i basen ved å bruke to eller flere valg- og saksuttalelser. Lag en bash -fil som heter SELECT3.sh med følgende bashskript. Her brukes to utvalgte og saksuttalelser til å implementere den nestede menyen. Foreldremenyen inneholder 4 elementer og undermeny inneholder 3 elementer her.

#!/bin/bash
mens sant
gjøre
# Foreldremenyelementer erklært her
Velg element i Mus Printer Monitor HDD
gjøre
# Saksuttalelse for å sammenligne de første menyelementene
sak $ element i
Mus)
ekko "hvilken type skjerm du liker?""
;;
Skriver)
# Undermenyelementer her erklært her
Velg Sub_Item i Samsung HP Dell
gjøre
# Case Statement for Sun-meny-gjenstander
sak $ sub_item i
Samsung)
ekko "Prisen på Samsung -skriveren er $ 100"
gå i stykker
;;
HP)
Echo "New HP 880 Printer Price Printer er $ 450"
# Gå tilbake til foreldremenyen
gå i stykker
;;
Dell)
ekko "Ingen Dell -skriver er tilgjengelig nå"
# Gå tilbake til overordnet meny
Break 2
;;
Esac
Ferdig
gå i stykker
;;
Observere)
Ekko "Kjøp vår nye Samsung Monitor til lav pris"
Break # Gå tilbake til gjeldende (hoved) -meny
;;
HDD)
ekko "HDD av god kvalitet er tilgjengelig i aksjen"
# Gå tilbake fra manuset
Break 2
Esac
Ferdig
Ferdig

Produksjon:

Kjør manuset.

$ BASH SELECT3.sh

Etter å ha kjørt skriptet, vises foreldremenyen med 4 elementer. Her er det bare det andre menyelementet på overordnet menyen som inneholder undermeny. Etter å ha valgt 2, dukket undermenyen opp, og da brukeren valgte 3, viste den den samsvarende meldingen til menypunkt 3 og returnerer tilbake til overordnet meny.

Eksempel-4: Lag en bash-meny med en matrise

En matrisevariabel kan lagre flere data. Så du kan bruke en matrise som en dataliste for å lage en basemeny. Hvordan du kan bruke en matrise med en valgt setning for å opprette en meny vises i dette eksemplet. Lag en bash -fil som heter SELECT4.sh med følgende bashskript. Bash subroutine brukes i dette skriptet for å lage en meny fra matrisen. En matrise med tre elementer brukes og meny_from_array () kalles for å lage menyen. Skriptet vil sjekke det valgte menyelementsnummeret er mellom 1-3 eller ikke. Hvis nummeret ikke er innenfor dette området, vil det instruere brukeren velger det innenfor dette området, det vil skrive ut valg av menyelement med annen tekst.

#!/bin/bash
meny_from_array ()

Velg en; gjøre
# Kontroller det valgte menyelementsnummeret
if [1 -le "$ svar"] && ["$ svar" -le $#];
deretter
ekko "Det valgte operativsystemet er $ element"
gå i stykker;
ellers
Ekko "Feil valg: Velg hvilket som helst nummer fra 1-$#"
fi
Ferdig

# Erklære matrisen
Linux = ('Ubuntu' 'Linux Mint' 'Centos')
# Ring subroutine for å opprette menyen
meny_from_array "$ linux [@]"

Produksjon:

Kjør manuset.

$ BASH SELECT4.sh

Her velges 2 først som er innenfor rekkevidden og trykket teksten. 6 velges andre gang som er utenfor rekkevidde og foreslår at brukeren velger et nummer innenfor området.


For å forstå denne koden, bør vi lære noen triks 😉

  • Fordi det i Listen er ikke gitt i de utvalgte posisjonsparametere brukes som i dette tilfellet er ordene i matrisen som sendes til funksjonen
  • $ Svar Lagrer verdien av brukeren
  • Det logiske IF og betinget i funksjonen sjekker svaret er mellom 1 og størrelsen på posisjonsparameterarrayen

Konklusjon

Bash menyopprettingsoppgave ved å bruke en valgt setning blir forklart i denne opplæringen så enkel som mulig. Det er mange enkle og fancy måter å bruke i Bash når du lager menyer, og vi håper disse eksemplene gir deg et utgangspunkt for å lage dine egne kombinasjoner.