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ă.