Canllaw i Ddechreuwyr BASH - Paramedrau Mewnbwn

Croeso i'r ail ran o'r gyfres Canllaw i BASH Dechreuwyr sy'n unigryw gan mai dyma'r unig diwtorial BASH a ysgrifennwyd gan ddechreuwr ar gyfer dechreuwyr.

Bydd darllenwyr y canllaw hwn yn datblygu eu gwybodaeth wrth i mi ddatblygu fy ngwybodaeth a gobeithio erbyn diwedd y cyfan y byddwn yn gallu ysgrifennu rhai sgriptiau eithaf clyfar.

Yr wythnos ddiwethaf, roeddwn i'n cwmpasu creu eich sgript cyntaf a oedd yn dangos y geiriau "Hello World". Mae'n cynnwys pynciau megis golygyddion testun, sut i agor ffenestr derfynell, ble i roi eich sgriptiau, sut i arddangos y geiriau "Hello World" a rhai pwyntiau terfynach ar gymeriadau dianc megis dyfyniadau ("").

Yr wythnos hon rydw i'n mynd i gwmpasu paramedrau mewnbwn. Mae yna ganllawiau eraill sy'n dysgu'r math hwn o beth ond rwy'n gweld eu bod yn neidio i rywfaint o bethau eithaf isel ac efallai y byddant yn rhoi gormod o wybodaeth.

Beth yw Paramedr?

Yn y sgript "Helo'r Byd" o'r tiwtorial diwethaf roedd popeth yn hollol sefydlog. Nid oedd y sgript yn gwneud llawer o gwbl.

Sut allwn ni wella ar y sgript "Hello World"?

Beth am sgript sy'n rhoi cyfle i'r person sy'n ei redeg? Yn lle dweud "Hello World" bydd yn dweud "Helo Gary", "Helo Tim" neu "Helo Dolly".

Heb y gallu i dderbyn paramedrau mewnbwn, byddai angen i ni ysgrifennu tri sgript "hellogary.sh", "hellotim.sh" a "hellodolly.sh".

Trwy ganiatáu i'n sgript ddarllen paramedrau mewnbwn, gallwn ddefnyddio un sgript i gyfarch unrhyw un.

I wneud hyn, agorwch ffenestr derfynell (CTRL + ALT + T) a llywio at eich ffolder sgriptiau trwy deipio'r canlynol: ( ynghylch gorchymyn cd )

sgriptiau cd

Creu sgript newydd o'r enw greetme.sh trwy deipio'r canlynol: ( ynghylch gorchymyn cyffwrdd )

cyfarch greetme.sh

Agorwch y sgript yn eich hoff olygydd trwy deipio'r canlynol: ( ynghylch gorchymyn nano )

nano greetme.sh

Rhowch y testun canlynol o fewn nano:

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

Gwasgwch CTRL ac O i achub y ffeil ac yna CTRL a X i gau'r ffeil.

I redeg y sgript, nodwch y canlynol i'r llinell orchymyn yn lle eich enw.

sh greetme.sh

Os ydw i'n rhedeg y sgript gyda'm henw mae'n dangos y geiriau "Hello Gary".

Y llinell gyntaf sydd â llinell #! / Bin / bash a ddefnyddir i adnabod y ffeil fel sgript bash.

Mae'r ail linell yn defnyddio'r datganiad adleisio i adleisio'r gair helo ac yna ceir y nodyn $ @ not. ( am orchymyn echo )

Mae'r $ @ yn ehangu i arddangos pob paramedr a gofnodwyd ynghyd â'r enw sgript. Felly, os ydych chi wedi teipio "sh greetme.sh tim" byddai'r geiriau "hello tim" yn cael eu harddangos. Os ydych chi'n teipio "greetme.sh tim smith" yna byddai'r geiriau "hello tim smith" yn cael eu harddangos.

Efallai y bydd hi'n braf ar gyfer y script greetme.sh i ddweud helo gan ddefnyddio'r unig enw cyntaf. Nid oes neb yn dweud "hello gary newell" pan fyddant yn cwrdd â mi, efallai y byddant yn dweud "hello gary".

Gadewch i ni newid y sgript fel ei fod yn defnyddio'r paramedr cyntaf yn unig. Agorwch y sgript greetme.sh yn nano trwy deipio'r canlynol:

nano greetme.sh

Newid y sgript fel ei fod yn darllen fel a ganlyn:

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

Arbedwch y sgript trwy wasgu CTRL ac O ac yna allanwch trwy wasgu CTRL a X.

Rhedeg y sgript fel y dangosir isod (disodli fy enw gyda chi):

sh greetme.sh gary newell

Pan fyddwch chi'n rhedeg y sgript, bydd yn syml yn dweud "hello gary" (neu gobeithio "hello" a beth bynnag yw eich enw.

Mae'r 1 ar ôl y $ symbol yn y bôn yn dweud wrth y gorchymyn echo, defnyddiwch y paramedr cyntaf. Os ydych chi'n disodli $ 1 gyda $ 2 yna byddai'n dangos "hello newell" (neu beth bynnag yw eich cyfenw).

Gyda llaw, fe wnaethoch chi ddisodli'r $ 2 gyda $ 3 a rhedeg y sgript gyda dim ond 2 baramedr y byddai'r allbwn yn syml yn "Helo".

Mae'n bosibl arddangos a thrin nifer y paramedrau a gofnodwyd mewn gwirionedd ac mewn sesiynau tiwtorial yn ddiweddarach, byddaf yn dangos sut i ddefnyddio'r cyfrif paramedr at ddibenion dilysu.

I arddangos nifer y paramedrau a nodir, agorwch sgript greetme.sh (nano greetme.sh) a diwygio'r testun fel a ganlyn:

#! / bin / bash echo "rydych wedi cofrestru $ # names" echo "hello $ @"

Gwasgwch CTRL ac O i achub y sgript a CTRL a X i adael nano.

Mae'r $ # ar yr 2il linell yn dangos nifer y paramedrau a gofnodwyd.

Hyd yn hyn mae hyn i gyd wedi bod yn nofel ond nid yn ddefnyddiol iawn. Pwy sydd angen sgript sy'n dangos "helo"?

Y defnydd go iawn ar gyfer datganiadau adleisio yw darparu geiriau ac allbwn ystyrlon i'r defnyddiwr. Os gallwch chi ddychmygu eich bod am wneud rhywbeth yn gymhleth sy'n cynnwys rhywfaint o graean rhif difrifol a thrin ffeiliau / ffolder, byddai'n ddefnyddiol arddangos i'r defnyddiwr beth sy'n digwydd bob cam o'r ffordd.

Mewn cyferbyniad, mae paramedrau mewnbwn yn gwneud eich sgript yn rhyngweithiol. Heb baramedrau mewnbwn byddai angen dwsinau o sgriptiau i gyd yn gwneud pethau tebyg iawn ond gydag enwau ychydig yn wahanol.

Gyda hyn oll mewn golwg, mae yna rai paramedrau mewnbwn defnyddiol eraill y mae'n syniad da i'w wybod a byddaf yn eu cynnwys i gyd mewn un bwlch cod.

Agorwch eich sgript greetme.sh a'i diwygio fel a ganlyn:

#! / bin / bash echo "Enw ffeil: $ 0" echo "ID Proses: $$" echo "---------------------------- --- "adleisio" rydych wedi nodi $ # names "echo" hello $ @ "

Gwasgwch CTRL ac O i achub y ffeil a CTRL a X i adael.

Nawr Rhedeg y sgript (rhowch eich enw yn ei le).

sh greetme.sh

Y tro hwn mae'r sgript yn dangos y canlynol:

Enw ffeil: greetme.sh ID y Broses: 18595 ------------------------------ rhowch 2 enw helo, gary newell

Mae'r $ 0 ar linell gyntaf y sgript yn dangos enw'r sgript rydych chi'n ei rhedeg. Noder ei fod yn ddoler sero ac nid doler o.

Mae'r $ $ ar yr ail linell yn dangos id proses y sgript rydych chi'n ei rhedeg. Pam mae hyn yn ddefnyddiol? Os ydych chi'n rhedeg sgript yn y blaendir gallwch chi ei ganslo trwy wasgu CTRL a C. Os ydych chi'n rhedeg y sgript yn y cefndir a dechreuodd droi a gwneud yr un peth drosodd a throsodd neu wedi dechrau achosi difrod i'ch system, byddech chi ei angen i'w ladd.

I ladd sgript sy'n rhedeg yn y cefndir, mae angen iddyn nhw broses y sgript. Oni fyddai'n dda pe bai'r sgript yn rhoi id y broses fel rhan o'i allbwn. ( am ps a lladd gorchmynion )

Yn olaf cyn i mi orffen gyda'r pwnc hwn, roeddwn i'n awyddus i drafod ble mae'r allbwn yn mynd. Bob tro mae'r sgript wedi rhedeg hyd yn hyn mae'r allbwn wedi cael ei arddangos ar y sgrin.

Mae'n eithaf cyffredin i ddarlledu sgript gael ei ysgrifennu i ffeil allbwn. I wneud hyn, redeg eich sgript fel a ganlyn:

sh greetme.sh gary> greetme.log

Mae'r> symbol yn y gorchymyn uchod yn dangos y testun "hello gary" i ffeil o'r enw greetme.log.

Bob tro rydych chi'n rhedeg y sgript gyda'r symbol> mae'n overwrites cynnwys y ffeil allbwn. Pe byddai'n well gennych atodi ar y ffeil, disodli'r> gyda >>.

Crynodeb

Dylech nawr allu ysgrifennu testun i'r sgrîn a derbyn paramedrau mewnbwn.