Sunteți pe pagina 1din 26

Lab. 7.

Scripturi Linux
Contents
Bazele scripturilor...................................................................................................................................3
Crearea și Executarea primului program BASH:.........................................................................................4
Utilizarea comenzii echo:...........................................................................................................................5
Utilizarea comentariului:...........................................................................................................................6
Utilizarea comentariului pe mai multe linii:...............................................................................................6
Variabilele în scripturi:...............................................................................................................................8
Comanda: IF.............................................................................................................................................12
if-then......................................................................................................................................................12
If-else.......................................................................................................................................................13
If-elif........................................................................................................................................................14
Test..........................................................................................................................................................16
for............................................................................................................................................................18
while........................................................................................................................................................19
while- citim fișierul rând cu rând în scriptul Bash....................................................................................19
let............................................................................................................................................................21
expr.........................................................................................................................................................22
shift..........................................................................................................................................................22
case.........................................................................................................................................................22
read.........................................................................................................................................................23
awk..........................................................................................................................................................23
Bazele scripturilor
Un script, sau așa cum se mai numește - scenariu, este o secvență de comenzi care sunt citite și
executate la rândul lor de un program interpret (interpretor de comenzi), în cazul nostru este un
program de linie de comandă - bash.

Script - este un fișier-text, în care sunt enumerate comenzile uzuale pe care ne-am obișnuit să le
introducem manual, precum și programul indicat care le va executa.

Bash este disponibil în aproape toate versiunile Linux și nu necesită o instalare separată. Lista
shell-urilor disponibile poate fi verificată prin introducerea următoarei comenzi:

cat /etc/shells

Afisarea la ecran ar putea fi:

/bin/bash
/bin/sh
/bin/tcsh
/bin/csh

Comanda which va arăta calea catre scriptul bash.

which bash

Rezultatul acestei comenzi va fi:

/bin/bash

Cel mai simplu exemplu Bash Shell Script:

#!/bin/bash
echo "Hello world"

Comanda echo afișează șirul transmis acesteia ca parametru la ecran. Prima linie a uniu script
este specială, specifică programul care va executa comenzile. Pe de altă parte, prima linie indică
sistemului că acesta nu este doar un fișier text, dar un program și el trebuie executat: de deschis
fișierul, de aflat interpretorul și de executat scriptul. Dacă nu este specificat niciun interpretor de
comenzi, atunci va fi utilizat interpretorul de comenzi implicit al utilizatorului. Dar deoarece nu
toată lumea utilizează bash, atunci trebuie de indicat acesta în mod explicit.
Crearea și executarea primului program BASH:

Puteți rula fișierul bash în trei moduri. O modalitate este prin utilizarea comenzii bash (sau sh)
și alta este prin setarea permisiunii de execuție pentru fișierul bash, și rularea fișierului. Ambele
moduri sunt prezentate aici.

$ bash First.sh

or

$ sh First.sh

or

$ chmod a+x First.sh


$ ./First.sh

Pentru a face un fișier executabil pe Linux indeplinim comanda:

chmod ugo+x fisier_script

Acum indeplinim primul nostru mic program:

./fisier_script
Utilizarea comenzii echo :

Puteți utiliza comanda echo cu diverse opțiuni. Unele opțiuni utile sunt menționate în exemplul
următor. Când utilizați comanda „echo” fără nicio opțiune, se adaugă în mod implicit o nouă
linie. Opțiunea „-n” este utilizată pentru a imprima orice text fără a se efectua trecerea la o nouă
linie , iar opțiunea „-e” este utilizată pentru a elimina caracterele cu backslash din ieșire.
În continuare va fi prezentat un script bash cu un numele b2.sh și ce va afișa acest script după ce
va fi lansat:

Utilizarea comentariului:
Simbolul ' # ' (sau ‘:’)este utilizat pentru a adăuga un comentariu pe o singură linie în scriptul
bash. De asemenea pot fi utilizate comentarii pe mai multe linii întrun fișier bash. Pentru aceasta
pot fi folosite simbolurile ‘:’ și „ ’, vedeti exemplul de mai jos.
Variabile în scripturi :
Valoarea unui șir se ia între ghilimele. Dar, în realitate, ghilimelele nu sunt întotdeauna necesare.
Aici se păstrează principalul principiu bash - spațiul, este un simbol special, delimitator, de aceea
dacă nu utilizăm ghilimele, atunci ‘ string ’ se va considera ca o comandă separată , din același
motiv, nu punem spații înainte și după semnul egal într-o expresie aritmetică.

Bash nu face diferența tipurilor de variabile în același mod, ca în limbajele de nivel înalt, cum ar
fi C ++. Puteți atribui atât un număr, cât și un șir unei variabile. În mod egal, toate acestea vor fi
considerate ca șir. Shell-ul acceptă doar concatenarea șirurilor, pentru aceasta indicați numele
variabilelor la rând.
Comanda IF:

if-then
If-else
If-elif
Test
test – un utilitar pentru verificarea tipului de fișier și compararea valorilor. Returnează codul de
returnare 0 (adevărat) sau 1 (fals) în funcție de evaluarea expr. Expresiile pot fi cât unare, atât și binare.
Expresiile unare sunt adesea folosite pentru a verifica starea unui fișier. De asemenea este permisă și
compararea numerelor și șirurilor.

În Bash, comanda test ia una din următoarele forme de sintaxă :

test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]
for
Buclele (de ex., for sau while) permit executarea unei instrucţiuni sau a unei secvenţe de instrucţiuni în
mod repetat.

1.

#!/bin/bash ./script
for var in first second third fourth fifth The first item
do The second item
echo The $var item The third item
done The fourth item
The fifth item
===

2.

for i in {0..3}
do
echo "Number: $i"
done

Number: 0
Number: 1
Number: 2
Number: 3
3.
for i in {0..20..5}
do
echo "Number: $i"
done
====
Number: 0
Number: 5
Number: 10
Number: 15
Number: 20

4.
for ((i = 0 ; i <= 1000 ; i++)); do
echo "Counter: $i"
done

====
Counter: 0
Counter: 1
Counter: 2
...
Counter: 998
Counter: 999
Counter: 1000

while

while – într-o astfel de buclă, puteți seta o comandă pentru a verifica o anumită condiție și a executa
corpul buclei până când condiția verificată returnează zero (true) sau un semnal de finalizare cu succes a
unei anumite operații. Când condiția buclei returnează o valoare diferită de zero, ceea ce înseamnă o
eroare (false), iar bucla se va opri.

#!/bin/bash ./script 3
var1=$1 3
while [ $var1 -gt 0 ] 2
do 1
echo $var1
var1=$[ $var1 - 1 ]
done

while- citim fișierul rând cu rând în scriptul Bash


$ cat company.txt
Samsung
Nokia
LG
iphone

1. $ while read line


do
echo $line
done < company.txt

========
Samsung
Nokia
LG
iphone

2. cat > script_while1.sh


#!/bin/bash
filename='company.txt'
n=1
while read line; do
# reading each line
echo "Line No. $n : $line"
n=$((n+1))
done < $filename

$bash script_while1.sh
Line No. 1 : Samsung
Line No. 2 : Nokia
Line No. 3 : LG
Line No. 4 : iphone

3.
4.

let
let – efectuează operații aritmetice asupra variabilelor. În majoritatea cazurilor, poate fi considerată o
versiune simplificată a comenzii expr.

#!/bin/bash ./script
let a=3+12 5
expr $a / 3
expr
expr – procesor de expresie generic: evaluează expresia dată (argumentele trebuie separate prin spații).
Expresiile pot fi aritmetice, booleene sau șiruri.

#!/bin/bash ./script
expr 3 + 12 15
expr 12 / 3 4

shift

case
case – construcția case este echivalentă cu constructia switch din limbajul de programare C/C++. Ea
permite executarea unei anumitei bucăți de cod, în funcție de rezultatele verificării condițiilor. Este un
fel de formă scurtă de scriere a unui număr mare de declarații if / then / else și poate fi un instrument
bun pentru crearea tuturor tipurilor de meniuri.

#!/bin/bash ./script
var=b second
case $var in
"a") echo "first";;
"b") echo "second";;
"c") echo "third";;
*) echo "Default";;
esac

Un exemplu cu case:

read

read – citește o linie de date (text, introducere - utilizator) din intrarea standard într-una sau mai multe
variabile.

#!/bin/bash Bash script.sh


read var1 var2 ab cd
echo "var1 = $var1" var1=ab
echo "var2 = $var2" var2=cd

awk
Schema de apelare awk arată astfel:
$ awk options program file

Awk percepe drept date primite ca un set de înregistrări. Înregistrările sunt în sine nișt seturi de
câmpuri. Mai simplu, dacă nu considerăm posibilitațile de personalizare awk și vorbind despre
un text destul de obișnuit, liniile care sunt separate de caracterele de alimentare a liniei, unde
înregistrarea - o linie. Câmpul - un cuvânt într-o linie.

Awk tratează datele primite ca pe un set de înregistrări. Înregistrările sunt colecții de câmpuri.
Dacă nu luam în considerare posibilitatea de setare a comenzii awk și consideram un text
obișnuit, ale cărui linii sunt separate de caractere trecere în rind nou, o înregistrare este o linie.
Un câmp este un cuvânt într-o linie.

Cu awk, puteți procesa fișiere text. AWK atribuie variabile pentru fiecare câmp de date găsit:

 $0 for the whole line.


 $1 for the first field.
 $2 for the second field.
 $n for the nth field.
 $NF for the nth field.

Caracterul spațiului alb cum ar fi space sau tab, este separatorul implicit între câmpurile din awk.

Mai jos, putem observa cele mai frecvent utilizate chei de linie de comandă awk:

-F fs - permite specificarea unui caracter - separator pentru câmpurile dintr-o înregistrare.


-f file - specifică numele fișierului din care trebuie citit scriptul awk.
-v var=value - permite să declarați o variabilă și să setați valoarea implicită pe care o va folosi awk.
-mf N - setează numărul maxim de câmpuri pentru procesare într-un fișier de date.
-mr N - setează dimensiunea maximă a înregistrării în fișierul de date.
-W keyword - permite setarea modului de compatibilitate sau nivelul de avertizare pentru awk.

Un exemplu cu awk și concatenare a fișierelor:

S-ar putea să vă placă și