Komencanta Gvidilo Al BASH - Eniga Parametroj

Bonvenon al la dua parto de la Komencila Gvidilo Al BASH-serio, kiu estas unika, ĉar ĝi estas la sola BASH-lernilo, skribita de komencanto por komencantoj.

Legantoj de ĉi tiu gvidilo kreos ilian scion, kiam mi rekonstruas mian scion kaj espereble, ĉu ni finfine ĉio, ni povos skribi iujn lertajn skribojn.

Pasintsemajne mi kovris krei vian unuan skripton, kiu simple montris la vortojn "Hello Mondo". Ĝi enhavas temojn kiel redaktantoj de teksto, kiel malfermi fina stacion, kie meti viajn skriptoj, kiel montri la vortojn "Hello Mondo" kaj kelkajn pli fajnajn punktojn pri eskapaj signoj kiel kotizoj ("").

Ĉi-semajnne mi kovros enmetajn parametrojn. Estas aliaj gvidiloj, kiuj instruas ĉi tiun tipon de aferoj, sed mi trovas, ke ili saltas en iujn malaltajn nivelojn kaj eble provizas tro da informoj.

Kio Estas Parametro?

En la "Hello Mondo" skripto de la lasta lernilo, ĝi estis tute tre statika. La skripto vere ne multe agis.

Kiel ni povus plibonigi la "Hello Mondan" skripton?

Kio pri skripto, kiu lasas la personon, kiu kuras ĝin? Anstataŭ diri "Saluton Mondo" ĝi diros "Saluton Gary", "Saluton Tim" aŭ "Hello Dolly".

Sen la kapablo akcepti enmetajn parametrojn ni bezonus skribi tri skriptoj "hellogary.sh", "hellotim.sh" kaj "hellodolly.sh".

Permesante nian skripton legi elementajn parametrojn, ni povas uzi unu skripton por saluti iun.

Por ĉi tio malfermu fenestron fina stacio (CTRL + ALT + T) kaj navigu al via dosierujo de skriptoj tajpante la jenajn: ( pri cd-komando )

cd-skriptoj

Kreu novan skripton greetme.sh tajpante la jenan: ( pri komerca komando )

tuŝu saluton.sh

Malfermu la skripton en via preferata redaktilo tajpante la jenon: ( pri nano-komando )

nano saluton.sh

Enmetu la jenan tekston ene de nano:

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

Premu CTRL kaj O por konservi la dosieron kaj poste CTRL kaj X por fermi la dosieron.

Por ekzekuti la skripton enmetu la sekvantan en la komandlinion anstataŭigante vian nomon.

Ŝi salutas

Se mi kuras la skripton per mia nomo, ĝi montras la vortojn "Saluton Gary".

La unua linio havas la #! / Bin / bash-linion, kiu estas uzata por identigi la dosieron kiel bash-skripto.

La dua linio uzas la eĥan komunikaĵon por eĥi la vorton saluton kaj tiam ekzistas la stranga $ @ notacio. ( pri eĥo-komando )

La $ @ vastiĝas por montri ĉiun parametron, kiu estis enmetita kune kun la nomo de la skripto. Do se vi tajpis "sh greetme.sh tim" la vortoj "hello tim" estus montritaj. Se vi tajpis "greetme.sh tim smith" tiam la vortoj "hello tim smith" estus montritaj.

Povas esti bela por la saluton.sh skripto nur diri saluton uzante nur la unuan nomon. Neniu diras "saluton gary newell" kiam ili renkontas min, ili eble diras "saluton gary".

Ni ŝanĝu la skripton por ke ĝi nur uzu la unuan parametron. Malfermu la saluton.sh skripto en nano tajpante la jenajn:

nano saluton.sh

Ŝanĝi la skripton tiel ke ĝi legas jene:

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

Konservu la skripton premante CTRL kaj O kaj poste eliru premante CTRL kaj X.

Kuru la skripton kiel montrita sube (anstataŭigu mian nomon kun via):

sh saluton.sh gary newell

Kiam vi kuras la skripton, ĝi simple diros "saluton gary" (aŭ espereble "saluton" kaj kia ajn via nomo estas.

La 1 post la $ simbolo esence diras al la eĥo-komando, uzu la unuan parametron. Se vi anstataŭigas $ 1 kun $ 2, tiam ĝi montriĝus "saluton nova" (aŭ kio ajn via nomo estas).

Ĉefe, se vi anstataŭigis la $ 2 kun $ 3 kaj kuris la skripton per nur 2 parametroj, la eligo simple estos "Saluton".

Eblas montri kaj pritrakti la nombron de parametroj fakte eniritaj kaj en postaj tutoriales mi montros kiel uzi la parametron-kalkulon por kontrolada celoj.

Por montri la nombron de parametroj enskribitaj malfermu la saluton.sh script (nano greetme.sh) kaj modifi la tekston kiel sekvas:

#! / bin / bash echo "vi eniris $ nombrajn nomojn" eĥo "saluton $ @"

Premu CTRL kaj O por ŝpari la skripton kaj CTRL kaj X por eliri nano.

La $ # en la dua linio montras la numeron de parametroj eniritaj.

Ĝis nun ĉio ĉi estis nova sed ne tre utila. Kiu bezonas skripton, kiu simple montras "saluton"?

La vera uzado por eĥaj asertoj estas doni verbon kaj signifan eliron al la uzanto. Se vi povas imagi, ke vi volas fari ion komplika, kiu implicas iujn seriozajn kruĉojn kaj dosierujajn dosierujojn, ĝi estus utila por montri al la uzanto, kio okazas ĉiun paŝon.

Kontraŭe, enigaj parametroj faras vian skripton interaga. Sen enmetaj parametroj vi bezonus dekojn da skriptoj ĉiuj farante tre similajn aferojn sed kun iomete malsamaj nomoj.

Kun ĉio tio en la menso ekzistas iuj aliaj utilaj enigaj parametroj, ke ĝi estas bona ideo scii kaj mi inkludos ilin ĉiujn en unu kodon fragmenton.

Malfermu vian saluton.sh skripto kaj amendu ĝin kiel sekvas:

#! / bin / bash echo "Dosiero: $ 0" eĥo "Procezo ID: $$" eĥo "---------------------------- --- "eĥo" vi eniris $ nombrojn "eĥo" saluton $ @ "

Premu CTRL kaj O por savi la dosieron kaj CTRL kaj X por eliri.

Nun ekzekutu la skripton (anstataŭigu per via nomo).

Ŝi salutas

Ĉi tiu fojo la skripto montras la jenon:

Dosiernomo: greetme.sh Procezo ID: 18595 ------------------------------ vi eniris 2 nomojn saluton gary newell

La $ 0 en la unua linio de la skripto montras la nomon de la skripto, kiun vi funkcias. Notu, ke ĝi estas dolaro nulo kaj ne dolaro o.

La $$ en la dua linio montras la procezon id de la skripto, kiun vi funkcias. Kial tio estas utila? Se vi funkcias skripton en la unua fono, vi povas nuligi ĝin per simple premado de CTRL kaj C. Se vi kuris la skripton en la fono kaj komencis ĉagreni kaj farante la saman aferon dum aŭ pli aŭ pli kaŭzis damaĝon al via sistemo, kiun vi bezonus por mortigi ĝin.

Por mortigi skripton kurantan en la fono, vi bezonas la procezon id de la skripto. Ĉu ne estus bone se la skripto donis la procezon id kiel parto de sia eligo. ( pri ps kaj mortigi ordonojn )

Fine antaŭ ol fini kun ĉi tiu temo mi volis diskuti pri kie eliras la eliro. Ĉiufoje la skripto kuris tiel longe, la eligo montris sur la ekrano.

Ĝi estas tre komuna, ke la elsendo de skripto estu skribita al eliga dosiero. Por fari ĉi tion kuri vian skripton kiel sekvas:

sh greetme.sh gary> greetme.log

La> simbolo en la supra komando elsendas la tekston "saluton gary" al dosiero nomata greetme.log.

Ĉiufoje, kiam vi kuras la skripton per la> simbolo, ĝi superskribas la enhavon de la eliga dosiero. Se vi preferus aldoni al la dosiero anstataŭigi la> kun >>.

Resumo

Vi nun devas skribi tekston al la ekrano kaj akcepti enmetajn parametrojn.