Ufängere Guide Fir BASH - Input Parameter

Wëllkomm am 2. Deel vun der Beginners Guide Zu BASH Serie, déi eenzegaarteg ass datt et déi eenzeg BASH Tutorial ass vun engem Ufänger fir Ufänger geschriwen.

D'Lieser vun dësem Guide ginn hir Wëssen erstallt wéi ech meng Wëssen erstallt an hoffentlech um Enn vun dësem alles wat mir fäeg sinn, puer zimlech clevere Scripte ze schreiwen.

Déi lescht Woch hunn ech d'Erzéihung vun Ärem éischte Skript bedecken déi einfach d'Wierder "Hello World" ugewisen huet. Et behandelt Themen wéi Text Editoren, wéi Dir eng Termin window öffnet, wou Dir Är Scripte uleeft, wéi d'Wierder "Hello World" an e puer méi héije Punkten op Fluchzeechen wéi Quotes ("").

Dës Woch wäert ech Angabe Parameter abegraff. Et ginn aner Guiden déi dës Saach léieren, awer ech fannen datt se an e puer relativ nidderegst Stéck sprangen a vläicht zevill Informatiounen.

Wat ass e Parameter?

Am "Hello World" -Skript vun der leschter Tutorial ass et ganz allgemeng. De Skript huet wierklech net vill ze vill.

Wéi kënne mir am "Hello World" Skript verbesseren?

Wéi iwwer e Skript, deen d'Persoun dee léisst? Anstatt "Hallo Welt" ze soen, wäert et soen "Hello Gary", "Hallo Tim" oder "Hello Dolly".

Ouni d'Kapazitéit fir Parameteren ze akzeptéieren, musse mir dräi Skripte "hellogary.sh", "hellotim.sh" an "hellodolly.sh" schreiwen.

Wann Dir eise Skript op d'Inputparameter liesen kann, kënne mir e Skript benotzen fir jidfereen ze begréissen.

Fir dëst ze maachen eng Klemmter Fënster opmaachen (CTRL + ALT + T) a fuert an Ären Skripte Verknüpfung andeems Dir déi folgend steet: ( iwwer de Kommando cd )

Cd Scripten

Neit Schrëft erstallt un de Begrëff "greetme.sh" andeems Dir déi folgend ass: ( iwwer Touch Command )

Touch begréissen

Gitt d'Skript op Äre Lieblingsautoritéiten unzemellen andeems Dir déi folgend Saachen: ( iwwer Nano Kommando )

nano greetme.sh

Gitt den Text an am Nano:

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

Dréckt CTRL a O fir d'Datei ze retten an dann CTRL an X fir déi Datei ze schéissen.

Gitt d'Skript erof ze lueden an d'Kommandozeilung mat Ärem Numm ersat.

sch begréissen.sh

Wann ech de Skript mat mengem Numm ze lueden weist se d'Wierder "Hello Gary" an.

Déi éischt Zeil huet d'#! / Bin / bash Linn déi benotzt gëtt fir d'Datei als e Scheechskript ze identifizéieren.

Déi zweet Zeil benotzt d'Echo-Ausso fir Echo d'Wuert Hallo an dann ass et e komeschen $ @ Notation. ( iwwer Echo Kommando )

De $ @ erweitert fir all Parameteren ze weisen, déi mat dem Skriptnam ageholl gouf. Also wann Dir e "greetme.sh tim" gezeechent gi wier d'Wierder "hello tim" gewise ginn. Wann Dir "greetme.sh tim smith" geprägt hutt, da wäerte d'Wierder "gudde tim smith" ugewisen ginn.

Et ass vläicht gutt fir de Begrëff greetme.sh fir ze sëtz ze soen just den éischte Numm. Kee wéist hei "Hallo gary newell", wann se mech treffen, awer se "Hallo gary" soen.

Loosst d'Skript änneren, sou datt et just den éischte Parameter benotzt. Öffnen Sie den Begrëff greetme.sh in Nano andeems Dir déi folgend Saachen ausschreiwt:

nano greetme.sh

Ändert de Skript sou datt et liest:

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

Gitt den Skript op den Dréckt CTRL a O an dann op der Ausfahrt duerch Dréckt CTRL a X.

Fuerder de Skript wéi et hei ënnendrënner ersetzt (ersetzen ech mäi Numm mat Ärem):

schéiss gmee.sh gary newell

Wann Dir de Skript leeft, wäert et einfach soen "Hallo gary" (oder hoffentlech "Hallo" an och ëmmer Äre Numm.

Den 1 nom de Symbol $ baséiert zu dem Echo-Kommando am Prinzip, benotzt den éischte Parameter. Wann Dir d'$ 1 duerch $ 2 ersetzt, da wäerte et "Hallo newell" (oder och ëmmer Äre Bummel) sinn.

Och wann Dir den $ 2 duerch en $ 3 ersat an de Skript mat just 2 Parameteren erauskoum, ass den Output einfach "Hallo".

Et ass méiglech ze weisen an ze bewäerten d'Zuel vun Parameteren déi aktuell agestallt ginn an an spéider Tutorials ze weisen, wéi d'Parameterziel fir Validatiounzwecker benotzt gëtt.

Fir d'Unzuel vun Parameteren ze weisen déi de Begrëff greetme.sh eroflueden (nano greetme.sh) a änneren den Text wéi folgend:

#! / bin / bash echo "Dir hutt $ # Nummere" echo "hello $ @"

Dréckt CTRL a O fir de Skript a CTRL ze retten an X mam Nano ze verléieren.

De $ # op der 2. Linn weist d'Nummer vun de Parameter op.

Bis all dëst war Roman, awer net ganz nëtzlech. Wien muss e Skript brauchen, deen einfach "hello" weist?

D'reelle Benotzung fir echo Aussoen ass fir verbose a bedeitend Ausgab fir dem Benotzer. Wann Dir Iech virstellen datt Dir eppes komplizéiert maache wëllt, wat eng seriös Zuel Crunching an Akte / Fichier Manipulatioun involviert ass, wier et nëtzlech fir de Benotzer unzezéien wat geschitt mat all Schrëtt.

Am Géigesaz dozou ginn d'Inputparameter Äre Scripts interaktiv. Ouni Parameter vun der Input Dir musst Dutzende vu Scripte brauchen, déi ganz ähnlech Saachen maachen, awer mat liicht anescht Nimm.

Mat all dem an dësem Sënn sinn et e puer nëtzlech Input Parameter, datt et eng gutt Iddi ass fir ze wëssen an ech wäert se all an engem Code-Snippet schreiwen.

Öffne Dir Äre scriptme.sh Schrëft an änneren dës:

#! / bin / bash echo "Dateinumm: $ 0" Echo "Prozess ID: $$" Echo "---------------------------- --- "Echo" Dir hutt $ # Nummere "Echo" Hallo $ @ "

Dréckt CTRL a O fir d'Datei ze speichern an CTRL an X ze réckelen.

Fuerderen d'Skript (ersetzen mat Ärem Numm).

sch begréissen.sh

Dës Kéier weist d'Skript déi folgend Aussoen:

Dateiname: greetme.sh Prozess ID: 18595 ------------------------------ Dir hutt 2 Nimmelen hello gary newell genannt

De $ 0 op der éischter Linn vum Skript weist den Numm vum Skript aus, deen Dir laaft. Nëmme mer datt et Dollar a Null ass an net Dollar o.

D'$$ op der zweeter Linn weist d'Prozessdiskussioun vum Skript déi dir laacht. Firwat ass dat nëtzlech? Wann Dir e Skript op der Viraus hutt, da kënnt Dir annuléieren andeems Dir einfach dréckt CTRL a C. Wann Dir de Skript am Hannergrond geläscht hutt, huet et ugefaangen d'Loopen ze maachen an de selwechte Saache méi oder wéineger ze maachen oder Schaden op Ärem System ze gebrauchen Dir musst et ëmzebréngen.

Fir e Skript, deen am Hannergrond laacht, ëmzebréngen, brauch Dir d'Prozess Id vum Skript. Wär et net gutt, wann de Skript d'Prozess-Id als Deel vun senger Ausgab huet. ( iwwer ps a Kill Kommandoen )

Schlussendlech hunn ech mat dësem Thema geschwat ech wollt iwwer d'Diskussioun iwwer déi wou d'Ausgaang geht. All Kéier wann de Skript bis elo erofgaang ass d'Ausgab ass op dem Écran.

Et ass zimlech allgemeng fir Skript Output ze schreiwen an eng Ausgabdatei geschriwwe ginn. Fir Äert Skript als folgend ze maachen:

schéisser.sh gary> greetme.log

D'Symbol vun der uewe vum Kommando ausgitt den Text "Hallo gary" zu enger Datei, genannt begréissen.log.

All Kéier wann Dir de Skript mat dem> Symbol läiert, schreift se den Inhalt vun der Outputdatei überschrëppelt. Wann Dir et léiwer géif léiwer an d'Datei appelen, ersetzen den> mat >>.

Summary

Dir sollt elo fäeg sinn, Text op dem Bildschreiber ze schreiwen an akzeptéieren Parameteren ze akzeptéieren.