Komentosarja-argumentit ja valitsimet ($@, $#, getopts)
Oppikaa välittämään argumentteja komentosarjoille ja jäsentämään komentorivin valitsimia erikoismuuttujien ja getopts-komennon avulla.
Komentosarja-argumentit ja valitsimet ($@, $#, getopts) on ilmainen DevOps-bootcamp-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu DevOps-bootcamp-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. DevOps-bootcamp-kurssilla on yhteensä 4 oppituntia.
Komentojonon argumentit: miksi niitä käytetään?
Oletteko koskaan käyttäneet komentoa, kuten ls -l tai cp file1 file2? -l, file1 ja file2 ovat kaikki argumentteja! Ne kertovat komennolle, mitä tehdä tai mihin toimintaan kohdistua.
Bash-komentojonoissa argumentit tekevät komentojonoista joustavia. Arvojen kirjoittamisen suoraan koodiin sijaan komentojono voi vastaanottaa syötteen suoraan komentoriviltä suoritushetkellä.
Sijaintiparametrien käyttäminen
Kun suoritatte komentojonon argumenttien kanssa, Bash määrittää ne automaattisesti erityisiin muuttujiin, joita kutsutaan sijaintiparametreiksi.
- Ensimmäinen argumentti on
$1. - Toinen argumentti on
$2. - Ja niin edelleen aina parametriin
$9asti.
Parametreihin 9 ylittäville argumenteille käytetään aaltosulkeita, kuten ${10}, ${11} ja niin edelleen. Nämä muuttujat sisältävät komentojonolle välitetyt arvot.
Esittely: sijaintiparametrit
Katsotaan, miten näitä argumentteja käytetään komentojonossa. Tallentakaa tämä nimellä greet.sh ja suorittakaa se komennolla ./greet.sh Alice Bob.
#!/bin/bash
echo "Hello, $1!"
echo "Welcome, $2."
echo "The third argument (if any) is: $3"`$0` ja `$#`: komentojonon tiedot
Bash tarjoaa vielä muutamia erityisiä muuttujia, jotka antavat tietoja itse komentojonosta ja sen argumenteista:
$0: sisältää suoritettavan komentojonon nimen. Se on hyödyllinen virheilmoituksissa ja lokikirjauksessa.$#: sisältää komentojonolle välitettyjen sijaintiparametrien kokonaismäärän.
Näiden avulla komentojonoista voi tehdä vikasietoisempia ja käyttäjäystävällisempiä.
Esittely: `$0` ja `$#`
Suorittakaa tämä komentojono eri argumenttimäärillä, esimerkiksi ./info.sh one two three tai pelkästään komennolla ./info.sh.
#!/bin/bash
echo "Script name: $0"
echo "Number of arguments received: $#"`$@` ja `$*`: kaikki argumentit
Joskus kaikkiin argumentteihin täytyy viitata kerralla. Bash tarjoaa tähän kaksi tapaa:
$@: laajennetaan erillisiksi argumenteiksi. Kun arvo ympäröidään lainausmerkeillä ("$@"), kukin argumentti säilyy erillisenä sanana, vaikka se sisältäisi välilyöntejä. Tätä tapaa suositellaan yleensä silmukoissa.$*: laajennetaan kaikkien argumenttien yhdeksi merkkijonoksi. Kun arvo ympäröidään lainausmerkeillä ("$*"), kaikki argumentit yhdistetään yhdeksi sanaksi ja erotetaanIFS-muuttujan ensimmäisellä merkillä (Internal Field Separator, yleensä välilyönti).
Käyttäkää argumentteja läpikäyvissä silmukoissa aina "$@"-muotoa, jotta välilyönnit säilyvät!
Esittely: silmukointi muodolla `"$@"`
Tämä komentojono näyttää, miten "$@" käsittelee oikein välilyöntejä sisältäviä argumentteja. Suorittakaa se esimerkiksi näin: ./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]"
doneValitsimet: muutakin kuin sijaintiparametrit
Sijaintiparametrit sopivat yksinkertaisiin tilanteisiin, mutta entä jos komentojono tarvitsee valinnaisia lippuja tai nimettyjä parametreja, kuten -v yksityiskohtaiseen tulostukseen tai -f filename?
Tässä tilanteessa käytetään komentorivivalitsimia. Ne tekevät komentojonoista joustavampia ja käyttäjäystävällisempiä, koska käyttäjät voivat määrittää asetukset missä järjestyksessä tahansa.
Bash tarjoaa getopts-komennon juuri tällaisten valitsimien jäsentämiseen.
`getopts`-syntaksi: `optstring`
getopts-komennon perussyntaksi on: getopts optstring variable.
optstring: kelvollisten valitsinmerkkien merkkijono. Jos valitsin tarvitsee argumentin, kuten-f filename, merkin perään lisätään kaksoispiste (esimerkiksif:).variable: muuttujan nimi, johongetoptstallentaa parhaillaan käsiteltävän valitsinmerkin (esimerkiksiopt).
getopts asettaa myös OPTARG-muuttujan valitsimien argumentteja varten ja OPTIND-muuttujan seuraavan argumentin indeksiä varten.
Esittely: yksinkertainen `getopts`
Tämä komentojono käsittelee -v- (yksityiskohtainen tulostus) ja -f- (tiedosto) valitsimet. Kokeilkaa sitä esimerkiksi näin: ./options.sh -v -f mydata.txt -x tai ./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
donePikatarkistus: argumenttimuuttujat
Tarkastelkaa seuraavaa komentojonoa ja sen suorittamista:
#!/bin/bash
echo "Script: $0"
echo "Count: $#"
for arg in "$@"; do
echo "Arg: $arg"
doneJos suoritatte komennon: ./myscript.sh "Hello World" 123
Mikä tuloste olisi?
Kertaus: argumentit ja valitsimet
Hienoa työtä! Olette oppineet tekemään Bash-komentojonoistanne paljon monipuolisempia:
- Sijaintiparametrit: käyttäkää argumentteihin suoraan viittaamiseen muuttujia
$1,$2ja niin edelleen. - Erityiset muuttujat:
$0sisältää komentojonon nimen,$#argumenttien määrän ja"$@"mahdollistaa kaikkien argumenttien turvallisen läpikäynnin. - Komentorivivalitsimet: käyttäkää
getopts-komentoa nimettyjen valitsimien, kuten-v, ja niiden argumenttien, kuten-f filename, jäsentämiseen. Näin komentojonoista tulee vikasietoisempia ja käyttäjäystävällisempiä.
Harjoitelkaa näiden käyttöä omissa komentojonoissanne rakentaaksenne tehokkaita ja joustavia komentorivityökaluja!
Opi DevOps-bootcamp tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 142
- Oppitunnit
- 568
Usein kysytyt kysymykset
Onko oppitunti ”Komentosarja-argumentit ja valitsimet ($@, $#, getopts)” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa DevOps-bootcamp-oppimispolun 3 oppituntia, myös oppitunnin “Komentosarja-argumentit ja valitsimet ($@, $#, getopts)”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. DevOps-bootcamp-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Komentosarja-argumentit ja valitsimet ($@, $#, getopts)”?
Oppikaa välittämään argumentteja komentosarjoille ja jäsentämään komentorivin valitsimia erikoismuuttujien ja getopts-komennon avulla. Harjoittelet DevOps-bootcamp-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni DevOps-bootcamp-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin DevOps-bootcamp-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Komentosarja-argumentit ja valitsimet ($@, $#, getopts)”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä DevOps-bootcamp-oppitunnilla?
Kyllä. Jokainen DevOps-bootcamp-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Silmukkarakenteet (for, while)
- Funktiot Bash-komentosarjoissa
- Komentosarja-argumentit ja valitsimet ($@, $#, getopts)
- case-lause ja hahmontunnistus