Mga magsisimula Giya ngadto sa BASH - Input Parameters

Welcome sa ikaduhang bahin sa Beginners Guide To BASH series nga talagsaon tungod kay kini ang bugtong BASH tutorial nga gisulat sa usa ka beginner alang sa mga nagsugod.

Ang mga magbabasa niini nga giya makapalig-on sa ilang kahibalo samtang akong gipalig-on ang akong kahibalo ug hinaut nga sa katapusan niini tanan kita makahimo sa pagsulat sa pipila ka mga maalamon nga mga script.

Sa miaging semana gitabunan nako ang pagmugna sa imong unang script nga nagpakita lamang sa mga pulong nga "Hello World". Kini naglangkob sa mga subject sama sa mga editor sa teksto, kung unsaon pag-abli sa usa ka terminal window, diin ibutang ang imong mga script, kung unsaon ipasundayag ang mga pulong nga "Hello World" ug pipila ka mas maayo nga punto sa mga karakter nga makagawas sama sa quotes ("").

Niining semanaha akong tabonan ang mga parameter nga input. Adunay uban nga mga giya nga nagtudlo niining matang sa butang apan akong nahibal-an nga sila nangita sa pipila ka mga butang nga adunay ubos nga lebel ug tingali naghatag og daghang impormasyon.

Unsa ang Parameter?

Sa "Hello World" nga script gikan sa katapusang tutorial kini tanan nga walay pulos. Ang script wala gayud makahimo sa tanan.

Sa unsa nga paagi nga kita molambo sa script nga "Hello World"?

Komosta ang usa ka script nga nagapasalamat sa tawo nga nagpadagan niini? Imbis nga moingon "Hello World" kini moingon "Hello Gary", "Hello Tim" o "Hello Dolly".

Kung wala ang abilidad sa pagdawat sa mga sulud sa input kinahanglan nga isulat ang tulo ka mga script nga "hellogary.sh", "hellotim.sh" ug "hellodolly.sh".

Pinaagi sa pagtugot sa atong script sa pagbasa sa mga sulud sa input mahimo namong gamiton ang usa ka script sa paghangyo kang bisan kinsa.

Sa pagbuhat niini pagbukas sa usa ka terminal window (CTRL + ALT + T) ug navigate sa imong script nga folder pinaagi sa pag-type sa mosunod: ( mahitungod sa cd command )

cd scripts

Paghimo og usa ka bag-ong script nga gitawag ug greetme.sh pinaagi sa pag-type sa mosunod: ( mahitungod sa touch command )

paghikap sa greetme.sh

Ablihi ang script sa imong paborito nga editor pinaagi sa pag-type sa mosunod: ( mahitungod sa nano command )

nano greetme.sh

Pagsulod sa mosunod nga teksto sulod sa nano:

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

Pindota ang CTRL ug O aron sa pagluwas sa file ug unya CTRL ug X aron masirado ang file.

Aron makadagan ang script mosulod sa mosunod ngadto sa command line nga gipuli sa imong ngalan.

sh greetme.sh

Kon ako modagan sa script sa akong ngalan kini mopakita sa mga pulong nga "Hello Gary".

Ang una nga linya adunay #! / Bin / bash nga linya nga gigamit sa pag-ila sa file isip bash script.

Ang ikaduha nga linya naggamit sa echo nga pahayag sa pag-echo sa pulong nga hello ug dayon adunay katingad-ang $ @ notation. ( mahitungod sa echo nga sugo )

Ang $ @ nagpalapad aron ipakita ang matag parameter nga gisulod kauban sa ngalan sa script. Busa kung imong i-type ang "sh greetme.sh team" ang mga pulong nga "hello team" ipasundayag. Kon imong isulat ang "greetme.sh tim smith" nan ang mga pulong nga "hello tim smith" ipakita.

Maayo tingali alang sa mga pulong sa greetme.sh nga mag-ingon lang kini gamit ang una nga ngalan. Walay moingon nga "hello gary newell" sa dihang sila nakigkita nako, tingali moingon sila "hello gary" bisan pa.

Atong usbon ang script aron kini mogamit lamang sa unang parameter. Ablihi ang script sa greetme.sh sa nano pinaagi sa pag-type sa mosunod:

nano greetme.sh

Usba ang script aron kini mabasa ingon sa mosunod:

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

Luwasa ang script pinaagi sa pagputol sa CTRL ug O ug unya sa exit pinaagi sa pagputol sa CTRL ug X.

Pagdalagan ang script sumala sa gipakita sa ubos (pulihan ang akong ngalan sa inyo):

sh greetme.sh gary newell

Sa diha nga ikaw nagdagan sa script moingon lang kini "hello gary" (o gilauman nga "hello" ug bisan unsa ang imong ngalan.

Ang 1 human sa $ simbolo nga nag-ingon sa echo nga sugo, gamiton ang unang parameter. Kon ibutang nimo ang $ 1 sa usa ka $ 2 nan ipakita kini "hello newell" (o bisan unsa ang imong apelyido).

Kon kini gipulihan nimo ang $ 2 sa usa ka $ 3 ug gipadagan ang script nga adunay 2 nga mga sukdanan nga ang output maoy "Hello".

Posible nga ipakita ug kupti ang gidaghanon sa mga parameter nga aktwal nga gisulod ug sa ulahing mga tutorial akong ipakita kung unsaon paggamit ang parameter nga sukaran alang sa mga katuyoan sa pagbalido.

Aron ipakita ang gidaghanon sa mga parametro nga gipaabli ang bunyagan sa script (nano greetme.sh) ug usba ang teksto ingon sa mosunod:

#! / bin / bash echo "imong gisulod ang $ # mga ngalan" echo "hello $ @"

Pindota ang CTRL ug O aron sa pagluwas sa script ug CTRL ug X aron sa paggawas sa nano.

Ang $ # sa ikaduhang linya nagpakita sa gidaghanon sa mga parameter nga gisudlan.

Hangtud niining tanan kini nga nobela apan dili kaayo mapuslanon. Kinsa ang nagkinahanglan og usa ka script nga nagpasundayag lang og "hello"?

Ang tinuod nga paggamit alang sa echo nga mga pamahayag mao ang paghatag og verbose ug makahuluganon nga output ngadto sa user. Kon mahanduraw nimo nga gusto nimo nga buhaton ang usa ka butang nga komplikado nga naglangkob sa pipila ka seryoso nga gidaghanon nga pag-us-us ug pag-manipulasyon sa file / folder nga mapuslanon nga ipakita ngadto sa tiggamit unsa ang nahitabo sa matag lakang sa dalan.

Sa kasukwahi, ang input parameter makahimo sa imong script interactive. Kung wala ang mga pag-us aka mga input kinahanglan nimo ang daghan nga mga script nga ang tanan adunay susama nga mga butang apan adunay gamay nga mga ngalan.

Sa tanan niini diha sa hunahuna adunay uban pang mga mapuslanon nga mga sulud sa input nga kini usa ka maayong ideya nga mahibal-an ug akong ilakip kining tanan sa usa ka code snippet.

Ablihi ang imong sulat sa pagtimbaya ug usba kini sama sa mosunod:

#! / bin / bash echo "Filename: $ 0" echo "Proseso ID: $$" echo "---------------------------- --- "echo" imong gisulod ang $ # mga ngalan "echo" hello $ @ "

Pindota ang CTRL ug O aron maluwas ang file ug CTRL ug X aron sa paggawas.

Karon Pagdalagan ang script (pulihan ang imong ngalan).

sh greetme.sh

Niining panahona ang script nagpakita sa mosunod:

Filename: greetme.sh Proseso sa ID: 18595 ------------------------------ gipasulod nimo 2 ngalan hello gary newell

Ang $ 0 sa unang linya sa script nagpakita sa ngalan sa script nga imong gipadagan. Timan-i nga kini ang dolyar nga zero ug dili dolyar o.

Ang $$ sa ikaduhang linya nagpakita sa proseso nga id sa script nga imong gipadagan. Ngano nga kini mapuslanon? Kung ikaw nagdagan sa usa ka script sa foreground mahimo nimo kanselahon kini pinaagi lamang sa pagputol sa CTRL ug C. Kung imong gipadagan ang script sa background ug gisugdan ang paglibot ug pagbuhat sa samang butang balik-balik o nagsugod nga hinungdan sa kadaot sa imong sistema nga imong gikinahanglan aron sa pagpatay niini.

Sa pagpatay sa script nga nagdagan sa background kinahanglan nimo ang proseso id sa script. Dili ba kini maayo kung ang script naghatag sa proseso id isip kabahin sa iyang output. ( mahitungod sa ps ug sa pagpatay nga mga sugo )

Sa katapusan sa wala pa ako mahuman sa niini nga hilisgutan gusto nakong hisgutan ang mahitungod sa kung diin ang output. Sa matag higayon nga ang script nga midagan hangtud karon ang output gipakita sa screen.

Kini komon alang sa output sa script nga isulat sa usa ka output file. Aron mahimo kini sa imong script sama sa mosunod:

sh greetme.sh gary> greetme.log

Ang> simbolo sa ibabaw nga sugo nagpagawas sa teksto nga "hello gary" sa usa ka file nga gitawag ug greetme.log.

Sa matag higayon nga ikaw modagan sa script gamit ang> simbolo kini mag-overwrite sa sulod sa output file. Kung gusto nimo nga idugang sa file ipuli ang> uban >>.

Sumaryo

Kinahanglan ka na karon nga makahimo sa pagsulat sa teksto sa screen ug modawat sa mga pag-us aka mga sumbanan.