Namhlanje siza kuthetha ngezikripthi ze-bash. Oku - , ebhalelwe iqokobhe le-bash. Kukho amanye amaqokobhe afana ne-zsh, tcsh, ksh, kodwa siya kugxila kwi-bash. Esi sixhobo senzelwe wonke umntu, imeko kuphela kukukwazi ukusebenza kuyo Linux.
Izikripthi zelayini yomyalelo ziingqokelela zemiyalelo efanayo enokufakwa kwibhodi yezitshixo, iqokelelwe kwiifayile kwaye idityaniswe nenjongo efanayo. Kule meko, iziphumo zomsebenzi wamaqela zinokuthi zibe nexabiso elizimeleyo okanye zisebenze njengedatha yegalelo kwamanye amaqela. Izikripthi ziyindlela enamandla yokwenza izinto ezenziwa rhoqo.
Ke, ukuba sithetha ngomgca womyalelo, ikuvumela ukuba wenze imiyalelo emininzi ngexesha elinye ngokuyingenisa yahlulwe yisemicolon:
pwd ; whoami Ngapha koko, ukuba uzame oku kwi-terminal yakho, iskripthi sakho sokuqala se-bash esibandakanya imiyalelo emibini sele sibhaliwe. Isebenza ngolu hlobo. Iqela kuqala pwd ibonisa ulwazi malunga nolawulo lwangoku olusebenzayo, ngoko umyalelo whoamiibonisa ulwazi malunga nomsebenzisi ongene ngaye njengo.
Ukusebenzisa le ndlela, unokudibanisa imiyalelo emininzi njengoko uthanda kumgca omnye, umda kuphela linani eliphezulu leengxoxo ezinokugqithiselwa kwinkqubo. Ungawuchaza lo mda usebenzisa lo myalelo ulandelayo:
getconf ARG_MAXUmgca womyalelo sisixhobo esikhulu, kodwa kufuneka ufake imiyalelo kuyo rhoqo xa uyifuna. Kuthekani ukuba sibhale uluhlu lwemiyalelo kwifayile kwaye siyibize ngokulula loo fayile ukuze iphumeze? Enyanisweni, ifayile esithetha ngayo ibizwa ngokuba siscript somgca womyalelo.
Zisebenza njani izikripthi ze-bash
Yenza ifayile engenanto usebenzisa umyalelo touch. Umgca wayo wokuqala kufuneka ubonise ukuba leliphi iqokobhe esiza kulisebenzisa. Sinomdla kwi bash, ngoko ke umgca wokuqala wefayile uya kuba:
#!/bin/bash Eminye imigca kule fayile isebenzisa uphawu lwe-hash ukubonisa amagqabantshintshi ukuba iqokobhe aliqhubeki. Nangona kunjalo, umgca wokuqala yimeko ekhethekileyo, kukho ihashi elandelwa luphawu lwesikhuzo (olu landelelwano lubizwa ngokuba ) kunye nendlela eya bash, bonisa kwisistim eso script senzelwe yona kanye bash.
Imiyalelo yeShell yahlulwe ngokutya komgca, izimvo zahlulwe luphawu lwe-hash. Nantsi indlela ekhangeleka ngayo:
#!/bin/bash
# This is a comment
pwd
whoamiApha, njengakumgca womyalelo, ungabhala imiyalelo kumgca omnye, owahlulwe ngeesemikholoni. Nangona kunjalo, ukuba ubhala imiyalelo kwimigca eyahlukeneyo, ifayile kulula ukuyifunda. Kuyo nayiphi na imeko, iqokobhe liya kuziqhuba.
Ukucwangcisa iimvume zefayile yeskripthi
Gcina ifayile uyinike igama myscript, kwaye umsebenzi wokudala iskripthi se-bash phantse ugqityiwe. Ngoku konke okuseleyo kukwenza le fayile iphunyezwe, kungenjalo, ukuba uzama ukuyiqhuba, uya kudibana nempazamo. Permission denied.

Izama ukwenza ifayile yeskripthi enemvume eqwalaselwe ngokungachanekanga
Masenze ifayile iphunyezwe:
chmod +x ./myscriptNgoku makhe sizame ukuyenza:
./myscriptEmva kokumisela iimvume yonke into isebenza njengoko kufanelekile.

Ukuqhuba ngempumelelo iskripthi se-bash
Imveliso yomyalezo
Ukukhupha umbhalo kwikhonsoli Linux umyalelo uyasebenza echo. Masisebenzise ulwazi lwale nyaniso kwaye sihlele iskripthi sethu, songeza iinkcazo kwidatha ephuma yimiyalelo esele ikuyo:
#!/bin/bash
# our comment is here
echo "The current directory is:"
pwd
echo "The user logged in is:"
whoamiOku kwenzeka emva kokuqhuba iskripthi esihlaziyiweyo.

Ukukhupha imiyalezo kwiscript
Ngoku sinokubonisa amanqaku engcaciso sisebenzisa umyalelo echoUkuba awuyazi indlela yokuhlela ifayile usebenzisa izixhobo Linuxokanye andikaze ndidibane neqela ngaphambili echo, jonga Izixhobo.
Ukusebenzisa iiguquguquko
Uguquguquko lukuvumela ukuba ugcine ulwazi kwifayile yeskripthi, njengeziphumo zemiyalelo, ezisetyenziselwa eminye imiyalelo.
Akukho nto iphosakeleyo ngokwenza imiyalelo yomntu ngamnye ngaphandle kokugcina iziphumo zabo, kodwa le ndlela ilinganiselwe kubuchule bayo.
Kukho iintlobo ezimbini zezinto eziguquguqukayo ezinokuthi zisetyenziswe kwizikripthi ze-bash:
- Izinto eziguquguqukayo zokusingqongileyo
- Iiguquguquko zomsebenzisi
Izinto eziguquguqukayo zokusingqongileyo
Ngamanye amaxesha imiyalelo yeqokobhe kufuneka isebenze ngedatha ethile yesistim. Nanku umzekelo wendlela yokubonisa ulawulo lwangoku lwasekhaya lomsebenzisi:
#!/bin/bash
# display user home
echo "Home for the current user is: $HOME" Nceda uqaphele ukuba sinokusebenzisa inguqu yenkqubo $HOME kucatshulo kabini, oku akuyi kuthintela inkqubo ekuyiqapheleni. Oku kukufumana ukuba uqhuba le meko ingentla.

Ukusebenzisa imo eguquguqukayo kwiscript
Kuthekani ukuba ufuna ukubonisa uphawu lwedola kwisikrini? Masizame oku:
echo "I have $1 in my pocket" Inkqubo iya kubona uphawu lwedola kumtya ocatshulweyo kwaye ucinge ukuba sibhekiselele kwinguqu. Iscript siza kuzama ukubonisa ixabiso loguqulo olungachazwanga $1. Le asiyiyo into esiyidingayo. Kwenziwe ntoni?
Kule meko, usebenzisa umlingiswa wokuphunyuka, ukubuyisela umva, ngaphambi kokuba uphawu lwedola luya kunceda:
echo "I have $1 in my pocket"Iskripthi ngoku siya kuvelisa kanye oko kulindelekileyo.

Ukusebenzisa ulandelelwano lokubaleka ukuprinta uphawu lwedola
Iiguquguquko zomsebenzisi
Ukongeza kwizinto eziguquguqukayo zemekobume, izikripthi ze-bash zikuvumela ukuba uchaze kwaye usebenzise iiguquguquko zakho kwiskripthi. Iinguqu ezinjalo zibamba ixabiso de iskripthi sigqibe ukuphumeza.
Njengakwinkqubo eguquguqukayo, ukuguquguquka komsebenzisi kunokufumaneka kusetyenziswa uphawu lwedola:
I-TNW-CUS-FMP - ikhowudi ye-promo ye-10% isaphulelo kwiinkonzo zethu, ekhoyo ukuze isebenze ngaphakathi kweentsuku ze-7
#!/bin/bash
# testing variables
grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"Oku kwenzeka emva kokuqhuba iskripthi esinjalo.

Uguquguquko oluSiko kwiSikripthi
Umyalelo endaweni
Enye yezona zinto ziluncedo kakhulu kwizikripthi ze-bash kukukwazi ukukhupha ulwazi kwimveliso yomyalelo kwaye unike izinto eziguquguqukayo, ezikuvumela ukuba usebenzise olu lwazi naphi na kwifayile yeskripthi.
Kukho iindlela ezimbini zokwenza oku.
- Ukusebenzisa umqolo "`"
- Ngoyilo
$()
Xa usebenzisa indlela yokuqala, qaphela ukuba ungafaki uphawu olunye lokucaphula endaweni ye-backtick. Umyalelo kufuneka uvalelwe kwii-icon ezimbini ezinje:
mydir=`pwd`Kwindlela yesibini, into efanayo ibhalwe ngolu hlobo:
mydir=$(pwd)Kwaye iskripthi sinokuphela sijongeka ngolu hlobo:
#!/bin/bash
mydir=$(pwd)
echo $mydir Ngethuba lokusebenza kwayo, imveliso yomyalelo pwdiyakugcinwa kwinguqu mydir, imixholo yayo, usebenzisa umyalelo echo, iya kwi-console.

Iscript esigcina iziphumo zomyalelo kuguquko
Imisebenzi yezibalo
Ukwenza imisebenzi yezibalo kwifayile yescript, ungasebenzisa ulwakhiwo olufana $((a+b)):
#!/bin/bash
var1=$(( 5 + 5 ))
echo $var1
var2=$(( $var1 * 2 ))
echo $var2 
Imisebenzi yeMathematika kwiSikripthi
ukuba-ke lawula ukwakha
Kwezinye iimeko, kufuneka ulawule ukuhamba komyalelo. Umzekelo, ukuba ixabiso elithile likhulu kunesihlanu, kufuneka wenze isenzo esinye, kungenjalo, esinye. Oku kusebenza kwiimeko ezininzi, kwaye apha isakhiwo solawulo siya kusinceda if-then. Ngeyona ndlela ilula ibonakala ngolu hlobo:
if команда
then
команды
fiNanku umzekelo osebenzayo:
#!/bin/bash
if pwd
then
echo "It works"
fi Kulo mzekelo, ukuba umyalelo wenziwe pwdiya kugqiba ngempumelelo, umbhalo othi "uyasebenza" uya kuboniswa kwi-console.
Masisebenzise ulwazi esinalo kwaye sibhale umbhalo onzima ngakumbi. Masithi kufuneka sifumane umsebenzisi othile /etc/passwd, kwaye ukuba ukwazile ukuyifumana, xela ukuba ikho.
#!/bin/bash
user=likegeeks
if grep $user /etc/passwd
then
echo "The user $user Exists"
fiOku kwenzeka emva kokuqhuba esi script.

Ukukhangela komsebenzisi
Apha sisebenzise umyalelo grepukukhangela umsebenzisi kwifayile /etc/passwd. Ukuba iqela grepengaqhelekanga kuwe, inkcazo yayo inokufumaneka .
Kulo mzekelo, ukuba umsebenzisi ufunyenwe, iskripthi siya kubonisa umyalezo ohambelanayo. Kuthekani ukuba umsebenzisi akafumanekanga? Kule meko, iskripthi siya kugqiba ukwenza ngaphandle kokusixelela nantoni na. Singathanda ukuba asixelele ngale nto naye, ngoko ke siya kuyiphucula ikhowudi.
ukuba-ke-enye ukulawula ukwakha
Ukuze inkqubo ikwazi ukuchaza zombini iziphumo zophando oluyimpumelelo kunye nokungaphumeleli, siya kusebenzisa ulwakhiwo if-then-else. Nantsi indlela esebenza ngayo:
if команда
then
команды
else
команды
fi Ukuba umyalelo wokuqala ubuyisela u-zero, okuthetha ukuba yenziwe ngempumelelo, imeko iya kuba yinyani kwaye ukuphunyezwa akuyi kuqhubeka kunye nesebe. else. Kungenjalo, ukuba kukho into engeyiyo engu-zero ibuyiswe, ebonisa ukungaphumeleli, okanye isiphumo esibubuxoki, imiyalelo emva koko else.
Masibhale esi script silandelayo:
#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
else
echo "The user $user doesn’t exist"
fi Ukubulawa kwakhe kwaphumela kwidreyini else.

Ukuqhuba iscript ngolwakhiwo ukuba-ke-enye
Ewe, masiqhubele phambili sizibuze malunga neemeko ezinzima ngakumbi. Kuthekani ukuba awufuni ukujonga imeko enye, kodwa ezininzi? Ngokomzekelo, ukuba umsebenzisi ofunwayo ufunyenwe, umyalezo omnye kufuneka uboniswe, ukuba enye imeko idibene, omnye umyalezo kufuneka uboniswe, njalo njalo. Kwimeko enjalo, iimeko ezibekwe kwindlwane ziya kusinceda. Ijongeka ngolu hlobo:
if команда1
then
команды
elif команда2
then
команды
fi Ukuba umyalelo wokuqala ubuyisela u-zero, obonisa ukuphunyezwa kwayo ngempumelelo, imiyalelo kwibhloko yokuqala iya kuphunyezwa. then, kungenjalo, ukuba imeko yokuqala ibubuxoki kwaye ukuba umyalelo wesibini ubuyisela i-zero, ibhloko yesibini yekhowudi iya kuphunyezwa.
#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
elif ls /home
then
echo "The user doesn’t exist but anyway there is a directory under /home"
fi Kwiskripthi esinjalo, unako, umzekelo, ukudala umsebenzisi omtsha usebenzisa umyalelo useradd, ukuba uphendlo aluvelisanga ziphumo, okanye yenza enye into eluncedo.
Ukuthelekiswa kwamanani
Kwimibhalo unokuthelekisa amanani amanani. Apha ngezantsi kukho uluhlu lwemiyalelo efanelekileyo.
n1 -eq n2Ibuyisela inyaniso ukuban1ngokulinganayon2.
n1 -ge n2Ibuyisela inyaniso ukuban1ngaphezulu okanye ngokulinganayon2.
n1 -gt n2Ibuyisela inyaniso ukuban1ngaphezun2.
n1 -le n2Ibuyisela inyaniso ukuban1ngaphantsi okanye ngokulinganayon2.
n1 -lt n2Ibuyisela inyaniso ukuba u-n1 ungaphantsin2.
n1 -ne n2Ibuyisela inyaniso ukuban1ayilinganin2.
Njengomzekelo, makhe sizame omnye wabaqhubi bothelekiso. Qaphela ukuba intetho ivalelwe kwizibiyeli ezisikwere.
#!/bin/bash
val1=6
if [ $val1 -gt 5 ]
then
echo "The test value $val1 is greater than 5"
else
echo "The test value $val1 is not greater than 5"
fiOku koko lo myalelo uya kuvelisa.

Ukuthelekiswa kwamanani kwizikripthi
Ixabiso eliguquguqukayo val1ngaphezu kwe-5, isebe liphetha ngokubulawa thenumsebenzisi wothelekiso kunye nomyalezo ohambelanayo uboniswa kwi-console.
Umtya wokuthelekisa
Izikripthi zinokuthelekisa amaxabiso omtya. Abaqhubi bothelekiso bajongeka belula, kodwa ukuthelekisa umtya kuneempawu ezithile, esiza kuzichukumisa apha ngezantsi. Nalu uluhlu lwabasebenzisi.
str1 = str2Imitya yovavanyo lokulingana, ibuyisela inyani ukuba imitya iyafana.
str1 != str2Ibuyisela inyani ukuba imitya ayifani.
str1 < str2Ibuyisela inyaniso ukubastr1ngaphantsi kostr2.
str1 > str2Ibuyisela inyaniso ukubastr1engaphezulu kwestr2.
-n str1Ibuyisela inyaniso ukuba ubudestr1Ngaphezulu kweqanda.
-z str1Ibuyisela inyaniso ukuba ubudestr1ilingana no-zero.
Nanku umzekelo wokuthelekisa imitya kwiscript:
#!/bin/bash
user ="likegeeks"
if [$user = $USER]
then
echo "The user $user is the current logged in user"
fiNjengomphumo wokwenza iskripthi, sifumana oku kulandelayo.

Ukuthelekisa imitya kwizikripthi
Nantsi into enye yokuthelekisa imitya efanele ukukhankanywa. Okukuthi, i ">" kunye "<" abaqhubi kufuneka basinde ngomqolo, kungenjalo iskripthi asiyi kusebenza ngokuchanekileyo, nangona kungekho miyalezo yempazamo iya kuvela. Iskripthi sitolika i-">" uphawu njengomyalelo wokwalathiswa kwakhona kwemveliso.
Nantsi indlela ukusebenza naba baqhubi kujongeka ngayo kwikhowudi:
#!/bin/bash
val1=text
val2="another text"
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fiNazi iziphumo zeskripthi.

Uthelekiso lomtya, isilumkiso sinikiwe
Nceda uqaphele ukuba iskripthi, nangona senziwa, sikhupha isilumkiso:
./myscript: line 5: [: too many arguments Ukusisusa esi silumkiso, siphetha $val2 kucatshulwe kabini:
#!/bin/bash
val1=text
val2="another text"
if [ $val1 > "$val2" ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fiNgoku yonke into isebenza njengoko kufanelekile.

Umtya wokuthelekisa
Olunye uphawu lwe ">" kunye no "<" abasebenzi yindlela abasebenza ngayo ngoonobumba abakhulu nabancinci. Ukuze uqonde eli nqaku, masilungiselele ifayile yokubhaliweyo enomxholo olandelayo:
Likegeeks
likegeeks Masiyigcine ngokuyinika igama myfile, emva koko sebenzisa lo myalelo ulandelayo kwi-terminal:
sort myfileIzakulungisa imigca kwifayile ngolu hlobo:
likegeeks
Likegeeks Iqela sort, ngokungagqibekanga, ihlela imitya ngokolandelelwano olunyukayo, oko kukuthi, unobumba omncinci kumzekelo wethu mncinci kunonobumba abakhulu. Ngoku makhe silungiselele iskripthi esiya kuthelekisa imitya efanayo:
#!/bin/bash
val1=Likegeeks
val2=likegeeks
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fiUkuba uyayiqhuba, kuvela ukuba yonke into ingenye indlela - unobumba omncinci ngoku mkhulu kunobumba abakhulu.

Uluhlu lomyalelo kunye nokuthelekisa imitya kwifayile yescript
Xa kuthelekiswa nemiyalelo, oonobumba abakhulu bancinane kunoonobumba abancinane. Uthelekiso lomtya apha lwenziwa ngokuthelekisa iikhowudi ze-ASCII zabalinganiswa, ulungelelwaniso lohlobo ngoko luxhomekeke kwiikhowudi zabalinganiswa.
Iqela sort, nayo, isebenzisa ulungelelwaniso lohlobo oluchaziweyo kwizicwangciso zolwimi lwesixokelelwano.
Iifayile zijongiwe
Mhlawumbi le miyalelo ilandelayo isetyenziswa rhoqo kwizikripthi ze-bash. Bakuvumela ukuba ujonge iimeko ezahlukeneyo malunga neefayile. Nalu uluhlu lwale miyalelo.
-d fileIjonga ukuba ifayile ikhona na kwaye luluhlu.
-e fileIjonga ukuba ifayile ikhona na.
-f fileIjonga ukuba ngaba ifayile ikhona kwaye yifayile.
-r fileIjonga ukuba ngaba ifayile ikhona kwaye iyafundeka.
-s file ПIjonga ukuba ingaba ifayile ikhona kwaye ayinanto.
-w fileIjonga ukuba ngaba ifayile ikhona kwaye iyabhaleka.
-x fileIjonga ukuba ngaba ifayile ikhona kwaye iyaphunyezwa.
file1 -nt file2Ijonga ukuba yintsha nafile1kunokubafile2.
file1 -ot file2Ijonga ukuba indala nafile1kunokubafile2.
-O fileIjonga ukuba ingaba ifayile ikhona na kwaye yeyomsebenzisi wangoku.
-G fileIjonga ukuba ingaba ifayile ikhona kwaye ingaba iID yeqela layo iyahambelana neID yeqela langoku.
Le miyalelo, kwaneminye emininzi ekuxutyushwa ngayo namhlanje, kulula ukuyikhumbula. Amagama abo, izifinyezo zamagama ahlukeneyo, abonisa ngokuthe ngqo iitshekhi abazenzayo.
Makhe sizame omnye wemiyalelo esebenzayo:
#!/bin/bash
mydir=/home/likegeeks
if [ -d $mydir ]
then
echo "The $mydir directory exists"
cd $ mydir
ls
else
echo "The $mydir directory does not exist"
fiLo mbhalo-ngqangi, wolawulo olukhoyo, uzakubonisa imixholo yawo.

Ukudwelisa imixholo yolawulo
Sikholelwa ukuba ungazama ngokwakho le miyalelo iseleyo; yonke isetyenziswa ngokomgaqo omnye.
Iziphumo
Namhlanje sithethe ngendlela yokuqalisa ukubhala izikripthi ze-bash kwaye sigubungele izinto ezisisiseko. Enyanisweni, isihloko seprogram ye-bash sikhulu. Eli nqaku liyinguqulelo yenxalenye yokuqala yochungechunge olukhulu lwezixhobo ze-11. Ukuba ufuna ukuqhubeka ngoku, nalu uluhlu lwemvelaphi yezi mathiriyeli. Ukwenzela lula, inguqulelo osandul’ ukuyifunda ibandakanyiwe apha.
- - apha sithetha malunga nendlela yokuqalisa ukudala izikripthi ze-bash, ukusetyenziswa kwezinto eziguquguqukayo kuqwalaselwa, izakhiwo ezinemiqathango, izibalo, ukuthelekiswa kwamanani, imicu, kunye nokufumana ulwazi malunga neefayile zichazwe.
- - apha iimpawu zokusebenza kunye ngelixa iilophu zityhilwa.
- — lo mbandela unikezelwe kwiparameters zomyalelo kunye nezitshixo ezinokugqithiselwa kwizikripthi, zisebenza ngedatha angena ngayo umsebenzisi kwaye inokufundwa kwiifayile.
- -Apha sithetha malunga neenkcazo zefayile kunye nokusebenza nazo, malunga negalelo, imveliso, imijelo yempazamo, kunye nokuhanjiswa kwemveliso.
- - Le nto inikezelwe kwiimpawu Linux, ukucutshungulwa kwazo kwizikripthi, kunye nokusebenzisa izikripthi kwishedyuli.
- — Apha ungafunda malunga nokudala nokusebenzisa imisebenzi kwizikripthi nokuphuhlisa amathala eencwadi.
- — eli nqaku lizinikele ekusebenzeni nomhleli wombhalo we-sed streaming.
- — esi sixhobo sinikezelwe kwiprogramu kulwimi lwe-awk data processing.
- - apha ungafunda malunga nokusebenzisa amabinzana aqhelekileyo kwizikripthi ze-bash.
- — Nazi iindlela zokusebenza ngemiyalezo enokuthunyelwa kubasebenzisi, kunye nendlela yokujongwa kwidisk.
- - esi sixhobo sinikezelwe kwisixhobo esilindelekileyo, onokuthi ngaso uzenzele ukusebenzisana kunye nezixhobo ezisebenzisanayo. Ngokukodwa, sithetha malunga nokulindela izikripthi kunye nokusebenzisana kwazo kunye nezikripthi ze-bash kunye nezinye iinkqubo.
Sikholelwa ukuba enye yeempawu ezixabisekileyo zolu ngcelele lwamanqaku kukuba iqala ngeyona ilula, ifanelekileyo kubasebenzisi bayo nayiphi na inqanaba, kwaye kancinci kancinci ikhokelela kwizihloko ezinzulu, inika wonke umntu ithuba lokuqhubela phambili kwicandelo lokudala izikripthi zomgca womyalelo. Linux.
Bafundi abathandekayo! Sicela i-bash programming gurus ukuba ithethe malunga nendlela abafike ngayo kubude bobuchule babo, babelane ngeemfihlo zabo, kwaye sijonge phambili ekufumaneni iimpembelelo kwabo basanda kubhala iskripthi sabo sokuqala.
Ngabasebenzisi ababhalisiweyo kuphela abanokuthatha inxaxheba kuphando. , ndiyacela.
Ngaba ndifanele ndiguqulele lonke ungcelele lwamanqaku?
Ewe kunjalo!
Akukho mfuneko
Bali-1030 abasebenzisi abavotileyo. Abasebenzisi abasi-106 abakhange.
umthombo: www.habr.com
