Posisjonsparameter

Posisjonsparametere

TIL posisjonsparameter er et argument spesifisert på kommandolinje , brukes til å starte den nåværende prosessen i et skall. Posisjonsparameterverdier lagres i et spesielt sett med variabler vedlikeholdes av skallet.

Variabler som lagrer posisjonsparametere

Et typisk eksempel på et skall som bruker posisjonsparametere er bash . Du kan bruke bash on Linux , BSD , macOS X og Windows 10 .

Vurder følgende bash-kommando. Kommandonavnet er min kommando . Kommandolinjen har tre parametere: en , to , og tre fire .

hvordan du laster ned youtube-videoer til datamaskinen din
mycommand one two 'three four'
Tips

Posisjonsparametere er avgrenset av et mellomrom. Skallet tolker tingene etter mellomrommene som individuelle parametere. Hvis selve parameteren inneholder et mellomrom, legger du den inn anførselstegn , som i 'tre fire' ovenfor.

Samtidig som min kommando kjører, gir bash det følgende skallvariabler:

Variabelt navn Verdi
$ 0 min kommando
$ 1 en
$ 2 to
$ 3 tre fire
$ # 3
[e-postbeskyttet] en to tre fire
$ * en to tre fire

Variabelen $ 0 er satt til det første ordet i kommandoen - kommandonavnet. Denne variabelen er nyttig fordi kommandoer kan omdøpes eller kjøres ved hjelp av a symbolsk lenke . Noen programmer oppfører seg forskjellig, avhengig av kommandonavnet som ble brukt til å kjøre programmet. $ 0 lar et program se hvilket kommandonavn som startet det.

Variablene $ 1 , $ 2 , og $ 3 inneholder verdiene til henholdsvis første, andre og tredje parameter. Hvis det var en fjerde parameter, ville verdien plasseres i variabelen $ 4 . Parametere større enn 9 kan nås ved hjelp av krøllete bukseseler rundt tallet; for eksempel, $ {10} ville være den tiende parameteren, og $ {123} ville være den 123.

Variabelen $ # inneholder antall posisjonsparametere, unntatt $ 0.

Variabelen [e-postbeskyttet] inneholder verdien av alle posisjonsparametere, unntatt $ 0.

Variabelen $ * er det samme som [e-postbeskyttet] , bortsett fra når den er sitert dobbelt. Når det er omsluttet av doble anførselstegn, $ * utvides til $ 1c $ 2c $ 3c ... hvor c er den første karakteren av $ IFS , bashs interne feltseparatorvariabel. IFS brukes til orddeling, og standardverdien er 'mellomrom, fane eller ny linje' - det er her bash ser begynnelsen og slutten av ett ord.

hvordan du sletter ved hjelp av tastaturet

Hvis verdien av $ IFS er ' _ '(en understrek ), '[e-postbeskyttet]' utvides til:

 one two three four

Mens '$ *' utvides til:

 one_two_three four

Eksempler

Her er eksempler på bruk av posisjonsparametere i bash.

Bruker sett innebygd kommando, verdien av [e-postbeskyttet] kan endres for gjeldende skall. Alt etter sett - er registrert som en posisjonsparameter.

set -- one two 'three four'

Nå kan vi iterere over disse variablene ved hjelp av til ... i :

kan ikke kommentere på youtube
for arg in [email protected] ; do echo '$arg'; done
one two three four

I bash, [e-postbeskyttet] er standardlisten som skal gjentas når du løper til , så denne kommandoen fungerer også:

for arg; do echo '$arg'; done
one two three four

Itererer over '$ *' (med doble anførselstegn) gir en sammenkoblet streng av posisjonsparametere, sammen med første tegn i $ IFS :

IFS=','; for arg in '$*'; do echo '$arg'; done
one,two,three four

For mer informasjon, se dokumentasjonen til bash-kommandoskallet .