BASH-aloitusopas - Syöttöparametrit

Tervetuloa BASH-sarjan alkuoppaaseen 2. osaan, joka on ainutlaatuinen, koska se on ainoa BASH-oppitunti, jonka aloittelijat ovat aloittaneet.

Tämän oppaan lukijat rakentavat tietoni, kun kerromme tietoni ja toivottavasti loppuun asti voimme kirjoittaa melko fiksuja skriptejä.

Viime viikolla käsittelin ensimmäisen komentosarjan luomisen, joka yksinkertaisesti näytti sanat "Hello World". Se kattaa aiheet, kuten tekstinkäsittelyohjelmat, kuinka päästää ikkuna, missä laitat käsikirjoituksesi, miten ilmaiset sanat "Hello World" ja jotkut hienommat kohdat poistumismerkeistä, kuten lainausmerkeistä ("").

Tällä viikolla aion käsitellä syöttöparametreja. On olemassa muita oppaita, jotka opettavat tällaista asiaa, mutta huomaan, että ne hyppäävät melko alhaiselle tasolle ja saavat liian paljon tietoa.

Mikä on parametri?

Viimeisen opetusohjelman "Hello World" -käsikirjoituksesta se oli erittäin staattista. Käsikirjoitus ei todellakaan ollut paljonkaan.

Kuinka voisimme parantaa Hello World -komentosarjaa?

Entä skripti, joka tervehtii sitä, joka johtaa sitä? Sen sijaan, että sanoit "Hello World", sanotaan "Hello Gary", "Hello Tim" tai "Hello Dolly".

Ilman kykyä hyväksyä syöttöparametreja meidän pitäisi kirjoittaa kolme skriptia "hellogary.sh", "hellotim.sh" ja "hellodolly.sh".

Antamalla käsikirjoituksemme lukemaan parametreja voimme käyttää yhtä skriptiä tervehtimään ketään.

Voit tehdä tämän avaamalla pääikkunan (CTRL + ALT + T) ja siirtymällä komentosarjan kansioon kirjoittamalla seuraavat: ( noin cd-komennosta )

cd-skriptejä

Luo uusi käsikirjoitus nimeltä greetme.sh kirjoittamalla seuraavat: ( kosketuskäskyllä )

kosketa greetme.sh

Avaa skripti suosikkieditorissa kirjoittamalla seuraavat: ( noin nano-komennon )

nano greetme.sh

Kirjoita seuraava teksti nanoon:

#! / bin / bash echo "hello $ @"

Paina CTRL ja O tallentaaksesi tiedoston ja sitten CTRL ja X sulkeaksesi tiedoston.

Komentosarjan suorittamiseksi kirjoita seuraava komento komentoriville, joka korvaa nimen kanssa.

sh greetme.sh

Jos käsittelen käsikirjoitusta nimeni, se näyttää sanat "Hello Gary".

Ensimmäisessä rivissä on #! / Bin / bash-rivi, jota käytetään tunnistamaan tiedosto bash-komentosarjana.

Toinen rivi käyttää echo-lausetta echo sana hello ja sitten on outo $ @ notaatio. ( noin echo-komennon )

$ @ Laajentaa näyttääksesi jokainen parametri, joka syötettiin komentotiedoston kanssa. Joten jos kirjoitit "sh greetme.sh tim", sanat "hello tim" näkyvät. Jos kirjoitit "greetme.sh tim smith", niin sanat "hello tim smith" näkyvät.

Greetme.sh-skripti saattaa olla kiva vain sanoa hello käyttäen vain etunimeä. Kukaan ei sano "hello gary newell", kun he tapaavat minua, he saattavat sanoa "hello gary" kuitenkin.

Vaihdetaan käsikirjoitus niin, että se käyttää vain ensimmäistä parametria. Avaa greetme.sh-käsikirjoitus nanoon kirjoittamalla seuraavat:

nano greetme.sh

Muuta komentosarja niin, että se lukee seuraavasti:

#! / bin / bash echo "hello $ 1"

Tallenna komentosarja painamalla CTRL ja O ja poistu sitten painamalla CTRL ja X.

Suorita komentosarja alla olevan kuvan mukaisesti (vaihda nimeni omalla nimelläsi):

sh greetme.sh gary newell

Kun suoritat käsikirjoituksen, se vain sanoo "hello gary" (tai toivottavasti "hello" ja mitä nimesi on.

1, kun $ symboli sanoo periaatteessa echo-komennon, käytä ensimmäistä parametria. Jos vaihdat $ 1 $ 2: lla, se näyttää "hello newell" (tai mikä tahansa sukunimesi).

Muuten jos olet korvannut $ 2 $ 3: llä ja suorittanut käsikirjoituksen vain kahdella parametrilla, tuotos olisi yksinkertaisesti "Hei".

On mahdollista näyttää ja käsitellä syötettyjen parametrien määrää ja myöhemmissä opetusohjelmissa esitän, kuinka parametrien määrää käytetään validointitarkoituksiin.

Voit näyttää avoimien parametrien lukumäärän greetme.sh-komentosarjan (nano greetme.sh) ja muuttaa tekstiä seuraavasti:

#! / bin / bash echo "syötit $ # nimet" echo "hello $ @"

Paina CTRL ja O tallentaaksesi komentosarjan ja CTRL ja X poistumaan nanoista.

2. rivillä oleva $ # näyttää syötettyjen parametrien lukumäärän.

Tähän asti kaikki tämä on ollut uutta mutta ei kovin hyödyllistä. Kuka tarvitsee käsikirjoituksen, joka vain näyttää "hello"?

Kaiun lausuntojen todellinen käyttö on tarjota käyttäjälle verbaalinen ja merkityksellinen tuotos. Jos voit kuvitella, että haluat tehdä jotain monimutkaista, johon liittyy vakavia lukujen rypistymistä ja tiedostojen / kansioiden manipulointia, olisi hyödyllistä näyttää käyttäjälle, mitä tapahtuu jokaisella askeleella.

Sen sijaan syöttöparametrit tekevät käsikirjoituksesi interaktiiviseksi. Ilman syöttöparametreja tarvitset kymmeniä komentojonoja, jotka tekevät hyvin samankaltaisia ​​asioita, mutta hieman erilaisilla nimillä.

Kaikki tämä mielessä on muutamia muita hyödyllisiä syöttöparametreja, jotka on hyvä tietää, ja otan ne kaikki yhdeksi koodinpätkäksi.

Avaa greetme.sh-skripti ja muokkaa sitä seuraavasti:

#! / bin / bash echo "Tiedostonimi: $ 0" echo "Prosessi ID: $$" echo "---------------------------- --- "echo" annat $ # nimet "echo" hello $ @ "

Paina CTRL ja O tallentaaksesi tiedoston ja CTRL ja X poistuaksesi.

Suorita komentosarja (korvaa nimesi kanssa).

sh greetme.sh

Tällä kertaa skripti näyttää seuraavat:

Tiedostonimi: greetme.sh Prosessi ID: 18595 ------------------------------ syöttit 2 nimeä hello gary newell

Komentosarjojen ensimmäisellä rivillä oleva 0 € näyttää käsittelemänsi komentosarjan nimen. Huomaa, että se on dollari nolla eikä dollari o.

Toisella rivillä oleva $ $ näyttää komentosarjan prosessin tunnuksen, joka on käynnissä. Miksi tämä on hyödyllinen? Jos et käytä komentotiedostoa etualalla, voit peruuttaa sen painamalla CTRL ja C. Jos suoritit käsikirjoituksen taustalla ja se alkoi silmukoida ja tehdä samaa uudestaan ​​tai uudestaan ​​tai aiheutti vahinkoa järjestelmälle, tarvitset tappaa se.

Jos haluat tappaa komentorivi, joka toimii taustalla, tarvitset komentosarjan prosessin tunnuksen. Eikö olisi hyvä, jos käsikirjoitus antoi prosessin id osaksi sen tuotos. ( noin ps ja tappaa komentoja )

Viimeinkin ennen tämän aiheen päättymistä halusin keskustella siitä, mistä tuotos menee. Joka kerta, kun käsikirjoitus on suoritettu tähän mennessä, näyttö on näkyvissä näytöllä.

On tavallista, että komentotiedosto tulostetaan tulostustiedostoon. Voit tehdä tämän suorittamaan komentosarjan seuraavasti:

sh greetme.sh gary> greetme.log

Edellä oleva komento> -merkki antaa tekstin "hello gary" tiedostolle nimeltä greetme.log.

Joka kerta, kun suoritat komentosarjan> symbolilla, se korvaa tulostustiedoston sisällön. Jos haluat liittää tiedostoon, korvaa> with >>.

Yhteenveto

Sinun pitäisi nyt pystyä kirjoittamaan tekstiä näytölle ja hyväksymään syöttöparametrit.