
Variabler, der lagrer positionsparametre
Et typisk eksempel på en skal, der anvender positionsparametre, er bash. Du kan bruge bash på Linux, BSD, MacOS X og Windows 10.
Overvej følgende bash kommando. Kommandoenavnet er mycommand . Kommandolinjen har tre parametre: en, to og tre fire .
mycommand en to "tre fire"
Tip: Positionsparametre afgrænses af et mellemrum. Skallen fortolker tingene efter rummene som individuelle parametre. Hvis parameteren selv indeholder et mellemrum, skal du vedlægge det i anførselstegn, som i "tre fire" ovenfor.
Mens mycommand kører, leverer bash det med følgende shell-variabler:
Variabelt navn | Værdi |
---|---|
$ 0 | mycommand |
$ 1 | en |
$ 2 | to |
$ 3 | tre fire |
$ # | 3 |
[email protected] | en to tre fire |
$ * | en to tre fire |
Variablen $ 0 er sat til det første ord i kommandoen - kommandoenavnet. Denne variabel er nyttig, fordi kommandoer kan omdøbes eller udføres ved hjælp af et symbolsk link. Nogle programmer opfører sig forskelligt afhængigt af det kommandoenavn, der bruges til at køre programmet. $ 0 gør det muligt for et program at se, hvilket kommandonavn der blev lanceret.
Variablerne $ 1, $ 2 og $ 3 indeholder værdierne for henholdsvis den første, anden og tredje parameter. Hvis der var en fjerde parameter, ville dens værdi placeres i variablen $ 4 . Parametre større end 9 kan fås ved at bruge krøllede seler rundt om nummeret; for eksempel $ {10} ville være den tiende parameter, og $ {123} ville være den 123.
Variabel $ # indeholder antallet af positionsparametre, eksklusive $ 0.
Variablen [email protected] indeholder værdien af alle positionsparametre, eksklusive $ 0.
Variablen $ * er den samme som [email protected], undtagen når den er dobbeltnoteret. Når den lukkes i dobbelt citater, udvider $ * til $ 1c $ 2c $ 3c ... hvor c er det første tegn på $ IFS, bash's interne feltafskiller variabel. IFS'en bruges til orddeling, og standardværdien er "plads, fan eller newline" - det er her bash ser slutningen af et ord og begyndelsen af det næste.
Hvis værdien af $ IFS er " _ " (et understreg), udvides "[email protected]" til:
en to tre fire
Mens "$ *" udvides til:
en to tre fire
eksempler
Her er nogle eksempler på at bruge positionsparametre i bash.
Ved hjælp af den indbyggede indbyggede kommando kan værdien af [email protected] ændres til den aktuelle shell. Alt efter set - vil blive registreret som en positionsparameter.
sæt - en to "tre fire"
Nu kan vi gentage over disse variabler ved at bruge til ... i :
for arg i [email protected]; gøre ekko "$ arg"; Færdig
en to tre fire
I bash er [email protected] standardlisten til at gentage, når du kører for, så denne kommando fungerer også:
for arg; gøre ekko "$ arg"; Færdig
en to tre fire
Iterating over "$ *" (med dobbelt citater) vil give en sammenkædede streng af positionsparametre, der er forbundet med det første tegn på $ IFS :
IFS = ""; for arg i "$ *"; gøre ekko "$ arg"; Færdig
en to tre fire
Yderligere oplysninger finder du i dokumentationen af bash-kommandoskallen.
Parameter, programmeringsbetingelser