DevOps-bootcamp · leksjon

Skriptargumenter og alternativer ($@, $#, getopts)

Lær å sende argumenter til skriptene dine og tolke kommandolinjealternativer ved hjelp av spesialvariabler og «getopts».

Leksjon 3 av 412 trinn

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 i IFS (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]"
done

Alternativer: 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 eksempel f:.
  • variable: Et variabelnavn der getopts lagrer tegnet for alternativet som behandles, for eksempel opt.

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
done

Rask 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"
done

Hvis 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, $2 og så videre for å aksessere argumenter direkte.
  • Spesielle variabler: $0 for skriptnavnet, $# for antallet argumenter og "$@" for å iterere trygt gjennom alle argumentene.
  • Kommandolinjealternativer: Bruk getopts til å 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!

Gratis å komme i gang

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

  1. Løkker (for, while)
  2. Funksjoner i Bash-skript
  3. Skriptargumenter og alternativer ($@, $#, getopts)
  4. case-setningen og mønstergjenkjenning
← Tilbake til DevOps-bootcamp