Hvordan passerer jeg argument i et bash -manus?

Hvordan passerer jeg argument i et bash -manus?
De fleste av Linux Mint 20 -brukere befinner seg fast når de gir et argument i et bash -skript. Du kan sende argumentene til et hvilket som helst bash -skript når det blir utført. Det er flere enkle og nyttige måter å formidle argumenter i et bash -manus. I denne artikkelen vil vi gi deg beskjed om noen veldig enkle måter å passere og bruke argumenter i bashskriptene dine.

Passerende argumenter ved å bruke standardvariabler:

Opprett en ny fil med et hvilket som helst navn ved hjelp av “Touch” -kommandoen, e.g., "fil.sh ”.

$ Touch filnavn

Åpne denne nyopprettede filen og legg til noe bash -skript i den. Jeg har lagt til noen standardvariabler, e.g. “$ 1”, “$ 2” og “$ 3” følgelig. Uansett hvilke argumenter som vil bli gitt gjennom terminalen, vil bli lagret i de uttalte variablene.

Du må kjøre denne filen ved å bruke "./”Kommando etterfulgt av noen argumenter. Som du kan se på bildet at når jeg passerte argumentene, oppstår det en feil: Tillatelse nektet. Dette er fordi denne filen ikke har utførelsesrettigheter.

$ ./filnavn argument1 argument2 argument

Så for å gi utførelsesrettighetene til denne filen, bruk sudo “chmod” -kommandoen for å gjøre det.

$ sudo chmod +x filnavn

Nå, kjør igjen filen ved å bruke den samme kommandoen ovenfor. Denne gangen har jeg gitt forskjellige argumenter. Du vil se at de nylig passerte argumentene er lagret i standardvariablene.

Passerende skallskriptnavn som argument:

Nå bruker du den samme gamle filen “Fil.SH ”med en liten endring i standardvariablene. Du må legge til variabelen “$ 0” i skriptet som vist.

På å kjøre det samme “./”Shell Script -kommando, navnet på skallskriptet ditt, e.g. “./filnavn "vil bli lagret i variabelen“ $ 0 ”som et argument.

Passerende argumenter som en matrise til variabel:

Starter med den samme filen “Fil.sh ”, du må legge til noen ekstra linjer i det gamle manuset. Erklære en variabel som heter “Array”. Legg til en standardvariabel “$@” som vil lagre argumentene som er lagt inn av brukeren som en matrise. Disse argumentene vil bli analysert til variabel “Array”. Den siste linjen vil vise alle argumentene til variabelen “Array” sortert etter indeksnummeret.

Utfør “./”Shell -skript. Du vil se at den vil vise argumentene eller verdiene som er lagret som en matrise i “$@” analysert til variabel “Array”, men ikke Shell -skriptnavnet i det andre “Echo” -uttalelsen. Du vil ha følgende utgang.

$ ./filnavn argument1 argument2 argument

Bruk den samme filen med samme skript. Bare fjern “$ array [3]” fra den siste linjen som klart på bildet.

Etter å ha utført “./”Kommando, vil du se en lignende utdata som du kom i eksemplet ovenfor uten endring.

Du kan også få det samme resultatet ved å erstatte den siste linjen i bashskriptet med ett enkelt ord. Du må bare legge til “$@” i Echo -setningen, og det vil vise argumentene som er til stede i denne variable matrisen.

Så å kjøre “./”Kommando igjen, du vil få de samme resultatene.

Sjekk totalt antall argumenter som er bestått:

Tvert imot, hvis du vil vite det totale antallet argumenter som er gitt av brukeren, kan du også gjøre det. For dette formålet må du bare erstatte “$@” med “$#” i “Echo”.

Igjen utføre "./”Kommando, du skal nå se hele figuren av argumenter som er overført til manuset. I vårt tilfelle sendes 3 argumenter som verdi.

Lag linje for linjeutgang fra argumenter:

Lag en ny fil "Test.SH ”i hjemmekatalogen. Legg til bashskriptet som vist.

Kjør nå den samme gamle kommandoen med forskjellige argumenter. For det første vil du se feilen: Tillatelse nektet.

Du må utføre “ChMod” -kommandoen for å gi denne filen sudo -privilegier. Etter det, kjør "./”Shell Script Command igjen. Og du vil få linjen for linje sortert utdata fra argumenter.

Begrens variabelen via argumentindeksnummer:

Hvis du vil begrense variabelen ved å bruke indeksnummeret, kan du gjøre det veldig enkelt. Legg til krøllete parenteser etter “$” -tegnet og legg til argumentindeksnummeret du vil vise før andre argumenter.

Hvis argumentene gitt av brukerne er mindre enn indeksnummeret som er gitt i grensevariabelen, vil du få en tom argumentverdi. Som et tilfelle har jeg gitt 4 argumenter, men jeg har gitt "05" argumentverdien som skal vises. I denne situasjonen vil variabelen vises tom fordi det femte argumentet ikke er vedtatt.

Men når du passerer like eller flere antall argumenter i kommandoen, vil du få verdien som vises i resultatet som vist.

Kontrollere spesifikke verdiargumenter:

Lag en ny fil med navnet “Sjekk.SH ”i hjemmekatalogen din. Legg til det samme bashskriptet som vist i bildet nedenfor. I dette skriptet har vi en variabel "var" for å lagre argumentverdien som er gitt av brukeren. Så har vi en "if" uttalelse, som vil se etter at argumentverdien skal matches eller ikke. Hvis argumentverdien blir matchet med verdien gitt i parentesen, vil den første "ekko" -uttalelsen bli utført. Hvis verdien ikke samsvarer, vil den andre "ekko" -uttalelsen bli utført.

Når vi kjører Shell Script -kommandoen, vil den øke en feil. Ved å bruke “CHMOD” -kommandoen, kan vi rette opp denne feilen.

Etter det, utfør skallskriptet for den aktuelle filen med en viss argumentverdi. I vårt tilfelle har vi gitt "AQSA" som en argumentverdi, som er den samme som verdien som vises i parentesen. Så Bash -skriptet vil utføre det første "ekko" -uttalelsen som vist.

På den annen side, hvis du gir de forskjellige argumentverdiene i Shell -skriptet, vil det vise den andre "ekko" -uttalelsen. Her har jeg lagt til “Rimsha” som en argumentverdi, som er forskjellig fra verdien gitt i IF -uttalelsen. Så Bash -skriptet vil utføre det andre "Echo" -uttalelsen.

Konklusjon:

Jeg håper denne guiden har hjulpet deg tilstrekkelig til å ha et sterkt grep om hvordan du kan overføre argumenter til standardvariabler, passere argumentverdi som en rekke output ved bruk av indeksnummer, sjekke spesifikt verdiargument og mange flere.