Akonato.eu :: Zobrazi� t�mu – Coding in BASH #1

 
 FAQ  •  H�ada�
 •  Zoznam u��vate�ov  •
 U��vate�sk� skupiny
  •  Registr�cia
 •  Nastavenia  •  S�kromn� spr�vy 
•  Prihl�senie
Hodnosti  •  
IP Adresa  •  
RSS  •  
V�zenie  •  

© 2007 Akonato

Powered by phpBB
© 2001, 2002 phpBB Group

[ �as vygenerovania str�nky: 0.2 sek | 16 Dotazov ]

 Coding in BASH #1Zobrazi� nasleduj�cu t�mu
Zobrazi� predch�dzaj�cu t�mu
AutorSpr�va
Kain
Webmaster

Zalo�en�: 27 Dec 2007
Pr�spevky: 100

Reputation: 1.3
2006 PR Money

Zaslal:
Sun Dec 30, 2007 9:36 pm

Tak�e v�tam v�s pri seri�ly �l�nkov o programovan� v linux�ckom BASH-i.

V tomto seri�ly by som r�d nadviazal na p�r �l�nkov o BASHi ktor� sa u� na blackhole objavili .

Aby som bol konkr�tny ide o �ll�nky zameran� na shell, tu s� : �l�nok 1 �l�nok 2 .

Tak�e s t�chto �l�nkov ste sa ur�ite dozvedeli ako funguj� premen� v bashi tak�e to tu nebude p�sa� idem rovno

na �vod do programovania.

Riadiace �trukt�ry

Tak� logick� riadiacu �trukt�ru si m��me vybavi� nejak takto :

tak�to script by sme v bashi realizovali pomocou if, while, until, for a case.

Jedna z napou��vanej��ch riadiacich �trukt�r v bash scriptoch je pr�ve if.

Pou��va sa na vetvenie programu, kde na z�klade vyhodnotenia podmienky sa pokra�uje danou �astou k�du.

Pr�klad :

Tento pr�klad teda na z�klade vyhodnotenia pr�kazom test soubor /etc/hosts skop�ruje alebo pokial neexistuje soubor, vyp�e sa chybov� hl�senie. K otestovaniu existovania souboru je pou�it� pr�kaz test. Pr�kaz na z�klade prep�na�a -f ur��, �i je /etc/hosts soubor. Dal�ie mo�nosti prep�na�ov pr�kazu test zhrnuje nasleduj�ca tabulka.

Pokial nieje splnen� podmienka testovan� pr�kazom if, neprevedie sa vtedy blok pr�kazu uveden� za slovom then, ale za to sa preved� pr�kazy v bloku zah�jen� pr�kazom else (pokial se vyskytuje).

Existuje taktie� slovo elif. To je pou��van� pre testovanie podmienky namiesto pr�kazu else. Norm�lne sa toti� blok pr�kazu za��naj�ci else prevedie automaticky po nesplnen� podmienky. Ale pr�kaz elif namiesto pr�kazu else umo�n�, �e sa tento blok prevedie len pokial vyhovie podmienka za pr�kazom elif.

Struktura while je struktura cyklu. V podstate vykon�v� blok pr�kazov tak dlho, dokedy je spln� podmienka uvedena za slovom while. Pr�klad struktury while :

tento pr�klad je toti� dos� obtia�ny rpe syst�m preto�e v�dy overuje hodnotu true, jednoduch��

pr�klad vypad� takto :

Dvojbodka je toti� intern� pr�kaz interpretru bash. Tento pr�klad je v�ak nepraktick�, tak poj�me na dal�� u� viac u�ito�n�.

V n�sleduj�com pr�klade pou�ijeme premenn� x, ktor� bude pri ka�dom priechode cyklu zvy�ovat svoju hodnotu a to a� do tej doby k�m dosiahne hodnotu 5.

Ako vid�te, pou��v�me pr�kaz test (hranat� z�vorky), aby sme zistili, ci hodnota premennej x je men�ia alebo rovn� 5. Pokial je men�ia alebo rovn� 5, test je vyhodnoten� jako true a blok pr�kazu za slovom do sa m��e previest. Pokial je v�ak podmienka vyhodnoten� ako false, pokra�uje program v behu za slovom done.

Mo�nosti pr�kazu test :

D�fam, �e nebude ta�k� porozumiet i dal�iemu pr�kazu v scripte a to je expr. Tento pr�kaz v scripte pri��ta k premennej x hodnotu 1 a vr�t� to do x. Co znamen� $(…)? Tato kon�trukcia zariadi, �e hodnota v�sledku v�razu v z�vork�ch sa zap�e ako hodnota do v�razu, ktor� t�to konstrukciu obsahuje. Je teda mo�n� t�mto zp�sobom napr�klad zistit pod ak�m menom ste prihlasen� do syst�mu.

Ur�ite ste si v�imli �e je to dos� nepraktick�.

T�mto zp�sobom m��eme dosta� hodnotu vr�ten� pr�kazom whoami priamo do retazca. takto:

Zdroj : Socket

k�d:
ak /etc/hosts existuje tak :

  kop�ruj /etc/hosts do aktivneho adres�ra

  napi� na obrazovku „Hotovo!“

inak

  napi� na obrazovku „Soubor neexistuje!“

koniec
k�d:
#!/bin/bash

if test -f /etc/hosts

then  #Soubor existuje. Skop�ruj teda so�bor

  cp /etc/hosts .

  echo „Hotovo!“

else  #Soubor neexistuje. Vypi� teda chybu

  echo „Soubor neexistuje!“

  exit

fi
k�d:
Mo�nosti pr�kazu test

-d testuje, ci soubor je adres�r

-e testuje, ci soubor existuje

-f testuje, ci sa jedn� o regul�rny so�bor

-g testuje, ci m� soubor povolenie SIGD

-r testuje, ci ide soubor c�ta�

-s testuje, ci velkost souboru nieje 0

-u testuje, ci m� soubor povolenie SUID

-w testuje, ci  sa d� do souboru zapisovat

-x testuje, ci je soubor spustiteln�
k�d:
#!/bin/bash

while true; do

  echo „Stisni Ctrl-C pre exit.“

done
k�d:
#!/bin/bash

while :; do

  echo „Stisni Ctrl-C pre exit.“

done
k�d:
#!/bin/bash

x=0;    # inicializuje hodnotu x na 0

while [ „$x“ -le 5 ]; do

  echo „Aktu�lna hodnota x: $x“

  # zv��enie hodnoty x o 1

  x=$(expr $x + 1)

  sleep 1

done
k�d:
Pre c�sla:

x -eq y Testuje, ci x=y

x -ne y Testuje, ci x!=y (nerovn� se)

x -qt y Testjue, ci x>y

x -lt y Testuje, ci x<y

Pre retazce:

x = y Testuje, ci s� retazce zhodn�

x != y Testuje, ci s� retazce rozdielne

-n x Vr�ti true, pokial nieje retazec pr�zdny

-z x Vr�ti true, pokial je retazec pr�zdny
k�d:
#!/bin/bash

x=$(whoami)

echo „Ja som $x.“
k�d:
#!/bin/bash

echo „Ja som $(whoami).“
Zobrazi� pr�spevky z predch�dzaj�cich:    

Zobrazi� nasleduj�cu t�mu
Zobrazi� predch�dzaj�cu t�mu
Nem��ete prid�va� nov� t�my do tohto f�ra.
Nem��ete odpoveda� na t�my v tomto f�re.
Nem��ete upravova� svoje pr�spevky v tomto f�re.
Nem��ete maza� svoje pr�spevky v tomto f�re.
Nem��ete hlasova� v tomto f�re.
 Prejdi na: