I UNIX -skal (som bash, zsh, etc.) är positionsparametrar speciella variabler som lagrar de argument som skickas till ett skript eller funktion. De är numrerade, från 1.
* `$ 1`:innehar det första argumentet.
* `$ 2`:innehar det andra argumentet.
* `$ 3`:innehar det tredje argumentet, och så vidare.
`$ 0` är ett speciellt fall:det har namnet på skriptet eller funktionen själv.
Exempel:
Låt oss säga att du har ett skript med namnet `my_script.sh` med följande innehåll:
`` `bash
#!/bin/bash
Echo "Skriptnamnet är:$ 0"
Echo "Det första argumentet är:$ 1"
Echo "Det andra argumentet är:$ 2"
`` `
Om du kör det så här:
`` `bash
./my_script.sh Hello World
`` `
Utgången skulle vara:
`` `
Skriptnamnet är:./my_script.sh
Det första argumentet är:Hej
Det andra argumentet är:världen
`` `
Viktiga överväganden:
* Antal argument: Du kan få åtkomst till argument upp till det angivna antalet. Att försöka komma åt `$ 4 'när endast tre argument gavs kommer att resultera i en tom sträng eller ett fel, beroende på skalet och hur skriptet skrivs.
* Citat: Korrekt citat är avgörande när man hanterar argument som innehåller utrymmen eller specialtecken. Citera alltid dina positionsparametrar när du använder dem i kommandon för att undvika orddelning och globeringsproblem. Till exempel:`echo" $ 1 "` är säkrare än `echo $ 1`.
* `$@` och `$*`:Dessa speciella variabler ger alternativa sätt att komma åt alla positionsparametrar. `$@` expanderar till varje argument individuellt, citerade, medan `$*` expanderar till en enda sträng som innehåller alla argument. `$@` är i allmänhet att föredra för sin säkrare hantering av argument med utrymmen.
* `Skift ':kommandot` skift' tar bort den första positionsparametern och förskjuter de återstående till vänster. Detta är användbart för att bearbeta argument i följd.
I huvudsak är positionsparametrar en grundläggande mekanism för att överföra data till Unix Shell -skript och funktioner, vilket möjliggör flexibilitet och återanvändbarhet.