Script de shell (bash)

Un script de shell este un fișier text cu o listă de comenzi de shell și este executat ca un program pentru a efectua o sarcină sau un set de sarcini. Scopul principal al unui script shell este de a automatiza sarcinile și de a economisi timp. Este important să înțelegeți structura de bază a unui script shell, deoarece interacționați cu un cluster de calcul prin intermediul scripturilor shell (a se vedea capitolul următor despre Grid Engine)

ce este Bash?

Există multe shell-uri diferite disponibile în sistemele de tip Unix. Bourne Again Shell (Bash) este unul dintre ele, acesta fiind shell-ul implicit pe sistemele GNU/Linux. Are unele avantaje față de alte shell-uri și este practic shell-ul standard, iar mai jos vom arăta cum să îl folosim pentru scripting.

Scrierea unui script simplu de shell Bash

Un script de bază de shell este doar o serie de comenzi. Aceasta este ceea ce vom arăta în continuare.

Să scriem un script simplu care scoate pe ecran „hello world” folosind comanda echo. Vom salva fișierul text ca myScript.sh

 #!/bin/bash echo Hello World

executarea sintaxei unui script shell:bash your-script-name. În cazul nostru, vom scrie:

$ bash myScript.sh Hello World

exemplu mai complicat

Să scriem un script ceva mai complicat folosind mai multe comenzi de shell. Scriptul folosește ls pentru a lista fișierele și folosește comanda wc -l care numără numărul de linii dintr-un anumit fișier sau din intrarea standard. În acest caz, wc -l numără numărul de linii din ieșirea lui ls -l. Toate acestea se realizează prin utilizarea pipe-ului |.

Conținutul scriptului.sh:

 #!/bin/bash echo here are the list of files ls -l echo The number of files: ls -l | wc -l 

Îl putem executa după cum urmează:

$ bash script.sh

variabile în scripturile bash

De asemenea, puteți utiliza variabile în scripturile bash. Care sunt utile pentru a capta ieșirea comenzilor intermediare și a le utiliza pentru a executa alte comenzi. nu există tipuri de date pentru variabile. O variabilă în bash poate conține oricare dintre următoarele: un număr, un caracter sau un șir de caractere.

Nu este nevoie să declarați o variabilă, simpla atribuire a unei valori la referința sa o va crea.

Acum vom crea un script simplu cu o singură variabilă. Vom atribui Hello world șirul Hello world la acea variabilă și vom imprima acea variabilă cu echo.

 #!/bin/bash VAR="Hello world" echo $VAR 

Când am atribuit variabila nu am folosit semnul $, dar când am folosit variabila a trebuit să folosim semnul $.

Argumente de linie de comandă în scripturile bash

Scriptul poate primi și argumente de linie de comandă. Aici modificăm scriptul care listează fișierul pentru a lua un argument de linie de comandă. Argumentul va fi o cale către un director.

conținutul scriptului2.sh:

 #!/bin/bash VAR= echo here are the list of files ls -l $VAR echo The number of files: ls -l $VAR | wc -l 

Iată cum se execută scriptul:

$ bash script2.sh /home/user/project

Argumentele sunt stocate în variabile cu un număr în ordinea argumentului începând de la 1

  • Primul argument: $1
  • Secundul argument: $2
  • și așa mai departe…

În cazul nostru, corespunde lui /home/user/project.

Operații aritmetice scripturi bash

Operațiile aritmetice asupra numerelor întregi în bash se fac în următorul format:

#!/bin/bash x=6 y=2 $((10 - 5)) $((x-y)) echo $((x-y)) echo $((10-5))

Puteți, de asemenea, să copiați și să lipiți aceste comenzi în consolă pentru a vedea cum funcționează. Comenzile echo ar trebui să dea ca rezultat 4 și 5.

Aritmetica în bash nu suportă virgulă mobilă (de exemplu, operația 1,3 -1 nu va funcționa în bash), trebuie să folosiți comanda bc. Consultați acest exemplu din stackOverflow pentru un exemplu de utilizare a bc.

Lovind peste fișiere

Dacă încercați să automatizați o sarcină folosind scriptingul bash, este foarte probabil că va trebui să aplicați anumite comenzi pe fiecare fișier dintr-un director. Acest lucru ar putea fi realizat cu buclele cu caractere wild* și for. Următorul script stochează toate fișierele ‘.txt’ din directorul /path/to în variabila FILES. Apoi, pentru fiecare fișier calculează numărul de linii și îl scoate la ieșire cu comanda wc -l.

#!/bin/bash FILES=/path/to/*.txt for f in $FILES do echo "Processing $f file..." # count number of lines and output that for file $f wc -l $f done 

Mai multe despre scripturile bash

Puteți scrie scripturi shell și mai complicate folosind structuri de control (bucle if/else, for/while) și puteți realiza multe lucruri doar folosind scripturile shell, dar acest lucru depășește sfera de aplicare a acestui document. Consultați linkurile de mai jos dacă doriți să vă perfecționați în scrierea scripturilor shell.

  • http://www.freeos.com/guides/lsst/
  • http://www.tldp.org/LDP/Bash-Beginners-Guide/html/

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.