Mwongozo wa Mwanzo kwa BASH - Parameters za Kuingiza

Karibu kwenye sehemu ya 2 ya Mwongozo wa Mwanzo kwa mfululizo wa BASH ambayo ni ya pekee kwa kuwa ni mafunzo tu ya BASH iliyoandikwa na waanziaji wa mwanzo.

Wasomaji wa mwongozo huu watajenga ujuzi wao kama mimi kujenga ujuzi wangu na kwa matumaini mwisho wa yote tutaweza kuandika baadhi ya maandiko ya busara.

Wiki iliyopita nilifunua script yako ya kwanza ambayo imeonyesha tu maneno "Hello World". Inashughulikia masomo kama vile wahariri wa maandishi, jinsi ya kufungua dirisha la terminal, wapi kuweka maandiko yako, jinsi ya kuonyesha maneno "Hello World" na baadhi ya pointi bora juu ya wahusika wa kutoroka kama vile quotes ("").

Wiki hii ninaenda kufikia vigezo vya pembejeo. Kuna viongozi vingine vinavyofundisha aina hii lakini ninaona wanaruka kwenye mambo ya chini ya kiwango cha chini na labda kutoa taarifa nyingi.

Kipengele ni nini?

Katika somo la "Hello World" kutoka kwenye mafunzo ya mwisho yote yalikuwa ya static sana. Script haikufanya mengi kabisa.

Tunawezaje kuboresha hati ya "Hello World"?

Je! Kuhusu script ambayo inamkubali mtu anayeendesha? Badala ya kusema "Hello World" itasema "Hello Gary", "Hello Tim" au "Hello Dolly".

Bila uwezo wa kukubali vigezo vya uingizaji tunahitaji kuandika maandiko matatu "hellogary.sh", "hellotim.sh" na "hellodolly.sh".

Kwa kuruhusu script yetu kusoma vigezo vya pembejeo tunaweza kutumia script moja kusalimu mtu yeyote.

Ili kufanya hivyo kufungua dirisha la terminal (CTRL + ALT + T) na uende kwenye folda yako ya maandiko kwa kuandika zifuatazo: ( kuhusu amri ya cd )

cd scripts

Unda script mpya inayoitwa greetme.sh kwa kuandika zifuatazo: ( kuhusu amri ya kugusa )

kugusa salamu.sh

Fungua script katika mhariri uliopenda kwa kuandika zifuatazo: ( kuhusu amri ya nano )

nano greetme.sh

Ingiza maandishi yafuatayo ndani ya nano:

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

Bonyeza CTRL na O ili uhifadhi faili na kisha CTRL na X ili kufungwa faili.

Kuendesha script kuingia zifuatazo katika mstari amri kuchukua nafasi kwa jina lako.

sh greetme.sh

Ikiwa ninaendesha script kwa jina langu inaonyesha maneno "Hello Gary".

Mstari wa kwanza una line #! / Bin / bash ambayo hutumiwa kutambua faili kama script bash.

Mstari wa pili hutumia kauli ya echo ili kuunga mkono hello neno na kisha kuna ajabu $ @ notation. ( kuhusu amri ya eko )

$ @ Huongeza ili kuonyesha kila parameter iliyoingizwa pamoja na jina la script. Kwa hiyo ikiwa umeandika "sh greetme.sh tim" maneno "hello tim" yangeonyeshwa. Ikiwa umeandika "greetme.sh tim smith" basi maneno "hello tim smith" yanaonyeshwa.

Inaweza kuwa nzuri kwa script greetings.sh tu kusema hello kutumia tu jina la kwanza. Hakuna mtu anasema "hello gary newell" wanapokutana nami, wanaweza kusema "hello gary" ingawa.

Hebu tubadilishe script ili tu kutumia parameter ya kwanza. Fungua soma ya saluni.sh katika nano kwa kuandika zifuatazo:

nano greetme.sh

Badilisha script ili iisome kama ifuatavyo:

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

Hifadhi script kwa uendelezaji wa CTRL na O na kisha uondoke kwa kushinikiza CTRL na X.

Tumia script kama inavyoonyeshwa hapa chini (badala ya jina langu na yako):

sh greetme.sh gary newell

Unapoendesha script itakuwa tu kusema "hello gary" (au tumaini "hello" na chochote jina lako ni.

The 1 baada ya alama ya kimsingi inasema kwa amri ya echo, tumia parameter ya kwanza. Ikiwa utashiriki $ 1 na $ 2 kisha itaonyesha "hello newell" (au chochote jina lako ni).

Kwa bahati kama umebadilishana $ 2 na dola 3 na kukimbia script na vigezo 2 tu pato ingekuwa tu "Sawa".

Inawezekana kuonyesha na kushughulikia namba ya vigezo kweli iliyoingia na katika mafunzo ya baadaye nitaonyesha jinsi ya kutumia hesabu ya parameter kwa madhumuni ya kuthibitishwa.

Ili kuonyesha idadi ya vigezo vilifunguliwa script ya saluni.sh (nano greetme.sh) na kurekebisha maandishi kama ifuatavyo:

#! / bin / bash echo "umeingiza majina ya $ #" echo "hello $ @"

Bonyeza CTRL na O kuokoa script na CTRL na X ili kuondoka nano.

$ # Kwenye mstari wa pili huonyesha idadi ya vigezo vilivyoingia.

Hivi sasa yote haya yamekuwa riwaya lakini sio muhimu sana. Nani anahitaji script inayoonyesha tu "hello"?

Matumizi halisi ya taarifa za echo ni kutoa vifupisho vyema na maana kwa mtumiaji. Ikiwa unaweza kufikiri kwamba unataka kufanya kitu ngumu ambacho kinahusisha baadhi ya idadi kubwa ya kuunganisha na faili / uharibifu wa folda itakuwa muhimu kuonyesha kwa mtumiaji kile kinachotokea kila hatua ya njia.

Kwa upande mwingine, vigezo vya pembejeo hufanya script yako iingiliane. Bila vigezo vya uingizaji unahitaji machapisho mengi ya kufanya mambo sawa sawa lakini kwa majina tofauti.

Pamoja na yote haya katika akili kuna vigezo vingine vya pembejeo muhimu ambazo ni wazo nzuri kujua na nitawaingiza wote katika snippet moja ya kificho.

Fungua script yako ya saluni.sh na uipate kama ifuatavyo:

#! / bin / bash echo "Jina la faili: $ 0" echo "ID ya mchakato: $$" echo "---------------------------- --- "echo" uliingiza majina ya # # "echo" hello $ @ "

Bonyeza CTRL na O kuhifadhi faili na CTRL na X ili uondoke.

Sasa Run script (shiriki kwa jina lako).

sh greetme.sh

Wakati huu script inaonyesha yafuatayo:

Jina la faili: greetme.sh ID ya Mchakato: 18595 ------------------------------ uliingia majina 2 hello gary newell

$ 0 kwenye mstari wa kwanza wa script inaonyesha jina la script unayoendesha. Kumbuka kuwa ni dola zero na sio dola.

$$ kwenye mstari wa pili huonyesha id ya mchakato wa script yako inayoendesha. Kwa nini hii ni muhimu? Ikiwa unatumia script mbele ya mbele unaweza kufuta kwa kutumia tu CTRL na C. Ikiwa ulikimbia script nyuma na kuanza kukiuka na kufanya kitu kimoja mara kwa mara au kuanza kuharibu mfumo wako unahitaji kuua.

Ili kuua script inayoendesha nyuma unahitaji id ya mchakato wa script. Je, si vizuri ikiwa script ilitoa id ya mchakato kama sehemu ya pato lake. ( kuhusu ps na kuua amri )

Hatimaye kabla ya kumaliza na mada hii nilitaka kuzungumza juu ya wapi pato linakwenda. Kila wakati script imeendesha hadi sasa pato imeonyeshwa kwenye skrini.

Ni kawaida sana kwa pato la script kuandikwa kwa faili ya pato. Ili kufanya hivyo fanya script yako kama ifuatavyo:

sh greetme.sh gary> saluni.log

Ishara> katika amri ya hapo juu matokeo ya maandishi "hello gary" kwenye faili inayoitwa greetme.log.

Kila wakati unapotumia script na> ishara hiyo inasimamia maudhui ya faili ya pato. Ikiwa ungependelea kuingiza kwenye faili badala ya> na >>.

Muhtasari

Unapaswa sasa kuandika maandishi kwenye skrini na kukubali vigezo vya pembejeo.