Algajad BASH-sisendparameetrite juhend

Tere tulemast BASH seeria algajate juhendi 2. ossa, mis on ainulaadne, kuna see on ainus algajatele mõeldud algaja BASH juhend.

Selle juhendi lugejad arendavad oma teadmisi nii, nagu ma oma teadmisi loovad, ja loodetavasti suudame selle lõpuks kõik suhteliselt tarkade skriptide kirjutamiseks.

Möödunud nädalal käsitlesin esimest skripti loomist, mis lihtsalt näitas sõnu "Hello World". See hõlmab selliseid teemasid nagu tekstitöötlusprogrammid, terminali akna avamine, skriptide sisestamine, sõna "Hello World" kuvamine ja mõned paremad punktid escape-tähemärkidel, näiteks tsitaadid ("").

Sel nädalal pean sisendparameetreid katma. On ka teisi juhendeid, mis õpetavad sellist asja, kuid ma leian, et nad hüppavad mõne üsna madala kraami juurde ja annavad liiga palju teavet.

Mis on parameeter?

Viimase juhendaja "Hello World" skript oli kõik väga staatiline. Skript ei teinud üldse palju.

Kuidas saaksime parandada "Hello World" skripti?

Mis on skript, mis tervitab seda kasutavat inimest? Selle asemel, et öelda "Tere maailm", öeldakse "Hello Gary", "Hello Tim" või "Hello Dolly".

Ilma sisendparameetrite vastuvõtmise võime kirjutada kolm skripti "hellogary.sh", "hellotim.sh" ja "hellodolly.sh".

Kui lubate meie skriptil lugeda sisendparameetreid, võime kasutada kellegi jaoks tervitamiseks üht skripti.

Selleks avage terminali aken (CTRL + ALT + T) ja liikuge oma skriptide kausta, sisestage järgmine: ( umbes cd käskluse kohta )

cd skriptid

Loo uus skript kutsutud greetme.sh, kirjutades järgmiselt: ( puudutades käsku )

puudutage greetme.sh

Avage skript oma lemmikredaktoris, sisestage järgmine tekst ( umbes nano käskluse kohta )

nano greetme.sh

Nano sisestage järgmine tekst:

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

Vajuta CTRL ja O faili salvestamiseks ning seejärel CTRL ja X faili sulgemiseks.

Script käivitamiseks sisestage oma nimega asendav käsureal järgmine käsk.

sh greetme.sh

Kui käivitan oma nimega skripti, kuvatakse see sõna "Tere Gary".

Esimesel real on #! / Bin / bash-rida, mida kasutatakse faili tuvastamiseks bash-skripti.

Teises reas kasutatakse echo-avaldust, et kajastada sõna hello ja siis on kummaline $ @ märgistus. ( umbes kaja käsklus )

$ @ Laieneb, et kuvada kõik parameetrid, mis sisestati koos skripti nimega. Nii et kui sisestasite "sh greetme.sh tim", kuvatakse sõna "hello tim". Kui sisestasite "greetme.sh tim smith", siis kuvatakse sõnad "hello tim smith".

Greetme.sh-i skript võib olla tore, et lihtsalt ütleksime tere, kasutades ainult esimest nime. Keegi ei ütle "hello gary newell", kui nad kohtuvad minuga, kuigi nad võivad öelda "hello gary".

Vaatame skripti nii, et see kasutab lihtsalt esimest parameetrit. Avage greetme.sh skript nano -s, sisestage järgmised andmed:

nano greetme.sh

Muutke skripti nii, et see oleks järgmine:

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

Salvestage skript, vajutades CTRL ja O ning seejärel väljumiseks, vajutades CTRL ja X.

Käivitage skript, nagu allpool näidatud (asenda mu nimi omaks):

sh greetme.sh gary newell

Skripti käivitamisel ütleb see lihtsalt "hello gary" (või loodetavasti "tere" ja mis iganes teie nimi on.

Pärast seda, kui $ symbol tähistab põhimõtteliselt echo käsku, kasutage esimest parameetrit. Kui asendate $ 1 väärtusega $ 2, kuvatakse see "hello newell" (või mis iganes teie perekonnanimi on).

Muide, kui te asendasite $ 2 $ 3-ga ja jooksisite ainult kahe parameetriga skripti, oleks väljund lihtsalt "Hello".

Võimalik on kuvada ja hallata tegelikult sisestatud parameetrite arv ja hilisemate juhendamiste arvu. Näitan, kuidas kasutada parameetrite arvu valideerimise eesmärgil.

Avatud parameetrite arvu kuvamiseks avage greetme.sh skript (nano greetme.sh) ja muutke teksti järgmiselt:

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

Vajutage CTRL ja O, et salvestada skript, CTRL ja X, et nano väljuda.

2.numbri $ # näitab sisestatud parameetrite arvu.

Praeguseks on see kõik olnud uudne, kuid mitte väga kasulik. Kes vajab skripti, mis kuvab lihtsalt "tere"?

Echo-avalduste reaalne kasutamine on kasutaja jaoks kõneleva ja tähendusliku väljundi pakkumine. Kui te võite ette kujutada, et soovite midagi keerulist teha, mis toob kaasa mõne tõsise arvu krüptimise ja faili- / kausta manipuleerimise, oleks kasulik näidata kasutajale, mis toimub igal sammul.

Seevastu sisendparameetrid muudavad teie skripti interaktiivseks. Ilma sisendparameetriteta oleks vaja kümneid skripte, mis teevad väga sarnaseid asju, kuid mõnevõrra erinevad nimed.

Kõike seda silmas pidades on mõned muud kasulikud sisendparameetrid, mida on hea mõte teada ja lisada need kõik ühte koodilõigu.

Avage oma greetme.sh skript ja muutke seda järgmiselt:

#! / bin / bash echo "Filename: $ 0" echo "Protsessi ID: $ $" echo "---------------------------- --- "echo" sisestasite $ # nimesid "echo" hello $ @ "

Vajutage CTRL ja O, et faili salvestada, ja CTRL ja X, et väljuda.

Nüüd Käivitage skript (asendage oma nimi).

sh greetme.sh

Seekord skript näitab järgmist:

Failinimi: greetme.sh Protsessi ID: 18595 ------------------------------ sisestasite 2 nime hello gary newell

Skripti esimesel real $ 0 kuvatakse skripti nimi, mida te kasutate. Pange tähele, et dollar on null ja mitte dollar o.

Teises reas $$ kuvatakse teie käitatava skripti protsessi ID. Miks see on kasulik? Kui kasutate esiplaanil skripti, saate selle tühistada, lihtsalt vajutades CTRL ja C. Kui sa jooksed skripti taustal ja see hakkas silma lükkama ja sama asja ikkagi tegema või hakkama, põhjustades süsteemi kahjustamist, oleks vaja tappa.

Taustal töötava skripti tapmiseks vajate skripti protsessi ID-d. Kas poleks hea, kui skript andis protsessi id oma toodangu osana. ( umbes ps ja tappa käske )

Lõpuks, enne selle teema lõpetamist tahtsin arutleda selle üle, kus toodang läheb. Iga kord, kui skript on siiani käivitunud, on ekraanil kuvatud väljund.

Stsenaariumi väljundi kirjutamiseks väljundfailile on üsna tavaline. Selle tegemiseks käivitage oma skript järgmiselt:

sh greetme.sh gary> greetme.log

Eespool toodud käsu sümbol väljub tekstist "hello gary" faili nimega greetme.log.

Iga kord, kui käivitate skripti sümboliga, kirjutab see väljundfaili sisu üle. Kui soovid failile lisada, asenda >> koos >>.

Kokkuvõte

Nüüd peaksite saama teksti kirjutada ekraanile ja nõustuda sisendparameetritega.