Scriem scripturi pe bash - cum să devii programator

Fiecare script Bash trebuie să înceapă cu următoarele rânduri:

Aceasta protejează împotriva a două erori frecvente
1) Încercări de utilizare a variabilelor nedeclarate
2) Ignorarea unei comenzi de întrerupere






Dacă comanda se poate termina anormal și suntem mulțumiți de acest lucru, puteți folosi următorul cod:

Amintiți-vă că unele comenzi nu returnează un cod de abort, de exemplu "mkdir -p" și "rm -f".
Există, de asemenea, dificultăți legate de lanțul de apel al subrutinelor (command1 | command 2 | command3) din script, pentru a rezolva această restricție, puteți utiliza următoarea construcție:

Bash vă permite să utilizați funcțiile ca și comenzi normale, ceea ce crește foarte mult lizibilitatea codului dvs.:
Exemplul 1:

Încercați să mutați tot codul într-o funcție, lăsând doar variabile / constante globale și apelați funcția "principală" în care va exista toată logica la nivel înalt.

Bash vă permite să declarați variabile de mai multe tipuri, cele mai importante:
local (pentru variabilele utilizate numai pe plan intern)
readonly (încercări de retrimire variabilă care cauzează o eroare)

Există posibilitatea de a face o variabilă de tip readonly de la deja declarată:

Încercați să vă asigurați că toate variabilele dvs. sunt fie locale, fie readonly, ceea ce va îmbunătăți lizibilitatea și va reduce numărul de erori.

Utilizați $ () în loc de backquotes "

Ciclurile dinapoi sunt greu de citit și în unele fonturi pot fi ușor confundate cu citate simple.
Construcția $ () vă permite de asemenea să utilizați apeluri imbricate fără o durere de cap cu ecranare:

Utilizați paranteze pătrate dublu [[]] în loc de []

Parantezele duble vă permit să evitați utilizarea neintenționată a căilor în locul variabilelor:

În unele cazuri, sintaxa este simplificată:

Și, de asemenea, oferă funcționalități suplimentare:

  • || Logică OR (logică sau) - numai cu paranteze duble.
  • Logic ȘI (logic și) - numai cu paranteze duble.
  • <Сравнение строковых переменных (string comparison) — с двойными скобками экранирование не нужно.
  • == Comparația variabilelor șir cu substituția (potrivirea șirului cu globul) - numai cu paranteze duble.
  • =

Compararea variabilelor șir folosind expresii regulate (potrivirea șirului cu expresii regulate) - numai cu paranteze duble.





  • -Comparația digitală
  • -n Variabila șir nu este goală (șirul nu este gol)
  • -z Variabila șirului este goală (șirul este gol)
  • -eq Egalitatea digitală
  • -ine inegalitatea digitală (inegalitatea numerică)

Începând cu bash 3.2, expresii regulate sau substituții nu ar trebui să fie incluse în ghilimele, dacă expresia dvs. conține spații, puteți să o puneți în pereche:

Comparația variabilelor șir cu substituția este de asemenea disponibilă în instrucțiunea caz:

Lucrul cu variabilele de șir:

În mai multe funcții de bază (subestimate) de lucru cu variabile șir sunt construite în:
de bază:

Înlocuirea cu substituție:

Ștergeți cu substituție:
# Ștergerea de la începutul liniei, până la prima potrivire

# Ștergerea de la începutul liniei, până la ultima potrivire

# Ștergerea de la sfârșitul liniei, până la prima potrivire

# Ștergerea de la sfârșitul liniei, până la ultimul meci

Aruncați fișierele temporare

Unele comenzi se așteaptă la numele fișierului de intrare,<()’, он принимает на вход команду и преобразует в нечто что можно использовать как имя файла:
# descărcați două adrese URL și trimiteți-le la dif

Folosind un mâner pentru a trece variabilele multiline:
# MARKER - orice cuvânt.

Dacă doriți să evitați înlocuirea, marcatorul poate fi luat în ghilimele:
# constructul va returna '$ var' și nu valoarea variabilei

Variabile încorporate

  • $ 0 Numele scriptului
  • $ 1 $ 2 ... $ n Parametrii trecuți la script / funcții (parametri poziționali pentru script / funcție)
  • $ $ PID a scriptului (PID a scriptului)
  • $! PID a ultimei comenzi executate în fundal (PID a ultimei comenzi executate (și rularea în fundal))
  • $? Starea returnată de ultima comandă (starea de ieșire a ultimei comenzi ($ pentru comenzi pipeline))
  • $ # Numărul de parametri trecuți la script / funcție (numărul de parametri pentru script / funcție)
  • $ @ Toți parametrii trecuți la scriptul / funcțiile reprezentate ca cuvinte (vede argumentele ca un cuvânt separat)
  • $ * Toți parametrii trecuți la script / funcții reprezentați ca un singur cuvânt (vede argumentele ca un singur cuvânt)
  • De regulă:
  • $ * Rare util
  • $ @ Corectează corect parametrii și parametrii goi cu spații
  • $ @ Când este folosit, acesta constă de obicei din citate duble - "$ @"

Verificarea sintaxei (economisește timp dacă scriptul este executat mai mult de 15 secunde):

Urmărirea cu dezvăluirea de comenzi complexe:

Parametrii -v și -x pot fi specificați în cod, poate fi util dacă scriptul dvs. rulează pe aceeași mașină, iar logarea se face pe altul:

Semne că nu ar trebui să utilizați scripturile shell:
  • Scriptul conține mai mult de câteva sute de linii.
  • Aveți nevoie de structuri de date mai complexe decât arhitecturile convenționale.
  • Dumneavoastră zadolbalo se angajeze în murdăria cu citate și screening-ul.
  • Trebuie să procesați / modificați multe variabile de șir.
  • Nu este nevoie să invocați programe terță parte și nu este nevoie de conducte.
  • Pentru dvs. viteza / performanța este importantă.






Articole similare

Trimiteți-le prietenilor: