Hvordan sender jeg argument i et Bash -skript?

How Do I Pass Argument Bash Script



De fleste Linux Mint 20 -brukerne sitter fast når de sender et argument i et bash -skript. Du kan sende argumentene til et hvilket som helst bash -skript når det kjøres. Det er flere enkle og nyttige måter å sende argumenter i et bash -skript. I denne artikkelguiden vil vi fortelle deg om noen veldig enkle måter å passere og bruke argumenter på i bash -skriptene dine.

Passere argumenter ved hjelp av standardvariabler:

Lag en ny fil med et hvilket som helst navn ved hjelp av berøringskommandoen, for eksempel file.sh.







$ta påfilnavn



Åpne denne nyopprettede filen og legg til noe bash -skript i den. Jeg har lagt til noen standardvariabler, f.eks. $ 1, $ 2 og $ 3 følgelig. Uansett hvilke argumenter som blir ført gjennom terminalen, vil de bli lagret i de angitte variablene.







Du må kjøre denne filen ved hjelp av ./ -kommandoen etterfulgt av noen argumenter. Som du kan se på bildet, oppstår det en feil når jeg passerte argumentene: Tillatelse nektet. Dette er fordi denne filen ikke har kjøringsrettigheter.

$./filnavn argument1 argument2 argument

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



$sudo chmod+x filnavn

Kjør filen igjen med den samme kommandoen ovenfor. Denne gangen har jeg kommet med forskjellige argumenter. Du vil se at de nylig passerte argumentene er lagret i standardvariablene.

Passerer Shell -skriptnavn som argument:

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

Når du kjører den samme ./ shell -skriptkommandoen, blir navnet på skallskriptet, f.eks. ./filnavn vil bli lagret i $ 0 -variabelen som et argument.

Overføre argumenter som en matrise til variabel:

Fra og med den samme filfilen.sh, må du legge til noen ekstra linjer i det gamle skriptet. Deklarere en variabel som heter array. Legg til en standardvariabel [e -postbeskyttet] som lagrer argumentene som er angitt av brukeren som en matrise. Disse argumentene blir analysert til variabel matrise. Den siste linjen viser alle argumentene i variabelen som er sortert etter indeksnummeret.

Utfør ./ shell -skriptet. Du vil se at den vil vise argumentene eller verdiene som er lagret som en matrise i [e -postbeskyttet] analysert til variabel matrise, men ikke skallskriptnavnet i den andre ekko -setningen. Du vil ha følgende utgang.

$./filnavn argument1 argument2 argument

Bruk den samme filen med det samme skriptet. Bare fjern $ {array [3]} fra den siste linjen slik det er tydelig på bildet.

Etter at du har utført ./ -kommandoen, vil du se en lignende utgang som du fikk i eksemplet ovenfor uten endring.

Du kan også få det samme resultatet ved å erstatte den siste linjen i bash -skriptet med ett enkelt ord. Du trenger bare å legge til [e -postbeskyttet] i ekko -setningen, og den vil vise argumentene som er tilstede i denne variabelen.

Så hvis du kjører ./ -kommandoen igjen, får du de samme resultatene.

Sjekk totalt antall bestått argumenter:

Tvert imot, hvis du vil vite det totale antallet argumenter som er sendt av brukeren, kan du også gjøre det. For dette formålet må du bare erstatte [e -postbeskyttet] med $# i ekko.

Igjen utførelse av ./ -kommandoen, Du kommer nå til å se hele figuren med argumenter sendt til skriptet. I vårt tilfelle passeres 3 argumenter som verdi.

Lag linje for linje -utgang av argumenter:

Lag en ny fil test.sh i hjemmekatalogen. Legg til bash -skriptet 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 -kommandoen igjen. Og du får sortert linje for linje sortert utgang av argumenter.

Begrens variabelen via argumentindeksnummer:

Hvis du vil begrense variabelen ved hjelp av 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 fra brukerne er mindre enn indeksnummeret som er angitt i grensevariabelen, får du en tom argumentverdi. Som et eksempel 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 passert.

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

Kontroll av argumenter for spesifikke verdier:

Lag en ny fil med navnet Check.sh i hjemmekatalogen. Legg til det samme bash -skriptet som vist på bildet nedenfor. I dette skriptet har vi en variabel var for å lagre argumentverdien passert av brukeren. Deretter har vi en if -setning, som vil sjekke om argumentverdien samsvarer eller ikke. Hvis argumentverdien samsvarer med verdien som er angitt i parentes, vil den første ekkosetningen bli utført. Hvis verdien ikke samsvarer, vil den andre ekko -setningen bli utført.

Når vi kjører skallskriptkommandoen, vil det oppstå en feil. Ved å bruke chmod -kommandoen kan vi rette opp denne feilen.

Etter det, kjør skallskriptet for den aktuelle filen med en 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 den første ekko -setningen som vist.

På den annen side, hvis du oppgir de forskjellige argumentverdiene i skallskriptet, vil den vise den andre ekko -setningen. Her har jeg lagt til Rimsha som en argumentverdi, som er forskjellig fra verdien som er gitt i if -setningen. Så bash script vil utføre den andre ekko -setningen.

Konklusjon:

Jeg håper denne guiden har hjulpet deg tilstrekkelig til å ha et godt grep om hvordan du sender argumenter til standardvariabler, sender argumentverdien som en matrise til en variabel, får det totale antallet argumenter bestått, linje for linje -utgang av argumenter, begrenser argumentet utdata ved hjelp av indeksnummer, kontroll av spesifikt verdi -argument og mange flere.