Ghidul pentru începători la BASH - Parametrii de intrare

Bine ați venit la partea a 2-a a Ghidului pentru începători la seria BASH, care este unică prin faptul că este singurul tutorial BASH scris de un începător pentru începători.

Cititorii acestui ghid își vor dezvolta cunoștințele pe măsură ce îmi construiesc cunoștințele și, sperăm, până la sfârșitul anului, vom putea să scriem niște scripturi destul de inteligente.

Săptămâna trecută am acoperit crearea primului scenariu care pur și simplu afișa cuvintele "Hello World". Acesta acoperă subiecte cum ar fi editorii de text, cum să deschideți o fereastră terminală, unde să puneți scripturile dvs., cum să afișați cuvintele "Hello World" și câteva puncte mai fine cu privire la caracterele de evadare, cum ar fi citatele ("").

În această săptămână voi acoperi parametrii de intrare. Există și alte ghiduri care predau astfel de lucruri, dar am descoperit că sare într-o chestie destul de scăzută și poate să ofere prea multe informații.

Ce este un parametru?

În scriptul "Hello World" din ultimul tutorial, a fost foarte static. Scenariul nu a făcut deloc deloc.

Cum am putea îmbunătăți scriptul "Hello World"?

Cum rămâne cu un script care salută persoana care o execută? În loc să spui "Hello World", vei spune "Hello Gary", "Hello Tim" sau "Hello Dolly".

Fără capacitatea de a accepta parametrii de intrare, ar trebui să scriem trei scripturi "hellogary.sh", "hellotim.sh" și "hellodolly.sh".

Permițând scriptului nostru să citească parametrii de intrare, putem folosi un script pentru a saluta pe oricine.

Pentru a face acest lucru deschideți o fereastră de terminal (CTRL + ALT + T) și navigați la folderul dvs. de scripturi tastând următoarele: ( despre comanda cd )

cd script-uri

Creați un script nou numit greetme.sh tastând următoarele: ( despre comanda atingeți )

atingeți greetme.sh

Deschideți script-ul în editorul dvs. preferat introducând următoarele: ( despre comanda nano )

nano greetme.sh

Introduceți următorul text în nano:

#! / bin / bash ecou "salut $ @"

Apăsați CTRL și O pentru a salva fișierul și apoi CTRL și X pentru a închide fișierul.

Pentru a rula scriptul, introduceți următoarele în linia de comandă, înlocuind cu numele dvs.

sh greetme.sh

Dacă rulez scenariul cu numele meu, afișează cuvintele "Hello Gary".

Prima linie are linia #! / Bin / bash care este utilizată pentru a identifica fișierul ca un script bash.

A doua linie folosește instrucțiunea ecou pentru a echivala cuvântul salut și apoi există o notație ciudată $ @. ( despre comanda ecou )

$ @ Se extinde pentru a afișa fiecare parametru introdus împreună cu numele scriptului. Deci, dacă ați tastat "sh greetme.sh tim", vor fi afișate cuvintele "hello tim". Dacă ați tastat "greetme.sh tim smith", atunci vor fi afișate cuvintele "hello tim smith".

S-ar putea să fie frumos pentru scriptul greetme.sh să spun doar salut folosind doar primul nume. Nimeni nu spune "hello gary newell" când se întâlnesc cu mine, ar putea spune "hello gary" totuși.

Să schimbați scenariul astfel încât acesta să folosească doar primul parametru. Deschideți scriptul greetme.sh din nano introducând următoarele:

nano greetme.sh

Schimbați script-ul astfel încât să citească după cum urmează:

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

Salvați scriptul apăsând CTRL și O și apoi ieșiți apăsând CTRL și X.

Rulați scriptul după cum se arată mai jos (înlocuiți-mi numele cu al tău):

sh greetme.sh gary newell

Când rulați scenariul, acesta va spune pur și simplu "hello gary" (sau, sperăm, "hello" și indiferent de numele dvs.).

Simbolul 1 după simbolul $ spune în principiu comenzii ecou, ​​utilizați primul parametru. Dacă înlocuiți $ 1 cu un $ 2, atunci acesta va afișa "hello newell" (sau orice este numele dvs. de familie).

De altfel, dacă ați înlocuit $ 2 cu un $ 3 și ați rulat scriptul cu doar 2 parametri, rezultatul ar fi pur și simplu "Hello".

Este posibil să se afișeze și să se manipuleze numărul de parametri efectiv introduși, iar în tutorialele viitoare, voi arăta cum se utilizează numărul de parametri în scopul validării.

Pentru a afișa numărul de parametri introduși deschideți scriptul greetme.sh (nano greetme.sh) și modificați textul după cum urmează:

#! / bin / bash echo "ați introdus $ # nume" echo "salut $ @"

Apăsați CTRL și O pentru a salva scriptul și CTRL și X pentru a ieși din nano.

$ # Pe a doua linie afișează numărul de parametri introduși.

Până acum toate acestea au fost noi, dar nu foarte utile. Cine are nevoie de un script care să afișeze "salut"?

Utilizarea reală pentru declarațiile de ecou este de a oferi utilizatorilor o ieșire verbală și semnificativă. Dacă îți poți imagina că vrei să faci ceva complicat, care implică o serie de operații grave și manipulare de fișiere / foldere, ar fi util să afișezi utilizatorului ceea ce se întâmplă în fiecare pas al drumului.

Prin contrast, parametrii de intrare fac scriptul dvs. interactiv. Fără parametrii de intrare ai nevoie de zeci de scripturi, toate făcând lucruri foarte asemănătoare, dar cu nume ușor diferite.

Având în vedere toate acestea, există câțiva alți parametri de intrare utile, că este o idee bună să le cunoașteți și îi voi include pe toate într-un fragment de cod.

Deschideți scriptul greetme.sh și modificați-l după cum urmează:

#! / bin / bash echo "Numele fișierului: $ 0" echo "ID proces: $$" echo "---------------------------- --- "ecou" ați introdus $ # nume "echo" hello $ @ "

Apăsați CTRL și O pentru a salva fișierul și CTRL și X pentru a ieși.

Acum rulați scriptul (înlocuiți-vă cu numele dvs.).

sh greetme.sh

De data aceasta scriptul afișează următoarele:

Nume fișier: greetme.sh ID de proces: 18595 ------------------------------ ați introdus 2 nume hello gary newell

$ 0 pe prima linie a scriptului afișează numele scriptului pe care îl executați. Rețineți că este dolar zero și nu dolar o.

$ $$ pe a doua linie afișează ID-ul procesului scriptului pe care îl executați. De ce este util acest lucru? Dacă rulați un script în prim-plan, îl puteți anula apăsând CTRL și C. Dacă ați rulat scriptul în fundal și ați început să faceți buclă și să faceți același lucru în mod repetat sau dacă ați început să provocați daune sistemului dvs., să o omoare.

Pentru a ucide un script care rulează în fundal, aveți nevoie de ID-ul procesului de script. Nu ar fi bine dacă scenariul a dat ID-ul procesului ca parte a producției sale. ( despre comenzi ps și kill )

În cele din urmă, înainte de a termina cu acest subiect, am vrut să discut despre locul în care se desfășoară producția. De fiecare dată când scenariul a rulat până acum, ieșirea a fost afișată pe ecran.

Este destul de comun ca scrierea de ieșire să fie scrisă într-un fișier de ieșire. Pentru a face acest lucru rulați-vă script-ul după cum urmează:

sh greetme.sh gary> greetme.log

Simbolul> din comanda de mai sus scoate textul "hello gary" la un fișier numit greetme.log.

De fiecare dată când executați scriptul cu simbolul> suprascrie conținutul fișierului de ieșire. Dacă doriți să adăugați la fișier înlocuiți> cu >>.

rezumat

Acum ar trebui să puteți scrie text pe ecran și să acceptați parametrii de intrare.