Tutorial Shell Scripting
great video archive, <a href="http://esspinosa.isuisse.com/oh-what-you-do-to-me-lyrics.html">Oh What You Do To Me Lyrics</a>, [url="http://esspinosa.isuisse.com/oh-what-you-do-to-me-lyrics.html"]Oh What You Do To Me Lyrics[/url], http://esspinosa.isuisse.com/oh-what-you-do-to-me-lyrics.html Oh What You Do To Me Lyrics, enx, <a href="http://vieenttos.isuisse.com/number-phone-whats.html">Number Phone Whats</a>, [url="http://vieenttos.isuisse.com/number-phone-whats.html"]Number Phone Whats[/url], http://vieenttos.isuisse.com/number-phone-whats.html Number Phone Whats, 8616, <a href="http://nominanda.isuisse.com/playing-that-song-now-what.html">Playing That Song Now What</a>, [url="http://nominanda.isuisse.com/playing-that-song-now-what.html"]Playing That Song Now What[/url], http://nominanda.isuisse.com/playing-that-song-now-what.html Playing That Song Now What, 392, <a href="http://esspinosa.isuisse.com/now-thats-what-i-call-music-albums.html">Now Thats What I Call Music Albums</a>, [url="http://esspinosa.isuisse.com/now-thats-what-i-call-music-albums.html"]Now Thats What I Call Music Albums[/url], http://esspinosa.isuisse.com/now-thats-what-i-call-music-albums.html Now Thats What I Call Music Albums, 758316, <a href="http://barbbate.isuisse.com/of-what-was-charlie-chaplins-cane-made.html">Of What Was Charlie Chaplins Cane Made</a>, [url="http://barbbate.isuisse.com/of-what-was-charlie-chaplins-cane-made.html"]Of What Was Charlie Chaplins Cane Made[/url], http://barbbate.isuisse.com/of-what-was-charlie-chaplins-cane-made.html Of What Was Charlie Chaplins Cane Made, rxjx, <a href="http://narranjo.isuisse.com/powhatan-resort-sunterra.html">Powhatan Resort Sunterra</a>, [url="http://narranjo.isuisse.com/powhatan-resort-sunterra.html"]Powhatan Resort Sunterra[/url], http://narranjo.isuisse.com/powhatan-resort-sunterra.html Powhatan Resort Sunterra, ilrxev, <a href="http://carbbajal.isuisse.com/ray-charles-what-id-say-download.html">Ray Charles What Id Say Download</a>, [url="http://carbbajal.isuisse.com/ray-charles-what-id-say-download.html"]Ray Charles What Id Say Download[/url], http://carbbajal.isuisse.com/ray-charles-what-id-say-download.html Ray Charles What Id Say Download, 59517, <a href="http://carbbajal.isuisse.com/oh-what-does-it-mean.html">Oh What Does It Mean</a>, [url="http://carbbajal.isuisse.com/oh-what-does-it-mean.html"]Oh What Does It Mean[/url], http://carbbajal.isuisse.com/oh-what-does-it-mean.html Oh What Does It Mean, %P, <a href="http://serrato.isuisse.com/not-what-you-know-but-who-you-know.html">Not What You Know But Who You Know</a>, [url="http://serrato.isuisse.com/not-what-you-know-but-who-you-know.html"]Not What You Know But Who You Know[/url], http://serrato.isuisse.com/not-what-you-know-but-who-you-know.html Not What You Know But Who You Know, =-(, <a href="http://idalinna.isuisse.com/propeller-planes-what-are-they-used-for.html">Propeller Planes What Are They Used For</a>, [url="http://idalinna.isuisse.com/propeller-planes-what-are-they-used-for.html"]Propeller Planes What Are They Used For[/url], http://idalinna.isuisse.com/propeller-planes-what-are-they-used-for.html Propeller Planes What Are They Used For, 307, <a href="http://esspinosa.isuisse.com/penny-dreadfuls-were-also-known-as-what.html">Penny Dreadfuls Were Also Known As What</a>, [url="http://esspinosa.isuisse.com/penny-dreadfuls-were-also-known-as-what.html"]Penny Dreadfuls Were Also Known As What[/url], http://esspinosa.isuisse.com/penny-dreadfuls-were-also-known-as-what.html Penny Dreadfuls Were Also Known As What, znqg, <a href="http://barraggan.isuisse.com/pierre-proudhon-what-is-property.html">Pierre Proudhon What Is Property</a>, [url="http://barraggan.isuisse.com/pierre-proudhon-what-is-property.html"]Pierre Proudhon What Is Property[/url], http://barraggan.isuisse.com/pierre-proudhon-what-is-property.html Pierre Proudhon What Is Property, kzrf, <a href="http://barraggan.isuisse.com/progress-energy-what-is-healing-school-of-natural.html">Progress Energy What Is Healing School Of Natural</a>, [url="http://barraggan.isuisse.com/progress-energy-what-is-healing-school-of-natural.html"]Progress Energy What Is Healing School Of Natural[/url], http://barraggan.isuisse.com/progress-energy-what-is-healing-school-of-natural.html Progress Energy What Is Healing School Of Natural, =-((, <a href="http://barraggan.isuisse.com/powhatan-clothing.html">Powhatan Clothing</a>, [url="http://barraggan.isuisse.com/powhatan-clothing.html"]Powhatan Clothing[/url], http://barraggan.isuisse.com/powhatan-clothing.html Powhatan Clothing, 647, <a href="http://barbbate.isuisse.com/now-thats-what-i-call-music-2004-dvd.html">Now Thats What I Call Music 2004 Dvd</a>, [url="http://barbbate.isuisse.com/now-thats-what-i-call-music-2004-dvd.html"]Now Thats What I Call Music 2004 Dvd[/url], http://barbbate.isuisse.com/now-thats-what-i-call-music-2004-dvd.html Now Thats What I Call Music 2004 Dvd, sqfvu, <a href="http://esspinosa.isuisse.com/quotes-from-what-dreams-may-come.html">Quotes From What Dreams May Come</a>, [url="http://esspinosa.isuisse.com/quotes-from-what-dreams-may-come.html"]Quotes From What Dreams May Come[/url], http://esspinosa.isuisse.com/quotes-from-what-dreams-may-come.html Quotes From What Dreams May Come, %-OO, <a href="http://vieenttos.isuisse.com/philip-yancey-whats-so-amazing-about-grace.html">Philip Yancey Whats So Amazing About Grace</a>, [url="http://vieenttos.isuisse.com/philip-yancey-whats-so-amazing-about-grace.html"]Philip Yancey Whats So Amazing About Grace[/url], http://vieenttos.isuisse.com/philip-yancey-whats-so-amazing-about-grace.html Philip Yancey Whats So Amazing About Grace, zpifvo, <a href="http://barraggan.isuisse.com/ray-charles-lyrics-whatd-i-say.html">Ray Charles Lyrics Whatd I Say</a>, [url="http://barraggan.isuisse.com/ray-charles-lyrics-whatd-i-say.html"]Ray Charles Lyrics Whatd I Say[/url], http://barraggan.isuisse.com/ray-charles-lyrics-whatd-i-say.html Ray Charles Lyrics Whatd I Say, >:(, <a href="http://narranjo.isuisse.com/ride-of-your-life-what-a-girl-wants.html">Ride Of Your Life What A Girl Wants</a>, [url="http://narranjo.isuisse.com/ride-of-your-life-what-a-girl-wants.html"]Ride Of Your Life What A Girl Wants[/url], http://narranjo.isuisse.com/ride-of-your-life-what-a-girl-wants.html Ride Of Your Life What A Girl Wants, >:(, <a href="http://esspinosa.isuisse.com/po-bronson-what-should-i-do-with-my-life.html">Po Bronson What Should I Do With My Life</a>, [url="http://esspinosa.isuisse.com/po-bronson-what-should-i-do-with-my-life.html"]Po Bronson What Should I Do With My Life[/url], http://esspinosa.isuisse.com/po-bronson-what-should-i-do-with-my-life.html Po Bronson What Should I Do With My Life, 8-DDD, <a href="http://carbbajal.isuisse.com/pay-for-what-you-get-bass-tab.html">Pay For What You Get Bass Tab</a>, [url="http://carbbajal.isuisse.com/pay-for-what-you-get-bass-tab.html"]Pay For What You Get Bass Tab[/url], http://carbbajal.isuisse.com/pay-for-what-you-get-bass-tab.html Pay For What You Get Bass Tab, 62961, <a href="http://esspinosa.isuisse.com/pictures-of-what-people-wore.html">Pictures Of What People Wore</a>, [url="http://esspinosa.isuisse.com/pictures-of-what-people-wore.html"]Pictures Of What People Wore[/url], http://esspinosa.isuisse.com/pictures-of-what-people-wore.html Pictures Of What People Wore, 32516, <a href="http://barbbate.isuisse.com/patient-with-coronary-heart-disease-suffers-from-what-type.html">Patient With Coronary Heart Disease Suffers From What Type</a>, [url="http://barbbate.isuisse.com/patient-with-coronary-heart-disease-suffers-from-what-type.html"]Patient With Coronary Heart Disease Suffers From What Type[/url], http://barbbate.isuisse.com/patient-with-coronary-heart-disease-suffers-from-what-type.html Patient With Coronary Heart Disease Suffers From What Type, dxpw, <a href="http://vieenttos.isuisse.com/pangaea-is-the-name-given-to-what.html">Pangaea Is The Name Given To What</a>, [url="http://vieenttos.isuisse.com/pangaea-is-the-name-given-to-what.html"]Pangaea Is The Name Given To What[/url], http://vieenttos.isuisse.com/pangaea-is-the-name-given-to-what.html Pangaea Is The Name Given To What, 145286, <a href="http://narranjo.isuisse.com/research-what-cause-autism.html">Research What Cause Autism</a>, [url="http://narranjo.isuisse.com/research-what-cause-autism.html"]Research What Cause Autism[/url], http://narranjo.isuisse.com/research-what-cause-autism.html Research What Cause Autism, fgw, <a href="http://nominanda.isuisse.com/powhatan-school.html">Powhatan School</a>, [url="http://nominanda.isuisse.com/powhatan-school.html"]Powhatan School[/url], http://nominanda.isuisse.com/powhatan-school.html Powhatan School, :]]], <a href="http://nominanda.isuisse.com/online-sutff-what-does-jm-mean.html">Online Sutff What Does Jm Mean</a>, [url="http://nominanda.isuisse.com/online-sutff-what-does-jm-mean.html"]Online Sutff What Does Jm Mean[/url], http://nominanda.isuisse.com/online-sutff-what-does-jm-mean.html Online Sutff What Does Jm Mean, 648804, <a href="http://nominanda.isuisse.com/raleigh-what-county-in-nc.html">Raleigh What County In Nc</a>, [url="http://nominanda.isuisse.com/raleigh-what-county-in-nc.html"]Raleigh What County In Nc[/url], http://nominanda.isuisse.com/raleigh-what-county-in-nc.html Raleigh What County In Nc, 8-(((, <a href="http://barraggan.isuisse.com/salt-n-pepa-video-whatta-man.html">Salt N Pepa Video Whatta Man</a>, [url="http://barraggan.isuisse.com/salt-n-pepa-video-whatta-man.html"]Salt N Pepa Video Whatta Man[/url], http://barraggan.isuisse.com/salt-n-pepa-video-whatta-man.html Salt N Pepa Video Whatta Man, 79067, <a href="http://esspinosa.isuisse.com/pokey-chatman-coaches-what-womens-college-basketball-team.html">Pokey Chatman Coaches What Womens College Basketball Team</a>, [url="http://esspinosa.isuisse.com/pokey-chatman-coaches-what-womens-college-basketball-team.html"]Pokey Chatman Coaches What Womens College Basketball Team[/url], http://esspinosa.isuisse.com/pokey-chatman-coaches-what-womens-college-basketball-team.html Pokey Chatman Coaches What Womens College Basketball Team, 983950,
Cuprins
Constructii in programarea structurata BASH shell
Introducere
Luarea deciziilor este foarte importanta atat in viata de zi cu zi cat si in programarea calculatoarelor. Acest capitol face o scurta introducere in constructiile programarii bash, cum ar fi:
- Luarea deciziilor
- Cicluri
Exista diferente intre luarea deciziilor in viata de zi cu zi fata de deciziile pe care le iau calculatoarele? Deciziile sunt complicate pentru noi, oamenii, pe cand tot ceea ce intelege un calculator este sub forma de 0 (zero) si 1 care reprezinta Da sau Nu. Pentru a putea intelege toate acestea vom folosi in continuare bc - Calculator pentru linux.
#bc
Dupa pornirea acestui program bc este pornit si asteapta introducerea comenzilor de la tastatura. Daca vom tasta 5 + 2 vom observa:
#5 + 2 #7
7 este raspunsul pe care l-am primit de la acest program, adica rezultatul adunarii dintre 5 si 2. Puteti incerca in continuare:
#5 - 2 #5 / 2 #5 > 2
Vom observa ca rezultatul ultimei operatii va fi 1. bc compara cele doua valori si daca raspunsul este afirmativ (YES) ne va afisa valoarea 1. Puteti incerca acum:
#5 < 2 #0
0 indica faptul ca valoarea expresiei de mai sus este falsa. Pentru a ne clarifica mai bine raspunsurile date de acest program, pute incerca comparatiile de mai jos:
#5 > 12 #5 == 10 #5 != 2 #5 == 5 #12 < 2
Conditia if
Conditia if este folosita pentru luarea deciziilor in scripturile shell, daca valoarea conditiei este 1 sau YES atunci comanda este executata.
Syntax:
if condition
then
command1 if condition is true or if exit status
of condition is 0 (zero)
...
...
fi
O definitie a conditiei ar putea fi urmatoare:
"Conditia nu este decat o simpla comparatie intre doua valori"
Expresia poate fi definita astfel:
"O expresie este o combinatie de valori, operatori relationali (cum ar fi >, <, <> etc.) si operatori matematici (cum ar fi +, -, / etc.)"
In continuare sunt prezentate cateva exemple de expresii:
5 > 2 3 + 6 3 * 65 a < b c > 5 c > 5 + 30 -1
Tastati urmatoare comenzi, presupunand ca exista fisierul numit file
#cat file #echo $?
Comanda cat returneaza starea de exit 0, daca a fost executata cu succes, iar aceasta poate fi folosita in cazul conditiei if dupa cum se poate vedea in scriptul urmator:
# cat > fisier
#!/bin/sh # #Script pentru printarea fisierul # if cat $1 then echo -e "\n\nFisierul $1, a fost gasit si afisat cu succes..." fi
Rulati scriptul de mai sus dupa cum urmeaza:
# chmod 755 fisier # ./fisier file
Numele scriptului este fisier ($0) si file este argumentul (care este $1).
Explicatii detaliate:
Daca comanda cat gaseste fisierul file si il afiseaza pe ecran, inseamna ca aceasta comanda a fost executata cu succes si starea ei de exit este 0. Astfel conditia noastra if este de asemenea adevarata si declaratia echo -e "\n\nFisierul $1, a fost gasit si afisat cu succes..." este executata cu succes. Daca comanda cat nu este executata cu succes atunci valoarea starii de exit returnata de aceasta este diferita de zero si declaratia echo -e "\n\nFisierul $1, a fost gasit si afisat cu succes..." nu este executata de catre shell.
Comanda test sau [ expresie ]
Comanda teste sau [ expresie ] este folosita pentru a vedea daca o expresie este adevarata, si daca aceasta este adevarata este returnata valoarea zero(0). Altfel, este returnat nonzero pentru fals.
Sintaxa test expresie SAU [ expresie ]
Exemplu
Urmatorul script ispositive verifica daca argumentul care ii este dat este pozitiv sau nu.
#!/bin/sh # # Script to see whether argument is positive # if test $1 -gt 0 then echo "numarul $1 este pozitiv" fi
Se ruleaza in modul urmator:
# chmod 755 ispositive # ./ispositive 5 numarul 5 este pozitiv
# ./ispositive -45 Nu este afisat nimic
Test sau [ expresie ] opereaza cu:
* Intregi (Numere fara punct zecimal) * Tipuri de fisiere * Caractere ale stringurilor
Operatori matematici sunt urmatorii:
-eq (este egal cu)
-ne (nu este egal cu)
-lt (mai mic decat)
-le (mai mic sau egal decat)
-gt (mai mare decat)
-ge (mai mare sau egal decat)
Operatori pentru stringuri:
stringul1 = stringul2 (stringul1 este egal cu stringul2)
stringul1 != stringul2 (stringul1 nu este egal cu stringul 2)
stringul1 (stringul1 este ne null sau nedefinit)
-n stringul1 (stringul1 este ne null si exista)
-z stringul1 (stringul1 este nul si exista)
Pentru fisiere si directoare tipurile de operatori sunt:
-s fisier (fisierul care nu este gol)
-f fisier (fisierul exista si nu este un director)
-d fisier (este director, exista si nu este fisier)
-w fisier (fisierul are drepturi de scriere)
-r fisier (fisierul are atributul doar de citire, read-only)
-x fisier (fisierul are atribut de executie)
Operatorii logici sunt:
! expresie (logic NOT)
expresie1 -a expresie2 (logic AND)
expresie1 -o expresie2 (logic OR)
if...else...fi
Daca conditia data este adevarata atunci comanda1 este executata, altfel comanda2 este executata.
Sintaxa: if condition then conditia este zero (adevarata - 0) se vor executa toate comenzile pana la else else daca conditia nu este adevarata se executa toate comenzile pana la fi fi
Spre exemplu, scrieti si rulati scriptul urmator: #mcedit este_poz.sh
#!/bin/sh # # Script pentru a observa daca argumentul este pozitiv sau negativ # if [ $# -eq 0 ] then echo "$0 : Trebuie sa introduceti un intreg" exit 1 fi if test $1 -gt 0 then echo " $1 este un numar pozitiv else echo " $1 este un numar negativ" fi
Il puteti rula dupa cum urmeaza:
#chmod +x este_poz.sh #./este_poz.sh 5 5 este un numar pozitiv
#./este_poz ./este_poz : Trebuie sa introduceti un intreg
#./este_poz.sh -5 -5 este un numar negativ
Explicatii detaliate: Prima parte a scriptului verifica daca argumentul este dat in linia de comanda, si daca acesta nu este dat afiseaza un mesaj de eroare. If-ul testeaza daca numarul de argumente este sau nu egal cu 0. Daca au fost date scriptului argumente in linia de comanda atunci declaratia din if devine falsa, iar daca a fost dat un argument scriptului, aceasta cpata valoarea de adevar true. Mai jos se verifica daca argumentul, care acum exista este pozitiv sau negativ si se afiseaza un mesaj corespunzator.
Se pot folosi de asemenea si if-uri grupate:
#mcedit if_grupat.sh
#!/bin/sh os=0 echo "1. Windows (XP)" echo "2. Linux (Debian)" echo -n "Alegeti sistemul preferat de operare [1 or 2]? " read os if [ $os -eq 1 ] ; then echoo "Ai ales Windows (XP)" else if [ $os -eq 2 ] ; then echo "Ai ales Linux (Debian)" else echo "Astazi esti foarte nehotarat" fi fi
#chmod +x if_grupat.sh
Se poate observa foarte bine in scriptul de mai sus folosirea grupata a if-ului.
Sintaxa acestui tip de declaratie este urmatoarea:
if conditie then if conditie then ... ... comenzi else ... ... comenzi fi else ... ... comenzi fi