Bash getopts

Bash getopts
Noen ganger må vi lese kommandolinjeargumenter og alternativer i bash -skript. Kommandolinje argumenter kan enkelt leses etter argumentvariabler. Men for å lese både kommandolinjeargumenter og alternativer, brukte Bash en innebygd kommando 'getopts'. Denne kommandoen kan brukes til å analysere korte alternativer som '-a' eller '-1' og lange alternativer som '-package-name'. Hvordan 'getopts' -kommando kan brukes til å analysere kommandolinje -argumenter og alternativer vises i denne opplæringen ved å bruke forskjellige eksempler.

Syntaks:

GetOpts OptString Name [Args]

Alternativer:

Noen for det meste er nevnt for meg som er nevnt her.

stikkord Beskrivelse
-o eller -opsjoner Identifiser alternativet ett tegn.
-L eller -longoptions Identifiser alternativer for flere karakterer.
-n eller -navn Rapporter feil som kommer fra GetOpts -kommandoen
-Q eller -quiet Deaktiver feilrapportering
-T eller -test Test GetOpts -versjon
-a eller -alternativ Tillat langt alternativ med singel '-'

Eksempel 1: Bruke en enkelt alternativ

Dette eksemplet viser den veldig enkle bruken av getopts -kommandoen. Lag en bash -fil som heter 'getopts1.sh 'med følgende kode for å teste koden. Her, mens Loop vil fortsette med muligheten til GetOpts -kommandoen. Sakserklæring vil sjekke alternativet. Hvis alternativet er 'C', vil skriptet skrive ut 'favorittfargen min er blå'. Hvis alternativet er 'F', vil manuset skrive ut 'favorittmaten min er iskrem'. Hvis alternativet er '-m', vil manuset skrive ut 'favorittfilmen min er Titanic'. For enhver annen opsjonsverdi, "må du bruke: [-c] eller [-f] eller [-m]" vil skrive ut.

#!/bin/bash
# Les alternativet og lagre i variabelen, $ -alternativet
mens getopts "CFM" -alternativ; gjøre
sak $ alternativ i
c) #for alternativ c
ekko "Min favorittfarge er blå"
;;
f) #for alternativ f
ekko "Min favorittmat er iskrem"
;;
m) #for alternativ m
ekko "Min favorittfilm er Titanic"
;;
\? ) #For ugyldig alternativ
ekko "Du må bruke: [-c] eller [-f] eller [-m]"
;;
Esac
Ferdig

Kjør skriptet ved å bruke fire alternativer, '-c', '-f', '-m' og '-K'.

$ bash getopts1.sh -c
$ bash getopts1.sh -f
$ bash getopts1.sh -m
$ bash getopts1.sh -k

Produksjon:

Eksempel-2: Bruke alternativ med et enkelt argument

Dette eksemplet viser bruken av getopts -kommando med et argument. Lag en bash -fil som heter 'getopts2.sh 'med følgende kode for å teste koden. Her ':' brukes med 'P' for å definere at kommandoen vil ta argumentasjon med alternativet. Skriptet vil skrive ut argumentverdien med annen streng hvis argumentet med '-p' -alternativet gir på kjøretid. Hvis noe alternativ vil gi i stedet for '-p', vil det vise en feilmelding med opsjonsverdi. Hvis '-p' -alternativet vil gi uten noe argument, vil en annen feilmelding skrives ut.

#!/bin/bash
mens getopts "p:" opt; gjøre
sak $ opt i
p) #trykk argumentverdien
ekko "Jeg liker $ OptArg -programmering"
;;
\? )
#print Alternativfeil
Echo "Ugyldig alternativ: $ Optarg" 1> & 2
;;
:
#print -argumenteringsfeil
Echo "Ugyldig alternativ: $ Optarg krever et argument" 1> & 2
;;
Esac
Ferdig

Kjør skriptet med alternativet -P og argumentverdien 'bash', med bare alternativ -P og med alternativet -T.

$ bash getopts2.sh -p bash
$ bash getopts2.sh -p
$ bash getopts2.sh -t

Produksjon:

Eksempel-3: Bruke alternativ med flere argumenter

Dette eksemplet viser bruken av getopts -kommando med flere argumenter. Lag et bash -skript som heter Grtopts3.SH med følgende kode for å teste skriptet. I følge skriptet vil komma -separerte argumentverdier bli gitt fra kommandolinjen.

Her brukes '-f' -alternativet og IFS-variabelen for å dele opp argumentene og lagres i en matrise, $ numarr. Hvis de komma-separerte argumentene vil gi, vil det skrive ut det totale antall argumenter. To alternativer vil støtte kommandoen. Summen av argumentverdiene vil bli beregnet og skrevet ut hvis '-a' -alternativet vil gi argumentene. Multiplikasjonen av argumentverdiene vil bli beregnet og skrevet ut hvis '-m' -alternativet vil gi argumentene.

#!/bin/bash
mens getopts "a: m:" opt; gjøre
sett -f; Ifs = ','
numarr = ($ 2)
ekko "Totalt antall argumenter = $ #numarr [@]"
sak $ melde deg inn
a) Resultat = 0
for jeg i "$ numarr [@]"; gjøre
((Resultat = $ Resultat+$ i))
Ferdig
ekko "summen av alle argumenter = $ resultat" ;;
m) resultat = 1
for jeg i "$ numarr [@]"; gjøre
((Resultat = $ Resultat*$ i))
Ferdig
ekko "Multiplikasjonen av alle argumenter = $ Resultat" ;;
*) ekko "Ugyldig alternativ eller argument"
Avslutt 1
Esac
Ferdig

Kjør skriptene med '-a' alternativet og tre argumenter, med '-m' -alternativet og tre argumenter og '-T' -alternativet uten noe argument.

$ bash getopts3.sh -a 3,2,5
$ bash getopts3.sh -m 3,2,5
$ bash getopts3.sh -t

Produksjon:

Eksempel-4: Bruke flere alternativer og argumenter

Dette eksemplet viser bruken av getopts -kommando med flere alternativer og flere argumenter. Lag en bash -fil som heter 'getopts4.SH med følgende kode for å teste eksemplet. Her vil to alternativer fungere med to argumenter separat. Hvis ingen av alternativene vil gi, vil den skrive ut en feilmelding.

#!/bin/bash
mens getopts "n: m:" opt; gjøre
sak $ melde deg inn
n)
#Reading første argument
ekko "Navnet på studenten er $ Optarg"> & 2
;;
m)
#Reading andre argument
ekko "og merkene er $ optarg"> & 2
;;
*)
#Printing Feilmelding
ekko "Ugyldig alternativ eller argument $ Optarg"
;;
Esac
Ferdig

Når manuset vil kjøre etter alternativet '-n' med 'Ella' og '-M' -alternativet med 85, vil to saksuttalelser sant og skrive ut to utganger. Når skriptet bare kjøres etter alternativet '-n' med 'Ella', vil bare en saksuttalelse sant og skrive ut en utdata. Når skriptet drives av '-p' -alternativet, vil en feilmelding skrives ut.

$ bash getopts4.Sh -n Ella -m 85
$ bash getopts4.Sh -n Ella
$ bash getopts4.Sh -p Ella

Konklusjon

Grunnleggende bruk av 'getopts' -kommando vises i denne opplæringen ved å bruke eksemplene ovenfor. Håper, etter å ha øvd på denne opplæringen, vil du kunne bruke kommandolinjealternativer og argumenter i Bash -skriptet ditt.