Scriptargumenter og indstillinger ($@, $#, getopts)
Lær at sende argumenter til Deres scripts og fortolke kommandolinjeindstillinger ved hjælp af særlige variabler og 'getopts'.
Scriptargumenter og indstillinger ($@, $#, getopts) er en gratis Linux-kommandolinjen og Bash-scripting på ekspertniveau-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Linux-kommandolinjen og Bash-scripting på ekspertniveau, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Linux-kommandolinjen og Bash-scripting på ekspertniveau-kurset indeholder 4 lektioner i alt.
Scriptargumenter: Hvorfor bruge dem?
Har du nogensinde brugt en kommando som ls -l eller cp file1 file2? -l, file1 og file2 er alle argumenter! De fortæller kommandoen, hvad den skal gøre, eller hvad den skal arbejde på.
I Bash-scripting gør argumenter dine scripts fleksible. I stedet for at indbygge værdier direkte kan dit script modtage input direkte fra kommandolinjen, når det køres.
Adgang til positionsargumenter
Når du kører et script med argumenter, tildeler Bash dem automatisk til særlige variabler, der kaldes positionsparametre.
- Det første argument er
$1. - Det andet argument er
$2. - Og så videre op til
$9.
For argumenter efter det niende bruger du krøllede parenteser som ${10}, ${11} osv. Disse variabler indeholder de værdier, der blev overført til dit script.
Demo: Positionsargumenter
Lad os se, hvordan du får adgang til disse argumenter i et script. Gem dette som greet.sh, og kø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 `$#`: Oplysninger om scriptet
Bash indeholder nogle flere særlige variabler, der giver dig oplysninger om selve scriptet og dets argumenter:
$0: Indeholder navnet på det script, der udføres. Det er nyttigt i fejlmeddelelser eller ved logning.$#: Denne variabel indeholder det samlede antal positionsargumenter, der blev overført til scriptet.
De hjælper med at gøre dine scripts mere robuste og brugervenlige.
Demo: `$0` og `$#`
Kør dette script med forskellige antal argumenter, f.eks. ./info.sh one two three eller blot ./info.sh.
#!/bin/bash
echo "Script name: $0"
echo "Number of arguments received: $#"`$@` kontra `$*`: Alle argumenter
Nogle gange skal du referere til alle argumenterne på én gang. Bash tilbyder to måder:
$@: Udvides til separate argumenter. Når det står i dobbelte anførselstegn ("$@"), forbliver hvert argument et særskilt ord, også hvis det indeholder mellemrum. Dette foretrækkes normalt i løkker.$*: Udvides til én streng med alle argumenterne. Når det står i dobbelte anførselstegn ("$*"), kombineres alle argumenter til ét enkelt ord, adskilt af det første tegn iIFS(intern feltseparator, normalt et mellemrum).
Brug altid "$@", når du gennemløber argumenter, så mellemrum bevares!
Demo: Gennemløb med `"$@"`
Dette script viser, hvordan "$@" håndterer argumenter, der indeholder mellemrum, korrekt. Kør det sådan: ./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]"
doneTilvalg: Mere end positionsargumenter
Positionsargumenter er gode i simple tilfælde, men hvad gør du, hvis dit script har brug for valgfrie flag eller navngivne parametre, f.eks. -v for udførligt output eller -f filename?
Det er her, kommandolinjetilvalg kommer ind i billedet. De gør scripts mere fleksible og brugervenlige, fordi brugerne kan angive indstillinger i vilkårlig rækkefølge.
Bash indeholder kommandoen getopts specifikt til fortolkning af denne type tilvalg.
`getopts`-syntaks: `optstring`
Den grundlæggende syntaks for getopts er: getopts optstring variable.
optstring: En streng med gyldige tilvalgsbogstaver. Hvis et tilvalg kræver et argument, f.eks.-f filename, skal du sætte et kolon efter bogstavet, f.eks.f:.variable: Et variabelnavn, hvorgetoptsgemmer det tilvalgsbogstav, der behandles i øjeblikket, f.eks.opt.
getopts angiver også OPTARG for tilvalgsargumenter og OPTIND for indekset for det næste argument.
Demo: Grundlæggende `getopts`
Dette script behandler tilvalgene -v (udførligt output) og -f (fil). Prøv at kø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
doneHurtig kontrol: Argumentvariabler
Overvej følgende script, og hvordan det køres:
#!/bin/bash
echo "Script: $0"
echo "Count: $#"
for arg in "$@"; do
echo "Arg: $arg"
doneHvis du kører: ./myscript.sh "Hello World" 123
Hvad bliver outputtet?
Opsummering: Argumenter og tilvalg
Godt gået! Du har lært at gøre dine Bash-scripts langt mere alsidige:
- Positionsargumenter: Brug
$1,$2osv. til at få direkte adgang til argumenter. - Særlige variabler:
$0til scriptnavnet,$#til antallet af argumenter og"$@"til sikkert at gennemløbe alle argumenter. - Kommandolinjetilvalg: Brug
getoptstil at fortolke navngivne tilvalg, f.eks.-v, og deres argumenter, f.eks.-f filename, så dine scripts bliver mere robuste og brugervenlige.
Øv dig i at bruge disse i dine egne scripts for at opbygge effektive og fleksible kommandolinjeværktøjer!
Lær Bash med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 22
- Lektioner
- 88
Ofte stillede spørgsmål
Er lektionen “Scriptargumenter og indstillinger ($@, $#, getopts)” gratis?
Ja — hele teksten til “Scriptargumenter og indstillinger ($@, $#, getopts)” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Linux-kommandolinjen og Bash-scripting på ekspertniveau-kurset, skal du opgradere til CoddyKit PRO. Linux-kommandolinjen og Bash-scripting på ekspertniveau-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Scriptargumenter og indstillinger ($@, $#, getopts)”?
Lær at sende argumenter til Deres scripts og fortolke kommandolinjeindstillinger ved hjælp af særlige variabler og 'getopts'. Du øver dig i Linux-kommandolinjen og Bash-scripting på ekspertniveau med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Linux-kommandolinjen og Bash-scripting på ekspertniveau?
Der kræves ingen tidligere erfaring. Linux-kommandolinjen og Bash-scripting på ekspertniveau på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Scriptargumenter og indstillinger ($@, $#, getopts)”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Linux-kommandolinjen og Bash-scripting på ekspertniveau-lektion?
Ja. Alle Linux-kommandolinjen og Bash-scripting på ekspertniveau-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Løkker (for, while)
- Funktioner i Bash-scripts
- Scriptargumenter og indstillinger ($@, $#, getopts)
- case-sætningen og mønstergenkendelse