Gwida għall-Bidu għal BASH - Parametri ta 'l-Input

Merħba għat-tieni parti tal-Gwida għall-Bidu għal serje BASH li hija unika peress li hija l-unika tutorja BASH miktuba minn Bidu għall-Bidu.

Il-qarrejja ta 'din il-gwida ser jibnu l-għarfien tagħhom billi nibni l-għarfien tiegħi u nisperaw li sa l-aħħar ta' dan kollu se nkunu kapaċi niktbu skripts pjuttost għaqlija.

L-aħħar ġimgħa kont kopriet il- ħolqien tal-ewwel iskrittura tiegħek li sempliċement wriet il-kliem "Hello World". Ikopri suġġetti bħal edituri tat-test, kif tiftaħ tieqa tat-terminal, fejn tistaqsi l-iskripts tiegħek, kif turi l-kliem "Hello World" u xi punti ifjen fuq karattri ta 'ħarba bħal kwotazzjonijiet ("").

Din il-ġimgħa ser tkopri l-parametri tal-input. Hemm gwidi oħra li jgħallmu dan it-tip ta 'ħaġa iżda nsib li jaqbżu f'xi għalf pjuttost baxx u forsi jipprovdu informazzjoni wisq.

X'inhu Parametru?

Fil-iskrittura "Hello World" mill-aħħar tutorja kienet kollha statika ħafna. L-iskript ma verament ma għamilx wisq.

Kif nistgħu ntejbu fuq l-iskrittura "Hello World"?

Xi ngħidu dwar l-iskript li jilqa 'lill-persuna li tmexxiha? Minflok qal "Hello World" se ngħid "Hello Gary", "Hello Tim" jew "Hello Dolly".

Mingħajr il-ħila li taċċetta l-parametri tal-input ikollna tikteb tliet skripts "hellogary.sh", "hellotim.sh" u "hellodolly.sh".

Billi tippermetti l-iskrittura tagħna biex taqra l-parametri tal-input nistgħu nużaw kitba waħda biex insellem lil kulħadd.

Biex tagħmel dan, tiftaħ tieqa tat-terminal (CTRL + ALT + T) u navża lejn il-folder ta 'l-iskripts tiegħek billi ttajpja dan li ġej: ( dwar il-kmand cd )

skripts cd

Oħloq kitba ġdida imsejħa greetme.sh billi tippjana dan li ġej: ( dwar il-kmand tat-touch )

tmiss greetme.sh

Iftaħ l-iskript fl-editur favorit tiegħek billi jtajpja dan li ġej: ( dwar il-kmand nano )

nano greetme.sh

Daħħal it-test li ġej ġewwa nano:

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

Agħfas CTRL u O biex isalva l-fajl u mbagħad CTRL u X biex tagħlaq il-fajl.

Biex tmexxi l-iskript, daħħal dan li ġej fil-linja tal-kmand li tissostitwixxi bl-isem tiegħek.

sh greetme.sh

Jekk immexxu l-iskritt bl-isem tiegħi juri l-kliem "Hello Gary".

L-ewwel linja għandha l-linja #! / Bin / bash li tintuża biex tidentifika l-fajl bħala skript bash.

It-tieni linja tuża l-istqarrija ta 'l-eke biex tinnota l-kelma hello u mbagħad hemm in-notazzjoni stramba ta' $ @. ( dwar l-echo command )

Il-$ @ jespandi biex juri kull parametru li ddaħħal flimkien mal-isem tal-iskrittura. Mela jekk int ittajpjat "sh greetme.sh tim" il-kliem "hello tim" se jintwerew. Jekk int ittajpjat "greetme.sh tim smith" allura jintwerew il-kliem "hello tim smith".

Jista 'jkun sbieħ għall-iskrittura greetme.sh li tgħid hello billi tuża biss l-ewwel isem. Ħadd ma jgħid "hello gary newell" meta jiltaqgħu miegħi, jistgħu jgħidu "hello gary" għalkemm.

Ejjew inbiddlu l-iskrittura hekk li juża biss l-ewwel parametru. Iftaħ l-iskrittura greetme.sh fin-nano billi tippjana dan li ġej:

nano greetme.sh

Ibdel l-iskrittura sabiex taqra kif ġej:

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

Ħlief l-iskritt billi tagħfas CTRL u O u mbagħad ħruġ billi tagħfas CTRL u X.

Mexxi l-iskritt kif muri hawn taħt (ibdel l-isem tiegħi ma 'tiegħek):

sh greetme.sh gary newell

Meta tmexxi l-iskritt, din sempliċiment tgħid "hello gary" (jew nisperaw li "hello" u tkun xi tkun l-isem tiegħek.

L-1 wara s-simbolu $ bażikament jgħid lill-kmand tal-eku, uża l-ewwel parametru. Jekk tissostitwixxi l-$ 1 b'madwar $ 2 allura turi "hello newell" (jew tkun xi tkun il-kunjom tiegħek).

Inċidentalment, jekk issostitwixxiet il-$ 2 bi $ 3 u mexxiet l-iskrittura bi ftit parametri, il-produzzjoni tkun sempliċiment "Hello".

Huwa possibbli li nuru u nittratta n-numru ta 'parametri attwalment imdaħħla u fit-tutoriali sussegwenti ser nuri kif tuża l-għadd tal-parametri għal skopijiet ta' validazzjoni.

Biex turi n-numru ta 'parametri, daħħal l-iskrittura greetme.sh (nano greetme.sh) u temenda t-test kif ġej:

#! / bin / bash echo "int daħħalt ismijiet $ #" echo "hello $ @"

Agħfas CTRL u O biex isalva l-iskript u CTRL u X biex toħroġ nano.

Il-$ # fit-tieni linja turi n-numru ta 'parametri mdaħħla.

S'issa dan kollu kien ġdid iżda mhux utli ħafna. Min jeħtieġ skrittura li sempliċement turi "bonjour"?

L-użu veru għad-dikjarazzjonijiet ta 'l-eku huwa li jipprovdi output verbali u sinifikanti lill-utent. Jekk tista 'timmaġina li trid tagħmel xi ħaġa kkumplikata li tinvolvi xi qtugħ serju tan-numri u l-manipulazzjoni tal-fajl / folder, ikun utli li l-utent juri lill-utent dak li qed jiġri f'kull pass tat-triq.

B'kuntrast, il-parametri tal-input jagħmlu l-iskrittura tiegħek interattiva. Mingħajr il-parametri ta 'l-input ikollok bżonn ta' għexieren ta 'skripts kollha li qed jagħmlu affarijiet simili ħafna iżda li għandhom ismijiet ftit differenti.

B'konsiderazzjoni ta 'dan kollu hemm xi parametri ta' input utli oħra li hija idea tajba li tkun taf u jien ser ninkludihom kollha f'qafas ta 'kodiċi wieħed.

Iftaħ l-iskrittura tiegħek greetme.sh u temendaha kif ġej:

#! / bin / bash echo "Isem tal-fajl: $ 0" echo "Proċess ID: $$" echo "---------------------------- --- "echo" int daħħalt ismijiet $ # "echo" hello $ @ "

Agħfas CTRL u O biex isalva l-fajl u CTRL u X biex toħroġ.

Issa Mexxi l-iskritt (ibdel bl-isem tiegħek).

sh greetme.sh

Din id-darba l-iskrittura turi dan li ġej:

Isem tal-fajl: greetme.sh ID tal-proċess: 18595 ------------------------------ inti daħħalt 2 ismijiet hello gary newell

Il-$ 0 fl-ewwel linja tal-iskrittura juri l-isem tal-iskript li qed taħdem. Innota li huwa dollaru żero u mhux dollaru o.

Il-$ $ fuq it-tieni linja turi l-id tal-proċess ta 'l-iskript tiegħek qed taħdem. Għaliex dan huwa utli? Jekk qed taħdem b'kitba fit-tagħrif miksub tista 'tikkanċellah billi tagħfas it-CTRL u Ċ biss. Jekk mexxiet l-iskritt fl-isfond u beda l-looping u għamel l-istess ħaġa aktar u aktar jew beda jikkawża ħsara lis-sistema tiegħek għandek bżonn biex joqtluh.

Biex joqtol b'kitba li qed taħdem fl-isfond għandek bżonn l-id tal-proċess ta 'l-iskritt. Ma jkunx tajjeb jekk l-iskript ta l-ID tal-proċess bħala parti mill-output tiegħu. ( dwar ps u joqtlu kmandi )

Finalment qabel ma jispiċċa ma 'dan is-suġġett ridt niddiskuti dwar fejn tmur il-produzzjoni. Kull darba li l-iskritt kien għaddej s'issa l-ħruġ intwera fuq l-iskrin.

Huwa pjuttost komuni li l-output ta 'l-iskripts jinkiteb f'fajl tal-output. Biex tagħmel dan, immexxi l-iskrittura tiegħek kif ġej:

sh greetme.sh gary> greetme.log

Is-simbolu> fil-kmand ta 'hawn fuq joħroġ it-test "hello gary" għal fajl imsejjaħ greetme.log.

Kull darba li tmexxi l-iskript bis-simbolu>> tissostitwixxi l-kontenut tal-fajl tal-output. Jekk tippreferi li żżid mal-fajl ibdel il-> ma >>.

Sinteżi

Issa għandek tkun tista 'tikteb it-test fuq l-iskrin u taċċetta l-parametri tal-input.