Kuidas Bashis käsurea argumente käsitleda?

Kuidas Bashis Kasurea Argumente Kasitleda



Linuxis kasutame bash-skripti sisendina käsurea argumente. Bash saab neid käsurea argumente järjestikku võtta ja valikuna sõeluda. Need argumendid võimaldavad teil toiminguid ja skripti väljundit dünaamiliselt mõjutada.

Neid argumente saate sisendi ja väljundi mõjutamiseks erinevalt konfigureerida. Sellepärast on käsurea arg-ide käsitlemine bashis hädavajalik, kuid paljud uued kasutajad peavad õppima, kuidas seda teha. Nii et selles juhendis selgitame erinevaid viise käsurea argumentide käsitlemiseks bashis.







Kuidas Bashis käsurea argumente käsitleda?

Bashis on käsurea arg-ide käsitlemiseks erinevaid viise, nii et vaatame neid lühiteabe saamiseks:



Getopti funktsioon



Funktsioon getopt on mugav, kuna see pakub bashis argumentide määratlemiseks ja sõelumiseks valikuid ja süntaksit. See on Linuxi sisseehitatud funktsioon, mida saate argumentide alusel kasutada andmebaasifaili või aruande loomisel kindlas vormingus. Funktsioon getopt aitab sõeluda lühikesi käsureaargumente, kuna argumente on kahte tüüpi:





  • Lühikesed argumendid: Need on ühekohalised argumendid, millele järgneb sidekriips. Näiteks -a, -l, -h jne on mõned üksikute argumentide näited.

  • Pikad argumendid: Need on mitme märgiga argumendid, millele järgneb topeltsidekriips. Pikkade argumentide kohta on erinevaid näiteid, nagu –all, –list, –help jne.

Võtame näite, kus käsitleme käsurea argumente utiliidi getopt abil. Oleme loonud bash-skripti nimega 'getopt.sh', mis sisaldab järgmist teavet:



!/ prügikast / bash

samal ajal getopts 'A:B:C:D:' üksikasjad; teha

juhtum ' $detailid ' sisse

A )

kaja 'Kodanikunimi on $OPTARG ' ;;

B )

kaja 'Kodaniku ID on $OPTARG ' ;;

C )

kaja 'Sünnikoht on $OPTARG ' ;;

D )

kaja 'Amet on $OPTARG ' ;;

* )

väljuda 1 ;;

esac

tehtud

nihe ' $(($OPTING -1) )'



kui [ ! - Koos 1 dollar ] ; siis

kaja 'Perekonnaseis $1'

muidu

kaja 'Sissekanded puuduvad'

väljuda 1

olla



kui [ ! - Koos 2 dollarit ] ; siis

kaja 'Pereliikmed 2 dollarit'

olla

Nüüd käivitame skripti nõutavate argumentidega sisendis:

Nagu näete ülaltoodud pildil, käivitame skripti ainult funktsioonidega getopt ja seejärel lisame täieliku tulemuse saamiseks tavalised argumendid.

Lippude kasutamine

Lipud pole muud kui üksikud märgid, millele eelnevad sidekriipsud (-). Kui edastame argumendid funktsiooni getopt abil, kasutame lippe. -a, -b, -c on mõned näited lippudest. Näiteks skript nõuab kodaniku nime, ID-d, kohta, vanust ja ametit. Seetõttu kasutasime lippe j, k, l, m, n, et määratleda üheaegselt kodaniku nimi, ID, koht, vanus ja amet:

#!/bin/bash

Kuigi getopts j:k:l:m:n: lipu_info

teha

juhtum ' ${flag_info} ' sisse
< ol >
< et > j ) kodanikunimi = ${OPTARG} ;; et >
< et > k ) kodanik = ${OPTARG} ;; et >
< et > l ) koht = ${OPTARG} ;; et >
< et > m ) vanus = ${OPTARG} ;; et >
< et > n ) okupatsioon = ${OPTARG} ;; et >
ol >
esac

tehtud

kaja 'Siin on sisestatud üksikasjad:'

kaja 'Kodanikunimi: $kodanikunimi ' ;

kaja 'Kodaniku ID: $kodanikud ' ;

kaja 'Koht: $koht ' ;

kaja 'Vanus: $vanus ' ;

kaja 'Elukutse: $okupatsioon ' ;

Skript annab terminalis järgmise tulemuse:

. /< stsenaarium > .sh -j Danny -k 476 -l Toronto -m 25 -n Autor

Kasutades [meil kaitstud] Silmustega

' [meil kaitstud] ” muutuja pole midagi muud kui kõigi sisendargumentide massiiv. Saame edastada suvalise arvu sisendeid kasutades ' [meil kaitstud] ” muutuja. Seda muutujat saate argumentide kordamiseks kasutada tsüklina. ' [meil kaitstud] ” muutuja tuleb siis kasuks; te ei tea sisendi suurust ega saa võtta positsiooniargumente. Seetõttu võite kasutada ' [meil kaitstud] ”  selle asemel, et ikka ja jälle defineerida funktsiooni getopt. Siin on näide silmuste ja kasutamisest [meil kaitstud] koos skriptis:

#!/bin/bash

ühel = ( '$ @ )



kui [ $# -gt 1 ]

siis



lisama =$ ( ( ${num[0]} + ${num[1]} ) )

kaja 'Kõigi numbrite liitmine on järgmine: $lisa '



lahutamine =$ ( ( ${num[0]} - ${num[1]} - ${num[2]} ) )

kaja 'Arvude lahutamine on: $lahutamine '



korrutada =$ ( ( ${num[0]} * ${num[1]} * ${num[2]} ) )

kaja 'Numbrite korrutis on: $korrutada '



jaotus1 =$ ( ( ${num[0]} / ${num[1]} ) )

kaja 'Jaotus ${num[0]} ja ${num[1]} on: $jaotus1 '



jaotus2 =$ ( ( ${num[1]} / ${num[2]} ) )

kaja 'Jaotus ${num[1]} ja ${num[2]} on: $jaotus2 '



jaotus3 =$ ( ( ${num[0]} / ${num[2]} ) )

kaja 'Jaotus ${num[0]} ja ${num[2]} on: $jaotus2 '



olla

Ülaltoodud skript teostab käsurea argumentide põhjal erinevaid aritmeetilisi arvutusi. Näiteks oleme sisestanud sisendiks 50, 35 ja 15:

Positsiooniparameetrite kasutamine

Saate juurdepääsu positsiooniparameetritele, kuna need avavad kõigepealt $1, seejärel $2 ja nii edasi. Näiteks loome skripti, mis loeb esimese argumendina nime ja seejärel teise argumendina linna. Kui aga möödud enne linnast ja siis nimest, siis loeb see nime linnaks ja vastupidi. Selle kontseptsiooni mõistmiseks sukeldume põhjalikumalt järgmisesse skripti:

#!/bin/bash

kaja 'Siin on sisestatud üksikasjad'

kaja 'nimi $1'

kaja 'linn $2'

Peate terminalis skripti täitmise ajal lisama nime ja linna:

Pakkimine

See on kõik, mida peate teadma bashi käsurea argumentide käsitlemise meetodite kohta. Oleme selgitanud erinevaid lähenemisviise, mida saate sobivate näidetega proovida. Kui soovite skripti argumente lisada, on erinevaid käske. Nii et külastage kindlasti Linuxhinti, et nende kohta rohkem teada saada.