Inniu beimid ag caint faoi scripteanna bash. seo - Scripteanna na n-orduithe, scríofa don bhlaosc bash. Tá sliogáin eile cosúil le zsh, tcsh, ksh, ach díreoimid ar bash. Tá an t-ábhar seo beartaithe do gach duine, is é an t-aon choinníoll ná an cumas oibriú isteach líne ordaithe Linux.
Is éard atá i scripteanna na n-orduithe ná bailiúcháin de na horduithe céanna ar féidir iad a iontráil ón méarchlár, iad a bhailiú i gcomhaid agus a aontú le comhchuspóir. Sa chás seo, féadfaidh torthaí obair na bhfoirne a bheith luachmhar go neamhspleách nó feidhmiú mar shonraí ionchuir d’fhoirne eile. Is bealach cumhachtach iad scripteanna chun gníomhartha a dhéantar go minic a uathoibriú.
Mar sin, má labhairt linn faoi líne na n-orduithe, ceadaíonn sé duit a fhorghníomhú roinnt orduithe ag an am céanna ag dul isteach iad scartha le leathstad:
pwd ; whoami
Déanta na fírinne, má rinne tú é seo i do chríochfort, tá do chéad script bash ina bhfuil dhá ordú scríofa cheana féin. Oibríonn sé mar seo. Foireann ar dtús pwd taispeánann sé faisnéis faoin eolaire oibre reatha, ansin an t-ordú whoamiléiríonn sé eolas faoin úsáideoir a bhfuil tú logáilte isteach mar.
Ag baint úsáide as an gcur chuige seo, is féidir leat an oiread orduithe agus is mian leat a chomhcheangal ar líne amháin, is é an t-aon teorainn ná an líon uasta argóintí is féidir a chur ar aghaidh chuig an gclár. Is féidir leat an teorainn seo a shainiú leis an ordú seo a leanas:
getconf ARG_MAX
Is uirlis iontach í an líne ordaithe, ach caithfidh tú orduithe a chur isteach ann gach uair a theastaíonn uait iad. Cad a tharlóidh má scríobhamar sraith orduithe isteach i gcomhad agus go simplí ar a dtugtar an comhad sin chun iad a fhorghníomhú? Go deimhin, tugtar script líne ordaithe ar an gcomhad a bhfuilimid ag caint faoi.
Conas a oibríonn scripteanna bash
Cruthaigh comhad folamh ag baint úsáide as an ordú touch. Caithfidh a chéad líne a chur in iúl cén sliogán a úsáidfimid. Tá suim againn i bash, mar sin beidh an chéad líne den chomhad:
#!/bin/bash
Úsáideann línte eile sa chomhad seo an tsiombail hash chun tráchtanna a chur in iúl nach bpróiseálann an bhlaosc. Is cás speisialta í an chéad líne, áfach, tá hash agus marc exclamation ina dhiaidh (tugtar an seicheamh seo seilg) agus an cosán go bash, cuir in iúl don chóras ar cruthaíodh an script go sonrach dó bash.
Déantar orduithe Shell a dheighilt le fotha líne, déantar tuairimí a dheighilt le comhartha hash. Seo an chuma atá air:
#!/bin/bash
# This is a comment
pwd
whoami
Anseo, díreach mar atá ar an líne ordaithe, is féidir leat orduithe a scríobh ar líne amháin, scartha le leathcholúin. Mar sin féin, má scríobhann tú na horduithe ar línte éagsúla, is fusa an comhad a léamh. In aon chás, déanfaidh an bhlaosc iad a phróiseáil.
Ag socrú ceadanna comhaid scripte
Sábháil an comhad agus ainm agat myscript, agus tá an obair chun an script bash a chruthú beagnach críochnaithe. Anois níl fágtha ach an comhad seo a dhéanamh inrite, nó má dhéanann tú iarracht é a rith, tiocfaidh earráid ort Permission denied.
Ag iarraidh comhad scripte a rith le ceadanna atá cumraithe go mícheart
Déanaimis an comhad inrite:
chmod +x ./myscript
Anois déanaimis iarracht é a fhorghníomhú:
./myscript
Tar éis na ceadanna a shocrú oibríonn gach rud mar ba chóir.
Rith script bash go rathúil
Aschur teachtaireachta
Chun téacs a aschur chuig consól Linux, úsáid an t-ordú echo. Úsáidfimid an t-eolas ar an bhfíric seo agus cuirfimid ár script in eagar, ag cur mínithe ar na sonraí atá aschur de réir na n-orduithe atá ann cheana:
#!/bin/bash
# our comment is here
echo "The current directory is:"
pwd
echo "The user logged in is:"
whoami
Seo a tharlaíonn tar éis an script nuashonraithe a rith.
Teachtaireachtaí a aschur ó script
Anois is féidir linn nótaí míniúcháin a thaispeáint ag baint úsáide as an ordú echo. Mura bhfuil a fhios agat conas comhad a chur in eagar ag baint úsáide as uirlisí Linux, nó mura bhfuil an t-ordú feicthe agat roimhe seo echo, Féach ar seo ábhar.
Ag baint úsáide as Athróga
Ligeann athróga duit faisnéis a stóráil i gcomhad scripte, mar thorthaí orduithe, le húsáid ag orduithe eile.
Níl aon rud cearr le horduithe aonair a fhorghníomhú gan a gcuid torthaí a stóráil, ach tá an cur chuige seo teoranta go leor ina chumais.
Tá dhá chineál athróg ann ar féidir a úsáid i scripteanna bash:
Athróga Comhshaoil
Athróga Úsáideora
Athróga Comhshaoil
Uaireanta ní mór orduithe bhlaosc a bheith ag obair le roinnt sonraí córais. Seo sampla de conas eolaire baile an úsáideora reatha a thaispeáint:
#!/bin/bash
# display user home
echo "Home for the current user is: $HOME"
Tabhair faoi deara gur féidir linn athróg córais a úsáid $HOME i Sleachta dúbailte, ní chuirfidh sé seo cosc ar an gcóras é a aithint. Seo a gheobhaidh tú má ritheann tú an cás thuas.
Athróg timpeallachta a úsáid i script
Cad a tharlóidh má theastaíonn uait comhartha dollar a thaispeáint ar an scáileán? Déanaimis iarracht é seo:
echo "I have $1 in my pocket"
Braithfidh an córas comhartha dollar i teaghrán luaite agus glacfaidh sé leis go bhfuil tagairt déanta againn d'athróg. Déanfaidh an script iarracht luach athróige neamhshainithe a thaispeáint $1. Ní hé seo a theastaíonn uainn. Cad atá le déanamh?
Sa chás seo, beidh úsáid a bhaint as an carachtar éalú, backslash, roimh an comhartha dollar cabhrú:
echo "I have $1 in my pocket"
Beidh an script aschur anois go díreach cad a bhfuiltear ag súil.
Seicheamh éalaithe a úsáid chun comhartha dollar a phriontáil
Athróga Úsáideora
Chomh maith le hathróga timpeallachta, ceadaíonn scripteanna bash duit do chuid athróg féin a shainiú agus a úsáid sa script. Tá luach ag athróga den sórt sin go dtí go gcríochnaíonn an script forghníomhú.
Mar is amhlaidh le hathróga córais, is féidir athróga úsáideora a rochtain ag baint úsáide as an gcomhartha dollar:
TNW-CUS-FMP - cód promo le haghaidh lascaine 10% ar ár seirbhísí, ar fáil le gníomhachtú laistigh de 7 lá
#!/bin/bash
# testing variables
grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"
Is é seo a tharlaíonn tar éis a leithéid de script a rith.
Athróga Saincheaptha i Script
Ionadú Ordú
Ceann de na gnéithe is úsáidí a bhaineann le scripteanna bash ná an cumas faisnéis a bhaint as aschur ordaithe agus é a shannadh d'athróga, rud a ligeann duit an fhaisnéis seo a úsáid áit ar bith sa chomhad scripte.
Is féidir é seo a dhéanamh ar dhá bhealach.
Ag úsáid an chúltic "`"
De réir dearadh $()
Agus an chéad chur chuige á úsáid agat, bí cúramach gan comhartha athfhriotail amháin a chur isteach in ionad an chúlbhic. Ní mór an t-ordú a chur faoi iamh in dhá dheilbhín dá leithéid:
mydir=`pwd`
Sa dara cur chuige, scríobhtar an rud céanna mar seo:
mydir=$(pwd)
Agus b'fhéidir go mbeadh an script ag breathnú mar seo:
#!/bin/bash
mydir=$(pwd)
echo $mydir
Le linn a oibriú, aschur an ordaithe pwda shábháil i athróg mydir, a bhfuil a n-ábhar, ag baint úsáide as an ordú echo, Beidh dul go dtí an consól.
Script a shábhálann torthaí ordú in athróg
Oibríochtaí matamaitice
Chun oibríochtaí matamaitice a dhéanamh i gcomhad scripte, is féidir leat a leithéid de thógáil a úsáid $((a+b)):
I gcásanna áirithe, ní mór duit an sreabhadh forghníomhaithe orduithe a rialú. Mar shampla, má tá luach áirithe níos mó ná cúig, ní mór duit gníomh amháin a dhéanamh, ar shlí eile, gníomh eile. Tá sé seo infheidhme i go leor cásanna, agus anseo cabhróidh an struchtúr rialaithe linn if-then. Ina fhoirm is simplí tá sé mar seo:
if команда
then
команды
fi
Seo sampla oibre:
#!/bin/bash
if pwd
then
echo "It works"
fi
Sa chás seo, má dhéantar an t-ordú a fhorghníomhú pwdcríochnaithe go rathúil, taispeánfar an téacs “it works” sa chonsól.
Bainimis úsáid as an eolas atá againn agus scríobhaimid script níos casta. Ligean le rá go gcaithfimid úsáideoir áirithe a aimsiú i /etc/passwd, agus má d'éirigh leat é a aimsiú, tuairiscigh go bhfuil sé ann.
#!/bin/bash
user=likegeeks
if grep $user /etc/passwd
then
echo "The user $user Exists"
fi
Seo a tharlaíonn tar éis an script seo a rith.
Cuardach úsáideora
Anseo d'úsáideamar an t-ordú grepchun úsáideoir a chuardach i gcomhad /etc/passwd. Má tá an fhoireann grepnach eol duit, is féidir a thuairisc a fháil anseo.
Sa sampla seo, má aimsítear an t-úsáideoir, taispeánfaidh an script teachtaireacht chomhfhreagrach. Cad a tharlóidh mura bhféadfaí an t-úsáideoir a aimsiú? Sa chás seo, déanfaidh an script forghníomhú go simplí gan aon rud a insint dúinn. Ba mhaith linn go n-inseodh sé dúinn faoi seo freisin, mar sin feabhsóimid an cód.
más rud é-ansin-tógáil eile rialaithe
Ionas go mbeidh an clár in ann torthaí cuardaigh rathúil agus teip araon a thuairisciú, bainfimid úsáid as an tógáil if-then-else. Seo mar a oibríonn sé:
if команда
then
команды
else
команды
fi
Má thagann náid ar ais leis an gcéad ordú, rud a chiallaíonn gur éirigh go maith leis, beidh an coinníoll fíor agus ní rachaidh an forghníomhú ar aghaidh feadh an bhrainse else. Seachas sin, má tá rud éigin eile seachas nialas ar ais, a thabharfadh le fios teip, nó toradh bréagach, na horduithe tar éis else.
Scríobhaimis an script seo a leanas:
#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
else
echo "The user $user doesn’t exist"
fi
Chuaigh a fhorghníomhú síos an draein else.
Script a rith le tógáil más rud é-ansin-eile
Bhuel, bogaimis ar aghaidh agus cuirimis ceist orainn féin faoi choinníollacha níos casta. Cad a tharlóidh más gá duit a sheiceáil ní coinníoll amháin, ach roinnt? Mar shampla, má aimsítear an t-úsáideoir atá ag teastáil, ba cheart teachtaireacht amháin a thaispeáint, má chomhlíontar coinníoll éigin eile, ba cheart teachtaireacht eile a thaispeáint, agus mar sin de. I gcás den sórt sin, cabhróidh coinníollacha neadaithe linn. Breathnaíonn sé mar seo:
if команда1
then
команды
elif команда2
then
команды
fi
Má sheolann an chéad ordú náid ar ais, rud a léiríonn gur éirigh go maith leis, déanfar na horduithe sa chéad bhloc then, ar shlí eile, má tá an chéad choinníoll bréagach agus má thagann an dara ordú ar ais náid, déanfar an dara bloc cód a fhorghníomhú.
#!/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
I script den sórt sin, is féidir leat, mar shampla, úsáideoir nua a chruthú ag baint úsáide as an ordú useradd, mura ndearna an cuardach torthaí, nó má dhéanann tú rud éigin úsáideach eile.
Comparáid idir uimhreacha
I scripteanna is féidir leat luachanna uimhriúla a chur i gcomparáid. Anseo thíos tá liosta de na horduithe ábhartha.
n1 -eq n2Filleann sé fíor má n1 ionann n2. n1 -ge n2 Filleann sé fíor má n1níos mó nó comhionann n2. n1 -gt n2Filleann sé fíor má n1 níos fearr n2. n1 -le n2Filleann sé fíor má n1níos lú nó comhionann n2. n1 -lt n2Filleann sé fíor má tá n1 níos lú ná n2. n1 -ne n2Filleann sé fíor má n1ní cothrom n2.
Mar shampla, déanaimis iarracht ceann de na hoibreoirí comparáide. Tabhair faoi deara go bhfuil an slonn faoi iamh idir lúibíní cearnacha.
#!/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"
fi
Seo é an rud a aschuirfidh an t-ordú seo.
Comparáid idir uimhreacha i scripteanna
Luach athraitheach val1níos mó ná 5, críochnaíonn an brainse suas á fhorghníomhú thenoibreoir comparáide agus tá teachtaireacht chomhfhreagrach ar taispeáint sa chonsól.
Comparáid teaghrán
Is féidir le scripteanna luachanna teaghrán a chur i gcomparáid freisin. Tá cuma simplí go leor ar oibreoirí comparáide, ach tá gnéithe áirithe ag baint le hoibríochtaí comparáide teaghrán, a dtiocfaimid i dteagmháil leo thíos. Seo liosta na n-oibreoirí.
str1 = str2 Teaghráin tástálacha le haghaidh comhionannais, ag filleadh fíor má tá na teaghráin comhionann.
str1 != str2Filleann sé fíor mura bhfuil na teaghráin comhionann. str1 < str2Filleann sé fíor má str1níos lú ná str2. str1 > str2 Filleann sé fíor má str1níos mó ná str2. -n str1 Filleann sé fíor más fad str1Os cionn náid. -z str1Filleann sé fíor más fad str1comhionann le nialas.
Seo sampla de theaghráin a chur i gcomparáid i script:
#!/bin/bash
user ="likegeeks"
if [$user = $USER]
then
echo "The user $user is the current logged in user"
fi
Mar thoradh ar an script a fhorghníomhú, faigheann muid an méid seo a leanas.
Comparáid a dhéanamh idir teaghráin i scripteanna
Seo gné amháin de chomparáid teaghrán is fiú a lua. Is é sin, ní mór na hoibreoirí ">" agus "" mar ordú atreoraithe aschuir.
Seo an chuma atá ar oibriú leis na hoibreoirí seo sa chód:
#!/bin/bash
val1=text
val2="another text"
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi
Seo iad torthaí na scripte.
Comparáid teaghrán, rabhadh tugtha
Tabhair faoi deara le do thoil go n-eisíonn an script, cé go ndéantar é, rabhadh:
./myscript: line 5: [: too many arguments
Chun fáil réidh leis an rabhadh seo, déanaimid i gcrích $val2 i Sleachta dúbailte:
#!/bin/bash
val1=text
val2="another text"
if [ $val1 > "$val2" ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi
Anois oibríonn gach rud mar ba chóir.
Comparáid teaghrán
Gné eile de na hoibreoirí ">" agus "<" is ea an chaoi a n-oibríonn siad le carachtair chás uachtair agus litreacha beaga. Chun an ghné seo a thuiscint, ullmhaímid téacschomhad leis an ábhar seo a leanas:
Likegeeks
likegeeks
Sábhálaimis é trí ainm a thabhairt dó myfile, ansin rith an t-ordú seo a leanas sa teirminéal:
sort myfile
Déanfaidh sé na línte ón gcomhad a shórtáil mar seo:
likegeeks
Likegeeks
Foireann sort, de réir réamhshocraithe, sórtáil teaghráin in ord ardaitheach, is é sin, tá an litir chás íochtair inár sampla níos lú ná an litir chás uachtair. Anois ullmhaímid script a dhéanfaidh comparáid idir na teaghráin chéanna:
#!/bin/bash
val1=Likegeeks
val2=likegeeks
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi
Má ritheann tú é, tarlaíonn sé go bhfuil gach rud an bealach eile thart - tá an litir chás íochtair níos mó anois ná an litir chás uachtair.
An t-ordú sórtála agus teaghráin a chur i gcomparáid i gcomhad scripte
I gcás orduithe comparáide, bíonn litreacha móra níos lú ná litreacha beaga. Déantar comparáid teaghrán anseo trí chóid ASCII na gcarachtar a chur i gcomparáid, braitheann an t-ord sórtála mar sin ar na cóid charachtair.
Foireann sort, ina dhiaidh sin, úsáideann an t-ord sórtála atá sonraithe i socruithe teanga an chórais.
Seiceálacha comhaid
B'fhéidir go n-úsáidtear na horduithe seo a leanas is minice i scripteanna bash. Ligeann siad duit coinníollacha éagsúla a sheiceáil maidir le comhaid. Seo liosta de na horduithe seo.
-d fileSeiceálann sé an bhfuil comhad ann agus an eolaire é. -e fileSeiceálann sé an bhfuil an comhad ann. -f file Seiceálann sé an bhfuil comhad ann agus an comhad é. -r fileSeiceálann sé an bhfuil an comhad ann agus an bhfuil sé inléite. -s file ПSeiceálann sé an bhfuil an comhad ann agus nach bhfuil sé folamh. -w fileSeiceálann sé an bhfuil an comhad ann agus an bhfuil sé inscríofa. -x fileSeiceálann sé an bhfuil comhad ann agus an bhfuil sé inrite. file1 -nt file2 Seiceálann sé an bhfuil sé níos nuaí file1ná file2. file1 -ot file2Seiceálann sé má tá sé níos sine file1ná file2. -O file Seiceálann sé an bhfuil an comhad ann agus an leis an úsáideoir reatha é. -G fileSeiceálann sé cibé an bhfuil an comhad ann agus an dtagann aitheantas an ghrúpa le haitheantas grúpa an úsáideora reatha.
Is furasta cuimhneamh ar na horduithe seo, chomh maith le go leor eile a pléadh inniu. Léiríonn a n-ainmneacha, mar ghiorrúcháin ar fhocail éagsúla, go díreach na seiceálacha a dhéanann siad.
Déanaimis iarracht ceann de na horduithe go praiticiúil:
#!/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"
fi
Taispeánfaidh an script seo, le haghaidh eolaire atá ann cheana, a bhfuil ann.
Ag liostú ábhar eolaire
Creidimid gur féidir leat triail a bhaint as na horduithe atá fágtha; úsáidtear iad go léir de réir an phrionsabail chéanna.
Torthaí
Inniu labhair muid faoi conas tosú ag scríobh scripteanna bash agus clúdaíodh roinnt rudaí bunúsacha. Go deimhin, tá ábhar an chláir bash ollmhór. Is aistriúchán é an t-alt seo ar an gcéad chuid de shraith mhór 11 ábhar. Más mian leat leanúint ar aghaidh faoi láthair, seo duit liosta de bhunleagan na n-ábhar seo. Ar mhaithe le caoithiúlacht, tá an t-aistriúchán atá díreach léite agat san áireamh anseo.
Bash Script Céim ar Chéim — anseo táimid ag caint faoi conas scripteanna bash a chruthú, déantar athróg a mheas, déantar cur síos ar struchtúir choinníollacha, ríomhaireachtaí, comparáid idir uimhreacha, teaghráin, agus faisnéis a fháil faoi chomhaid.
Bash Scripting Cuid 3, Paraiméadair & roghanna — tá an t-ábhar seo dírithe ar pharaiméadair na n-orduithe agus eochracha ar féidir iad a chur ar aghaidh chuig scripteanna, ag obair le sonraí a chuireann an t-úsáideoir isteach agus is féidir a léamh ó chomhaid.
Bash Scripting Cuid 4, Ionchur & Aschur - anseo táimid ag caint faoi thuairisceoirí comhaid agus ag obair leo, faoi ionchur, aschur, sruthanna earráide, agus faoi atreorú aschuir.
Bash Scripting Cuid 5, Sighals & Jobs — tá an t-ábhar seo dírithe ar chomharthaí Linux, a bpróiseáil i scripteanna, agus ag seoladh scripteanna ar sceideal.
Bash Scripting Cuid 6, Feidhmeanna — anseo is féidir leat foghlaim faoi fheidhmeanna a chruthú agus a úsáid i scripteanna agus leabharlanna a fhorbairt.
Bash Scripting Cuid 10, Samplaí Praiticiúla — seo teicníochtaí chun oibriú le teachtaireachtaí is féidir a sheoladh chuig úsáideoirí, chomh maith le modh chun monatóireacht a dhéanamh ar dioscaí.
Bash Scripting Cuid 11, Bí ag súil Ordú — tá an t-ábhar seo tiomnaithe don uirlis Expect, lenar féidir leat idirghníomhú le fóntais idirghníomhacha a uathoibriú. Go háirithe, táimid ag caint faoi scripteanna a bheith ag súil agus a n-idirghníomhaíocht le scripteanna bash agus cláir eile.
Creidimid gurb é ceann de na gnéithe luachmhara den tsraith alt seo ná, ag tosú ón gceann is simplí, atá oiriúnach d'úsáideoirí ar aon leibhéal, go n-eascraíonn sé de réir a chéile topaicí tromchúiseacha, rud a thugann deis do gach duine dul chun cinn a dhéanamh i gcruthú scripteanna ordú Linux. .
Léitheoirí a chara! Iarraimid ar gurus ríomhchláraithe bash labhairt faoi conas a shroich siad airde a máistreachta, a rúin a roinnt, agus táimid ag tnúth le imprisean a fháil uathu siúd atá díreach tar éis a gcéad script a scríobh.
Ní féidir ach le húsáideoirí cláraithe páirt a ghlacadh sa suirbhé. Sínigh isteach, le do thoil.
Ar cheart dom an chuid eile den tsraith alt a aistriú?