BASHi juhend algajatele

Tere tulemast BASH-i seeria Beginners Guide to 2. osasse, mis on ainulaadne selle poolest, et see on ainus algaja kirjutatud BASH-õpetus algajatele.

Selle juhendi lugejad koguvad oma teadmisi ja loodetavasti suudavad lõpuks kirjutada üsna nutikaid stsenaariume.

Viimati kajastasime oma esimese skripti loomine millel oli lihtsalt sõnad "Tere maailm". See hõlmab selliseid teemasid nagu tekstiredaktorid, terminali akna avamine, skriptide paigutamine, kuidas kuvada sõnu "Tere maailm" ja mõnda peenemat punkti põgenemismärkidel, näiteks jutumärkidel ("").

See jaotis hõlmab sisendparameetreid. Seal on muud juhendid mis õpetavad sedalaadi asju, kuid liiga sageli hüppavad nad üsna madala tasemega asjadesse ja annavad võib-olla liiga palju teavet.

Parameetri skript lisab isikupärastamise

Viimase õpetuse "Tere maailm" stsenaariumis oli see kõik väga staatiline. Stsenaarium ei teinud tegelikult üldse palju.

Kuidas saaksime "Tere maailm" stsenaariumi täiustada?

Aga skript, mis tervitab inimest, kes seda juhib? Selle asemel, et öelda "Tere maailm", öeldakse "Tere Gary", "Tere Tim" või "Tere Dolly".

Ilma sisendparameetrite aktsepteerimiseta peaksime kirjutama kolm skripti "hellogary.sh", "hellotim.sh" ja "hellodolly.sh".

Kuidas parameetrit luua

Lubades oma skriptil lugeda sisendparameetreid, saame kasutada üht skripti, et kedagi tervitada.

Selleks avage terminaliaken (CTRL + ALT + T) ja navigeerige oma skriptide kausta, tippides järgmise: (cd käsu kohta)

cd skriptid

Looge uus skript nimega greetme.sh, tippides järgmise: (puutekäsu kohta)

puudutage greetme.sh

Avage skript oma lemmikredaktoris, tippides järgmise: (nano käsu kohta)

nano greetme.sh

Sisestage nano sisse järgmine tekst:

#!/bin/bash
kaja "tere $@"

Vajutage CTRL ja O faili salvestamiseks ja seejärel CTRL ja X faili sulgemiseks.

Linuxi põhiline Bashi skript parameetritega

Skripti käivitamiseks sisestage käsureale järgmine tekst, asendades oma nimega.

sh greetme.sh Tim

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

Linux käivitab põhiskripti parameetritega

Esimesel real on rida #!/bin/bash, mida kasutatakse faili tuvastamiseks bash-skriptina.

Teine rida kasutab kajalauset sõna tere kordamiseks ja siis on kummaline $@ märge. (kajakäsu kohta)

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

Echo käskude kasutamine

Võib-olla oleks tore, kui skript greetme.sh ütleks tere, kasutades ainult eesnime. Keegi ei ütle kellegagi kohtudes: "Tere, Gary Newell", kuid nad võivad öelda: "Tere Gary".

Muudame skripti nii, et see kasutaks ainult esimest parameetrit. Avage skript greetme.sh nanos, tippides järgmise:

nano greetme.sh

Muutke skripti nii, et see oleks järgmine:

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

Salvestage skript vajutades CTRL ja O ja seejärel väljuge vajutades CTRL ja X.

Linuxi Bashi skript individuaalse parameetriga

Käivitage skript nagu allpool näidatud (asendage nimi enda omaga):

sh greetme.sh gary newell

Kui käivitate skripti, ütleb see lihtsalt "Tere Gary" (või loodetavasti "tere" ja mis iganes teie nimi on).

Linux käivitab ühe parameetriga Bashi skripti

1 sümboli $ järel ütleb põhimõtteliselt käsku echo, kasutage esimest parameetrit. Kui asendate 1 dollari 2 dollariga, kuvatakse see "tere newell" (või mis iganes teie perekonnanimi on). Täisnime saamiseks võite $1 järel lisada ka $2.

Mitme parameetriga Linux Bashi skript

Kui käivitate selle rohkem kui ühe parameetriga, kuvatakse need kohtades, mis vastavad nende sisestamise järjekorrale.

Linuxi käivitamise skript mitme parameetriga

Muide, kui asendaksite $2 $3-ga ja käivitaksite skripti ainult kahe parameetriga, oleks väljundiks lihtsalt "Tere".

Kuidas kuvada kasutatud parameetrite arvu

Võimalik on kuvada ja käsitleda tegelikult sisestatud parameetrite arvu ning hilisemates juhendites näidatakse, kuidas parameetrite arvu valideerimisel kasutada.

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

#!/bin/bash
echo "sisestasite $# nime"
kaja "tere $@"

Vajutage CTRL ja O skripti salvestamiseks ja CTRL ja X nanost väljumiseks.

Linux Bashi skriptide loendusparameetrid

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

Siiani on see kõik olnud uudne, kuid mitte eriti kasulik. Kes vajab skripti, mis kuvab lihtsalt "tere"?

Linux käivitab bash-skripti loendusparameetrid

Kajaavaldused vs. Sisendparameetrid

Kajalausete tegelik kasutusala on anda kasutajale paljusõnaline ja sisukas väljund. Kui suudate ette kujutada, et soovite teha midagi keerulist, mis hõlmab tõsist numbrite krigistamist ja failide/kaustade manipuleerimisel oleks kasulik kuvada kasutajale, mis toimub faili igal etapil tee.

Seevastu sisendparameetrid muudavad teie skripti interaktiivseks. Ilma sisendparameetriteta oleks vaja kümneid skripte, mis kõik teeksid väga sarnaseid asju, kuid veidi erinevate nimedega.

Seda kõike silmas pidades on veel mõned kasulikud sisendparameetrid, mida on hea teada ja ma lisan need kõik ühte koodijuppi.

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

#!/bin/bash
echo "Failinimi: $0"
echo "Protsessi ID: $$"
kaja ""
echo "sisestasite $# nime"
kaja "tere $@"

Vajutage CTRL ja O faili salvestamiseks ja CTRL ja X väljuma.

Linux Bashi skripti lisateave

Nüüd käivitage skript (asendage oma nimega).

sh greetme.sh 

Seekord kuvab skript järgmist:

Failinimi: greetme.sh
Protsessi ID: 18595

sisestasid 2 nime
tere gary newell
Linux Bashi käivitusskript koos lisateabega

$0 skripti esimesel real kuvab teie käivitatava skripti nime. Pange tähele, et see on null dollar, mitte dollar o.

$$ teisel real kuvab teie käivitatava skripti protsessi ID. Miks see kasulik on? Kui käivitate skripti esiplaanil, saate selle tühistada, vajutades lihtsalt nuppu CTRL ja C. Kui käivitasite skripti taustal ja see hakkas silmust tegema ja sama asja ikka ja jälle tegema või teie süsteemi kahjustama, peaksite selle hävitama.

Taustal töötava skripti hävitamiseks vajate skripti protsessi ID-d. Kas poleks hea, kui skript annaks väljundi osana protsessi ID? (ps-i ja killikäskude kohta)

Kokkuvõtteks...

Lõpetuseks, enne kui selle teemaga lõpetame, on oluline arutada, kuhu väljund läheb. Iga kord, kui skript on seni jooksnud, kuvatakse väljund ekraanil.

On üsna tavaline, et skripti väljund kirjutatakse väljundfaili. Selleks käivitage skript järgmiselt.

sh greetme.sh gary > greetme.log

Ülaltoodud käsu sümbol > väljastab teksti "hello gary" faili nimega greetme.log.

Iga kord, kui käivitate skripti sümboliga >, kirjutab see väljundfaili sisu üle. Kui soovite failile lisada, asendage > märgiga >>.

Nüüd peaksite saama ekraanile teksti kirjutada ja sisendparameetrid aktsepteerida.