Skriptargumenter og alternativer ($@, $#, getopts)
Lær å sende argumenter til skriptene dine og tolke kommandolinjealternativer ved hjelp av spesialvariabler og «getopts».
Skriptargumenter og alternativer ($@, $#, getopts) er en gratis leksjon i DevOps-bootcamp på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i DevOps-bootcamp, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i DevOps-bootcamp inneholder totalt 4 leksjoner.
Skriptargumenter: Hvorfor bruke dem
Har du noen gang brukt en kommando som ls -l eller cp file1 file2? -l, file1 og file2 er alle argumenter! De forteller kommandoen hva den skal gjøre eller hvilke data den skal arbeide med.
I Bash-skripting gjør argumenter skriptene dine fleksible. I stedet for å hardkode verdier kan skriptet ta imot inndata direkte fra kommandolinjen når det kjøres.
Aksessere posisjonsargumenter
Når du kjører et skript med argumenter, tildeler Bash dem automatisk til spesielle variabler som kalles posisjonsparametere.
- Det første argumentet er
$1. - Det andre argumentet er
$2. - Og så videre, opptil
$9.
For argumenter etter nummer 9 bruker du krøllparenteser, for eksempel ${10}, ${11} og så videre. Disse variablene inneholder verdiene som sendes til skriptet.
Demo: Posisjonsargumenter
La oss se hvordan du aksesserer disse argumentene i et skript. Lagre dette som greet.sh og kjør det med ./greet.sh Alice Bob.
#!/bin/bash
echo "Hello, $1!"
echo "Welcome, $2."
echo "The third argument (if any) is: $3"`$0` og `$#`: Skriptinformasjon
Bash har flere spesielle variabler som gir deg informasjon om selve skriptet og argumentene:
$0: Inneholder navnet på skriptet som kjøres. Dette er nyttig i feilmeldinger eller logger.$#: Denne variabelen inneholder det totale antallet posisjonsargumenter som er sendt til skriptet.
Disse variablene bidrar til å gjøre skriptene dine mer robuste og brukervennlige.
Demo: `$0` og `$#`
Kjør dette skriptet med ulike antall argumenter, for eksempel ./info.sh one two three eller bare ./info.sh.
#!/bin/bash
echo "Script name: $0"
echo "Number of arguments received: $#"`$@` kontra `$*`: Alle argumenter
Noen ganger trenger du å referere til alle argumentene samtidig. Bash tilbyr to måter:
$@: Utvides til separate argumenter. Når uttrykket står i doble anførselstegn ("$@"), forblir hvert argument et separat ord, selv om det inneholder mellomrom. Dette foretrekkes vanligvis i løkker.$*: Utvides til én enkelt streng med alle argumentene. Når uttrykket står i doble anførselstegn ("$*"), kombineres alle argumentene til ett enkelt ord, atskilt med det første tegnet iIFS(Internal Field Separator, vanligvis mellomrom).
Bruk alltid "$@" når du itererer gjennom argumenter, slik at mellomrom bevares!
Demo: Iterere med `"$@"`
Dette skriptet viser hvordan "$@" håndterer argumenter som inneholder mellomrom på riktig måte. Kjør det slik: ./loop_args.sh hello "world wide" web
#!/bin/bash
echo "Processing arguments with \"$@\":"
for arg in "$@"; do
echo " Argument: [$arg]"
done
echo "\nProcessing arguments with \"$*\":"
for arg in "$*"; do
echo " Argument: [$arg]"
doneAlternativer: Mer enn posisjonsargumenter
Posisjonsargumenter er utmerket i enkle tilfeller, men hva om skriptet trenger valgfrie flagg eller navngitte parametere, som -v for detaljert utskrift eller -f filename?
Det er her kommandolinjealternativer kommer inn. De gjør skriptene mer fleksible og brukervennlige, slik at brukerne kan angi innstillinger i valgfri rekkefølge.
Bash har kommandoen getopts spesielt for å tolke denne typen alternativer.
`getopts`-syntaks: `optstring`
Den grunnleggende syntaksen for getopts er: getopts optstring variable.
optstring: En streng med gyldige alternativtegn. Hvis et alternativ krever et argument, for eksempel-f filename, setter du et kolon etter tegnet, for eksempelf:.variable: Et variabelnavn dergetoptslagrer tegnet for alternativet som behandles, for eksempelopt.
getopts angir også OPTARG for alternativargumenter og OPTIND for indeksen til det neste argumentet.
Demo: Grunnleggende `getopts`
Dette skriptet behandler alternativene -v (detaljert utskrift) og -f (fil). Prøv å kjøre det: ./options.sh -v -f mydata.txt -x eller ./options.sh -vf mydata.txt
#!/bin/bash
while getopts "vf:" opt; do
case $opt in
v)
echo "Verbose mode enabled."
;;
f)
echo "File specified: $OPTARG"
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
doneRask kontroll: Argumentvariabler
Se på følgende skript og hvordan det kjøres:
#!/bin/bash
echo "Script: $0"
echo "Count: $#"
for arg in "$@"; do
echo "Arg: $arg"
doneHvis du kjører: ./myscript.sh "Hello World" 123
Hva blir utskriften?
Oppsummering: Argumenter og alternativer
Godt jobbet! Du har lært hvordan du kan gjøre Bash-skriptene dine langt mer allsidige:
- Posisjonsargumenter: Bruk
$1,$2og så videre for å aksessere argumenter direkte. - Spesielle variabler:
$0for skriptnavnet,$#for antallet argumenter og"$@"for å iterere trygt gjennom alle argumentene. - Kommandolinjealternativer: Bruk
getoptstil å tolke navngitte alternativer, som-v, og argumentene deres, som-f filename, slik at skriptene blir mer robuste og brukervennlige.
Øv på å bruke disse i dine egne skript for å lage kraftige og fleksible kommandolinjeverktøy!
Lær deg DevOps-bootcamp med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 142
- Leksjoner
- 568
Ofte stilte spørsmål
Er leksjonen «Skriptargumenter og alternativer ($@, $#, getopts)» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien DevOps-bootcamp, inkludert «Skriptargumenter og alternativer ($@, $#, getopts)», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i DevOps-bootcamp inneholder totalt 4 leksjoner.
Hva lærer jeg i «Skriptargumenter og alternativer ($@, $#, getopts)»?
Lær å sende argumenter til skriptene dine og tolke kommandolinjealternativer ved hjelp av spesialvariabler og «getopts». Du øver på DevOps-bootcamp med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med DevOps-bootcamp?
Ingen tidligere erfaring er nødvendig. DevOps-bootcamp på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Skriptargumenter og alternativer ($@, $#, getopts)»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne DevOps-bootcamp-leksjonen?
Ja. Alle DevOps-bootcamp-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Løkker (for, while)
- Funksjoner i Bash-skript
- Skriptargumenter og alternativer ($@, $#, getopts)
- case-setningen og mønstergjenkjenning