Iesācēju rokasgrāmata BASH - ievades parametriem

Laipni lūdzam 2. iesācēju rokasgrāmatas sadaļā BASH sērijai, kas ir unikāla, jo tā ir vienīgā BASH apmācība iesācēju iesācējiem.

Šī ceļveža lasītāji veidos savas zināšanas, kā es veidoju savas zināšanas, un cerams, ka līdz beigām mēs varēsim ierakstīt diezgan gudrus skriptus.

Pagājušajā nedēļā es sāka veidot savu pirmo skriptu, kas vienkārši parādīja vārdus "Hello World". Tas attiecas uz tādiem priekšmetiem kā tekstu redaktori, kā atvērt terminālu logu, kur ievietot jūsu skriptus, kā parādīt vārdus "Hello World" un dažus labākus punktus par aizbēgtām rakstzīmēm, piemēram, pēdiņām ("").

Šonedēļ es gatavojas aptvert ievades parametrus. Ir arī citas rokasgrāmatas, kas māca šāda veida lietām, bet es uzskatu, ka viņi pāriet uz diezgan zemu līmeni un, iespējams, sniedz pārāk daudz informācijas.

Kas ir parametrs?

Pēdējās apmācības "Hello World" skriptā viss bija ļoti statisks. Skripts īsti neko nedarīja.

Kā mēs varētu uzlabot skriptu "Hello World"?

Kā par skriptu, kas sveic personu, kas to vada? Tā vietā, lai saka "Hello World", tas teiks: "Hello Gary", "Hello Tim" vai "Hello Dolly".

Bez spējas pieņemt ievades parametrus mums vajadzētu uzrakstīt trīs skriptus "hellogary.sh", "hellotim.sh" un "hellodolly.sh".

Atļaujot mūsu skriptam lasīt ievades parametrus, mēs varam izmantot vienu skriptu, lai sveicinātu ikvienu.

Lai to paveiktu, atveriet termināla logu (CTRL + ALT + T) un dodieties uz skriptu mapi, ierakstot šo: ( par cd komandu )

cd skripti

Izveidojiet jaunu skriptu ar nosaukumu greetme.sh, ierakstot sekojošo: ( par pieskāriena komandu )

pieskarieties greetme.sh

Atveriet skriptu savā iecienītākajā redaktorā, ierakstot šo: ( par nano komandu )

nano greetme.sh

Nano ievadiet šādu tekstu:

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

Nospiediet taustiņus CTRL un O, lai saglabātu failu, pēc tam CTRL un X, lai aizvērtu failu.

Lai palaistu skriptu, ievadiet šādu tekstu komandrindā, kas aizstāj to ar savu vārdu.

sh greetme.sh

Ja es palaistu skriptu ar savu vārdu, tas parāda vārdus "Hello Gary".

Pirmajai rindai ir #! / Bin / bash līnija, kuru izmanto, lai identificētu failu kā bash skriptu.

Otrajā rindā tiek izmantots echo paziņojums, lai atbalsotu vārdu hello, un tad ir dīvains $ @ notation. ( par echo komandu )

$ @ Izplešas, lai parādītu visus parametrus, kas tika ievadīti kopā ar skripta nosaukumu. Tātad, ja jūs ierakstījāt "sh greetme.sh tim", tiks parādīti vārdi "hello tim". Ja jūs ierakstījāt "greetme.sh tim smith", tad tiek parādīti vārdi "hello tim smith".

Tas varētu būt jauki greetme.sh skriptu, lai vienkārši saku sveiks, izmantojot tikai vārdu. Neviens saka "hello gary newell", kad viņi satiekas ar mani, tomēr viņi var teikt, ka "sveiki gari".

Nomainīsim skriptu, lai tas vienkārši izmantotu pirmo parametru. Atveriet greetme.sh skriptu nano, ierakstot sekojošo:

nano greetme.sh

Mainiet skriptu tā, lai tas būtu šāds:

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

Saglabājiet skriptu, nospiežot CTRL un O, un pēc tam izejiet, nospiežot CTRL un X.

Palaidiet skriptu, kā parādīts zemāk (nomainiet manu vārdu ar savu):

sh greetme.sh gary newell

Kad palaižat skriptu, tas vienkārši saka "hello gary" (vai, cerams, "sveiki" un kāds ir jūsu vārds.

1 pēc simbola $ pamatā saka echo komandai, izmantojiet pirmo parametru. Ja jūs nomaināt $ 1 ar $ 2, tas parādīs "hello newell" (vai arī kāds ir jūsu uzvārds).

Starp citu, ja jūs nomaināt $ 2 ar $ 3 un palaistu skriptu ar tikai diviem parametriem, produkcija vienkārši būtu "Hello".

Ir iespējams parādīt un apstrādāt faktiski ievadīto parametru skaitu un turpmākās apmācības. Es rādīšu, kā izmantot parametru skaitu validācijas nolūkos.

Lai parādītu ievadīto parametru skaitu, atveriet greetme.sh skriptu (nano greetme.sh) un izmainiet tekstu šādi:

#! / bin / bash echo "ievadījāt $ # nosaukumus" echo "hello $ @"

Nospiediet CTRL un O, lai saglabātu skriptu un CTRL un X, lai izietu no nano.

2. rindā $ # parādās ievadīto parametru skaits.

Līdz šim tas viss ir bijis jauns, bet ne visai noderīgs. Kam nepieciešams skripts, kas vienkārši parāda "sveiki"?

Patiesais echo izteiksmes izmantojums ir lietotājam sniegt verbālu un nozīmīgu izvadi. Ja jūs varat iedomāties, ka vēlaties veikt kaut ko sarežģītu, kas saistīts ar nopietnu krāpšanos ar numuriem un manipulācijām ar failu / mapi, būtu noderīgi lietotājam parādīt, kas notiek katrā no soļiem.

Savukārt ievades parametri padara jūsu skriptu par interaktīvu. Bez ievades parametriem jums būs nepieciešams desmitiem skriptu, kas dara ļoti līdzīgas lietas, bet ar nedaudz atšķirīgiem nosaukumiem.

Ņemot to visu vērā, ir daži citi noderīgi ievades parametri, kurus ieteicams zināt, un es tos visus iekļaus vienā koda fragmentā.

Atveriet savu greetme.sh skriptu un izmainiet to šādi:

#! / bin / bash echo "Filename: $ 0" echo "Procesa ID: $$" echo "---------------------------- --- "echo" ievadījāt $ # nosaukumus "echo" hello $ @ "

Nospiediet CTRL un O, lai saglabātu failu, un CTRL un X, lai izietu.

Tagad palaidiet skriptu (aizvietojiet ar savu vārdu).

sh greetme.sh

Šoreiz skripts parāda sekojošo:

Filename: greetme.sh Procesa ID: 18595 ------------------------------ Jūs ievadījāt 2 nosaukumus hello gary newell

Skripta pirmajā rindā $ 0 tiek parādīts skripta nosaukums, kuru izmantojat. Ņemiet vērā, ka dolārs ir nulle, nevis dolārs o.

Otrajā rindiņā $$ parādās jūsu skripta process id. Kāpēc tas ir noderīgs? Ja jūs izmantojat skriptu priekšplānā, to varat atcelt, vienkārši nospiežot CTRL un C. Ja skriptu palaižat fonā, un tas sācis looping, un atkal darot to pašu, atkal vai atkal radot kaitējumu jūsu sistēmai, kas jums būtu nepieciešama lai to nogalinātu.

Lai nokautu skriptu, kas darbojas fonā, nepieciešams skripta process id. Vai nebūtu labi, ja skripts procesa id būtu daļa no produkcijas. ( par ps un nogalināt komandas )

Visbeidzot, pirms pabeidzu šo tēmu, es gribēju diskutēt par to, kur notiek izlaide. Katru reizi, kad skripts ir palaists līdz šim, produkcija ir parādīta ekrānā.

Parasti scenāriju izvadi ir rakstīts izejas failā. Lai to izdarītu, palaidiet skriptu šādi:

sh greetme.sh gary> greetme.log

Iepriekš norādītajā komandā> simbols izvada tekstu "hello gary" uz failu ar nosaukumu greetme.log.

Katru reizi, kad palaižat skriptu ar simbolu>, tas pārrakstīs izvades faila saturu. Ja vēlaties pievienot failu, nomainiet> ar >>.

Kopsavilkums

Tagad jums vajadzētu būt iespējai rakstīt tekstu uz ekrāna un pieņemt ievades parametrus.