Androany dia hiresaka momba ny script bash isika. ity- script andalana baiko, nosoratana ho an'ny shell bash. Misy akorandriaka hafa toy ny zsh, tcsh, ksh, fa hifantoka amin'ny bash isika. Ity fitaovana ity dia natao ho an'ny rehetra, ny hany fepetra dia ny fahafahana miasa tsipika baiko Linux.
Ny script andalana baiko dia fitambarana didy mitovy izay azo ampidirina amin'ny fitendry, angonina ao anaty rakitra ary atambatra amin'ny tanjona iraisana. Amin'ity tranga ity, ny vokatry ny asan'ny ekipa dia mety ho sanda tsy miankina na ampiasaina ho angon-drakitra ho an'ny ekipa hafa. Ny scripts dia fomba mahery vaika ahafahana manara-maso ireo hetsika atao matetika.
Noho izany, raha miresaka momba ny baikon'ny baiko isika, dia ahafahanao manatanteraka baiko maromaro indray mandeha amin'ny fampidirana azy ireo misaraka amin'ny semicolon:
pwd ; whoami
Raha ny marina, raha nanandrana izany tao amin'ny terminalo ianao, ny script bash voalohany anao, izay misy baiko roa, dia efa nosoratana. Miasa toy izao izy io. Ekipa voalohany pwd mampiseho fampahalalana momba ny lahatahiry miasa ankehitriny, avy eo ny baiko whoamimampiseho fampahalalana momba ny mpampiasa idiranao.
Amin'ny fampiasana an'io fomba io dia azonao atao ny manambatra baiko maro araka izay tianao amin'ny andalana iray, ny hany fetra dia ny isan'ny tohan-kevitra ambony indrindra azo ampitaina amin'ny programa. Azonao atao ny mamaritra ity fetra ity amin'ny alΓ lan'ny baiko manaraka:
getconf ARG_MAX
Ny baiko dia fitaovana lehibe, saingy tsy maintsy mampiditra baiko ao ianao isaky ny mila azy ireo. Ahoana raha manoratra andiana baiko ao anaty rakitra iray isika ary miantso an'io rakitra io fotsiny mba hanatanterahana azy? Raha ny marina, ilay rakitra resahina dia antsoina hoe script andalana baiko.
Ahoana ny fiasan'ny script bash
Mamorona rakitra poakaty mampiasa ny baiko touch. Ny andalana voalohany dia mila manondro izay akorandriaka hampiasainay. Izahay dia liana amin'ny bash, ka ny andalana voalohany amin'ny rakitra dia:
#!/bin/bash
Ny andalana hafa amin'ity rakitra ity dia mampiasa ny mari-pamantarana hash mba hanondroana fanehoan-kevitra fa tsy mandeha ny akorandriaka. Na izany aza, ny andalana voalohany dia tranga manokana, misy tenifototra arahin'ny marika fihobiana (ity filaharana ity dia antsoina hoe shebang) ary ny lalana mankany bash, manondro amin'ny rafitra izay natao manokana ho an'ny script bash.
Ny baiko Shell dia sarahan'ny fahana andalana, ny fanehoan-kevitra dia sarahan'ny marika hash. Toy izao ny endriny:
#!/bin/bash
# This is a comment
pwd
whoami
Eto, toy ny amin'ny andalana baiko, azonao atao ny manoratra baiko amin'ny andalana iray, misaraka amin'ny semicolons. Na izany aza, raha manoratra ny baiko amin'ny tsipika samihafa ianao dia mora kokoa ny mamaky ilay rakitra. Na izany na tsy izany, ny akorandriaka dia hikarakara azy ireo.
Fametrahana fahazoan-dΓ lana amin'ny rakitra script
Tehirizo ilay rakitra manome anarana azy myscript, ary efa ho vita ny asa famoronana ny script bash. Ny hany sisa tavela dia ny fanaovana ity rakitra ity ho azo tanterahana, raha tsy izany, raha manandrana mampandeha azy ianao dia hahita hadisoana. Permission denied.
Miezaka mitantana rakitra script miaraka amin'ny fahazoan-dΓ lana diso
Aleo atao executable ny rakitra:
chmod +x ./myscript
Andeha hojerentsika izao:
./myscript
Aorian'ny fametrahana ny fahazoan-dΓ lana dia mandeha araka ny tokony ho izy ny zava-drehetra.
Nahomby ny fampandehanana ny script bash
Hafatra nivoaka
Mba hamoahana lahatsoratra amin'ny console Linux dia ampiasao ny baiko echo. Andao hampiasa ny fahalalana an'io zava-misy io ary hanitsy ny scripty, manampy fanazavana amin'ny angona izay navoakan'ny baiko efa ao anatiny:
#!/bin/bash
# our comment is here
echo "The current directory is:"
pwd
echo "The user logged in is:"
whoami
Izany no mitranga aorian'ny fampandehanana ny script nohavaozina.
Mamoaka hafatra avy amin'ny script
Ankehitriny dia afaka mampiseho fanamarihana fanazavana isika amin'ny fampiasana ny baiko echo. Raha tsy hainao ny manova rakitra amin'ny alΓ lan'ny fitaovana Linux, na mbola tsy nahita ilay baiko taloha ianao echo, jereo ny izany ara-nofo.
Mampiasa Variables
Ny Variables dia ahafahanao mitahiry fampahalalana ao anaty rakitra script, toy ny valin'ny baiko, hampiasaina amin'ny baiko hafa.
Tsy misy maharatsy ny manatanteraka ny baikon'ny tsirairay nefa tsy mitahiry ny valiny, saingy io fomba fiasa io dia voafetra ihany amin'ny fahaizany.
Misy karazany roa ny variables azo ampiasaina amin'ny script bash:
Tontolo iainana Variables
User Variables
Tontolo iainana Variables
Indraindray mila miasa miaraka amin'ny angona rafitra sasany ny baiko shell. Ity misy ohatra iray amin'ny fomba fanehoana ny lahatahirin'ny mpampiasa ankehitriny:
#!/bin/bash
# display user home
echo "Home for the current user is: $HOME"
Azafady, azafady fa afaka mampiasa variable system izahay $HOME amin'ny teny indroa, tsy hisakana ny rafitra tsy hahafantatra azy izany. Izany no azonao raha mitantana ny scenario etsy ambony ianao.
Fampiasana fari-pahalalana amin'ny script
Ahoana raha mila mampiseho famantarana dolara eo amin'ny efijery ianao? Andeha isika izao:
echo "I have $1 in my pocket"
Ny rafitra dia hahita famantarana dolara amin'ny tady voatonona ary mihevitra fa nanondro fari-pitsipika iray isika. Ny script dia hanandrana hampiseho ny sandan'ny fari-piainana tsy voafaritra $1. Tsy izany no ilaintsika. Ny hatao?
Amin'ity toe-javatra ity, ny fampiasana ny toetra mandositra, ny backslash, alohan'ny famantarana dolara dia hanampy:
echo "I have $1 in my pocket"
Ny script izao dia hamoaka araka izay andrasana.
Mampiasa filaharan'ny fandosirana hanontana famantarana dolara
User Variables
Ho fanampin'ny fari-piainan'ny tontolo iainana, ny script bash dia ahafahanao mamaritra sy mampiasa ny faribolanao manokana ao amin'ny script. Ny fari-piainana toy izany dia mitazona sanda mandra-pahavitan'ny script.
Toy ny amin'ny variables system, ny variables mpampiasa dia azo idirana amin'ny alΓ lan'ny famantarana dollar:
TNW-CUS-FMP - code promo ho an'ny fihenam-bidy 10% amin'ny serivisy, azo ampiasaina ao anatin'ny 7 andro
#!/bin/bash
# testing variables
grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"
Izany no mitranga aorian'ny fametrahana script toy izany.
Variable manokana amin'ny Script
Fanoloana baiko
Ny iray amin'ireo endri-javatra mahasoa indrindra amin'ny script bash dia ny fahafahana mamoaka vaovao avy amin'ny famoahana baiko ary manendry azy amin'ny variables, ahafahanao mampiasa ity fampahalalana ity na aiza na aiza ao amin'ny rakitra script.
Misy fomba roa hanaovana izany.
Mampiasa ny backtic "`"
Amin'ny famolavolana $()
Rehefa mampiasa ny fomba voalohany, dia mitandrema mba tsy hampiditra marika teny iray ho solon'ny backtic. Ny baiko dia tsy maintsy ampidirina amina kisary roa toy izany:
mydir=`pwd`
Amin'ny fomba faharoa, ny zavatra mitovy dia voasoratra toy izao:
mydir=$(pwd)
Ary ny script dia mety ho toy izao manaraka izao:
#!/bin/bash
mydir=$(pwd)
echo $mydir
Nandritra ny asany, ny Output ny baiko pwdhotehirizina ao anaty faribolana mydir, ny ao anatiny, mampiasa ny baiko echo, dia handeha amin'ny console.
Skripta mitahiry ny valin'ny baiko ao anaty faribolana
Hetsika matematika
Mba hanaovana asa matematika amin'ny rakitra script dia azonao atao ny mampiasa construct like $((a+b)):
Amin'ny toe-javatra sasany, mila mifehy ny fikorianan'ny fanatanterahana baiko ianao. Ohatra, raha mihoatra ny dimy ny sanda iray dia mila manao hetsika iray ianao, raha tsy izany, hafa. Izany dia azo ampiharina amin'ny toe-javatra maro, ary eto dia hanampy antsika ny rafitra fanaraha-maso if-then. Amin'ny endriny tsotra indrindra dia toa izao:
if ΠΊΠΎΠΌΠ°Π½Π΄Π°
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ
fi
Ity misy ohatra miasa:
#!/bin/bash
if pwd
then
echo "It works"
fi
Amin'ity tranga ity, raha tanterahana ny baiko pwddia ho vita soa aman-tsara, ny lahatsoratra "miasa" dia ho hita ao amin'ny console.
Andao hampiasa ny fahalalana ananantsika ary hanoratra script sarotra kokoa. Andeha hatao hoe mila mitady mpampiasa iray isika /etc/passwd, ary raha nahita azy ianao dia mitatitra fa misy izy io.
#!/bin/bash
user=likegeeks
if grep $user /etc/passwd
then
echo "The user $user Exists"
fi
Izany no mitranga aorian'ny fampandehanana ity script ity.
Fikarohana mpampiasa
Eto izahay dia nampiasa ny baiko grephikaroka mpampiasa ao anaty rakitra /etc/passwd. Raha ny ekipa greptsy mahazatra anao, azo jerena ny famaritana azy eto.
Amin'ity ohatra ity, raha hita ny mpampiasa, dia hampiseho hafatra mifanaraka amin'izany ny script. Ahoana raha tsy hita ilay mpampiasa? Amin'ity tranga ity, ny script dia hamita ny famonoana fotsiny nefa tsy milaza na inona na inona amintsika. Tianay holazainy aminay koa izany, ka hanatsara ny kaody izahay.
raha-dia-hafa ny fanaraha-maso construct
Mba hahafahan'ny programa mitatitra ny vokatry ny fikarohana mahomby sy ny tsy fahombiazana, dia hampiasa ny fanorenana izahay if-then-else. Toy izao ny fandehany:
if ΠΊΠΎΠΌΠ°Π½Π΄Π°
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ
else
ΠΊΠΎΠΌΠ°Π½Π΄Ρ
fi
Raha miverina aotra ny baiko voalohany, izay midika fa vita soa aman-tsara izy io, dia ho marina ny fepetra ary tsy hizotra amin'ny sampana ny famonoana. else. Raha tsy izany, raha misy zavatra hafa ankoatra ny aotra averina, izay manondro tsy fahombiazana, na vokatra diso, ny baiko manaraka else.
Andao hanoratra ity script manaraka ity:
#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
else
echo "The user $user doesnβt exist"
fi
Eny ary, andao isika handroso ary hanontany tena momba ny toe-javatra sarotra kokoa. Ahoana raha mila manamarina fa tsy fepetra iray, fa maromaro? Ohatra, raha hita ny mpampiasa tadiavina, dia tokony haseho ny hafatra iray, raha misy fepetra hafa, dia tokony haseho hafatra hafa, sy ny sisa. Amin'ny toe-javatra toy izany, ny toe-javatra misy akany dia hanampy antsika. Toa izao izy io:
if ΠΊΠΎΠΌΠ°Π½Π΄Π°1
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ
elif ΠΊΠΎΠΌΠ°Π½Π΄Π°2
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ
fi
Raha miverina aotra ny baiko voalohany, izay manondro ny fahombiazany, dia hotanterahina ny baiko ao amin'ny sakana voalohany. then, raha tsy izany, raha diso ny fepetra voalohany ary raha miverina aotra ny baiko faharoa, dia hotanterahina ny fehezan-dalΓ na faharoa.
#!/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
Amin'ny script toy izany, azonao atao, ohatra, mamorona mpampiasa vaovao mampiasa ny baiko useradd, raha tsy nahitam-bokatra ny fikarohana, na nanao zavatra hafa mahasoa.
Fampitahana isa
Amin'ny scripts dia azonao atao ny mampitaha ny sanda isa. Ity ambany ity ny lisitry ny baiko mifandraika amin'izany.
n1 -eq n2Miverina marina raha n1 dia n2. n1 -ge n2 Miverina marina raha n1mihoatra na mitovy n2. n1 -gt n2Miverina marina raha n1 mihoatra noho ny n2. n1 -le n2Miverina marina raha n1kely na mitovy n2. n1 -lt n2Miverina marina raha latsaky ny n1 n2. n1 -ne n2Miverina marina raha n1tsy mitovy n2.
Ohatra, andeha isika hanandrana ny iray amin'ireo mpandraharaha fampitahana. Mariho fa ny fitenenana dia voahidy ao anaty fononteny efamira.
#!/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
Izany no havoakan'ity baiko ity.
Fampitahana isa amin'ny soratra
Sanda miovaova val1mihoatra ny 5, ny sampana dia miafara amin'ny famonoana thenoperator fampitahana ary hafatra mifanaraka amin'izany dia aseho ao amin'ny console.
Fampitahana tady
Ny script dia afaka mampitaha ny soatoavin'ny tady. Ny mpandraharaha fampitahana dia toa tsotra, fa ny asa fampitahana tady dia manana endri-javatra sasany, izay hokasihintsika etsy ambany. Ity ny lisitry ny mpandraharaha.
str1 = str2 Mizaha tady hahitana fitoviana, miverina marina raha mitovy ny tady.
str1 != str2Miverina marina raha tsy mitovy ny tady. str1 < str2Miverina marina raha str1latsaky ny str2. str1 > str2 Miverina marina raha str1mihoatra ny str2. -n str1 Miverina marina raha lava str1Ambony aotra. -z str1Miverina marina raha lava str1mitovy amin'ny aotra.
#!/bin/bash
user ="likegeeks"
if [$user = $USER]
then
echo "The user $user is the current logged in user"
fi
Vokatry ny fanatanterahana ny script dia mahazo izao manaraka izao isika.
Mampitaha tady amin'ny script
Ity misy endri-javatra iray amin'ny fampitahana tady izay mendrika holazaina. Izany hoe, ny mpandraharaha ">" sy "<" dia tsy maintsy mandositra miaraka amin'ny backslash, raha tsy izany dia tsy mandeha tsara ny script, na dia tsy misy hafatra diso aza. Ny script dia mandika ny famantarana ">" ho toy ny baikon'ny famoahana famoahana.
Toy izao ny fiasan'ireto mpandraharaha ireto amin'ny code:
#!/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
Ireto ny vokatry ny script.
Fampitahana tady, nomena fampitandremana
Azafady, mariho fa ny script, na dia vita aza, dia manome fampitandremana:
./myscript: line 5: [: too many arguments
Mba hialana aminβizany fampitandremana izany dia mamarana ny teny izahay $val2 amin'ny teny roa:
#!/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
Ankehitriny dia mandeha araka ny tokony ho izy ny zava-drehetra.
Fampitahana tady
Ny endri-javatra iray hafa amin'ny mpandraharaha ">" sy "<" dia ny fomba fiasan'izy ireo amin'ny litera lehibe sy kely. Mba hahatakarana io endri-javatra io, andao hanomana rakitra lahatsoratra miaraka amin'ireto atiny manaraka ireto:
Likegeeks
likegeeks
Andao hotehirizina amin'ny fanomezana anarana azy myfile, dia araho ao amin'ny terminal ity baiko manaraka ity:
sort myfile
Izy io dia handamina ny andalana avy amin'ny rakitra toy izao:
likegeeks
Likegeeks
ekipa sort, amin'ny alΓ lan'ny default, manasokajy tady amin'ny filaharana miakatra, izany hoe ny litera kely amin'ny ohatra asehontsika dia kely noho ny lehibe. Andeha isika hanomana script izay hampitaha ireo tady mitovy:
#!/bin/bash
val1=Likegeeks
val2=likegeeks
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi
Raha mihazakazaka izany ianao dia hita fa ny zava-drehetra dia mifanohitra - ny litera kely dia lehibe kokoa noho ny lehibe.
Ny baiko fanasokajiana sy fampitahana tady ao anaty rakitra script
Raha ny baiko fampitahana, ny litera lehibe dia kely noho ny litera kely. Ny fampitahana tady eto dia atao amin'ny fampitahana ny kaody ASCII amin'ireo tarehintsoratra, miankina amin'ny kaody tarehintsoratra ny filaharana.
ekipa sort, kosa, dia mampiasa ny filaharana voafaritra ao amin'ny firafitry ny fiteny.
Fanamarinana rakitra
Angamba ireto baiko manaraka ireto no ampiasaina matetika amin'ny script bash. Izy ireo dia mamela anao hanamarina ny fepetra isan-karazany momba ny rakitra. Ity ny lisitr'ireo baiko ireo.
-d fileManamarina raha misy ny rakitra iray ary lahatahiry. -e fileManamarina raha misy ilay rakitra. -f file Manamarina raha misy ny rakitra iray ary misy rakitra. -r fileManamarina raha misy ilay rakitra ary azo vakiana. -s file ΠManamarina raha misy ilay rakitra ary tsy foana. -w fileManamarina raha misy ilay rakitra ary azo soratana. -x fileManamarina raha misy ilay rakitra ary azo tanterahana. file1 -nt file2 Manamarina raha vaovao file1noho ny file2. file1 -ot file2Manamarina raha efa antitra file1noho ny file2. -O file Manamarina raha misy ilay rakitra ary an'ny mpampiasa ankehitriny. -G fileManamarina raha misy ilay rakitra ary raha mifanaraka amin'ny ID vondrona an'ny mpampiasa ankehitriny ny ID vondrona misy azy.
Mora tadidina ireo didy ireo, sy ny maro hafa resahina ankehitriny. Ny anaran'izy ireo, izay fanafohezana ny teny isan-karazany, dia manondro mivantana ny fanamarinana ataon'izy ireo.
Andeha isika hanandrana ny iray amin'ireo baiko amin'ny fampiharana:
#!/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
Ity script ity, ho an'ny lahatahiry efa misy, dia hampiseho ny ao anatiny.
Mitanisa ny votoatin'ny lahatahiry iray
Mino izahay fa afaka manao fanandramana amin'ny didy sisa ianao, dia ampiasaina araka ny fitsipika iray ihany izy rehetra.
vokatra
Androany dia niresaka momba ny fomba hanombohana manoratra script bash izahay ary nandrakotra zavatra fototra. Raha ny marina, ny lohahevitra momba ny fandaharana bash dia goavana. Ity lahatsoratra ity dia fandikana ny ampahany voalohany amin'ny andiany lehibe misy fitaovana 11. Raha te-hanohy dieny izao ianao dia ity ny lisitry ny niandohan'ireo fitaovana ireo. Ho fanamorana dia ampidirina eto ny dikanteny vao novakianao.
Bash Script tsikelikely - Eto isika dia miresaka momba ny fomba hanombohana famoronana script bash, ny fampiasana ny variables dia raisina, ny rafitra misy fepetra, ny kajy, ny fampitahana isa, ny tady ary ny fitadiavana fampahalalana momba ny rakitra.
Bash Scripting Fizarana 4, Fampidirana & Famoahana - Eto isika dia miresaka momba ny famaritana ny rakitra sy ny fiaraha-miasa amin'izy ireo, momba ny fampidirana, ny vokatra, ny fandosiran'ny hadisoana, ary ny famerenana ny fivoahana.
Bash Scripting Fizarana 5, Sighals & Jobs - ity fitaovana ity dia natokana ho an'ny famantarana Linux, ny fanodinana azy amin'ny script, ary ny fandefasana script amin'ny fandaharam-potoana.
Bash Scripting Fizarana 6, Functions - Eto ianao dia afaka mianatra momba ny famoronana sy ny fampiasana asa amin'ny script sy ny fampivelarana tranomboky.
Bash Scripting Fizarana 11, Andraso ny baiko - ity fitaovana ity dia natokana ho an'ny fitaovana Expect, izay ahafahanao mandeha ho azy ny fifandraisana amin'ny fitaovana ifandrimbonana. Indrindra indrindra, miresaka momba ny script manantena sy ny fifandraisany amin'ny script bash sy ny programa hafa isika.
Mino izahay fa ny iray amin'ireo endri-javatra manan-danja amin'ity andian-dahatsoratra ity dia ny hoe, manomboka amin'ny tsotra indrindra, mety ho an'ny mpampiasa amin'ny ambaratonga rehetra, dia mitarika tsikelikely amin'ny lohahevitra tena matotra, manome fahafahana ny tsirairay handroso amin'ny famoronana script andalana Linux. .
Ry mpamaky malala! Mangataka ireo mpampianatra fandaharana bash izahay mba hiresaka momba ny fomba nahatongavan'izy ireo tamin'ny haavon'ny fahaizany, hizara ny tsiambaratelony, ary manantena ny hahazo fahatsapana avy amin'ireo izay vao nanoratra ny sorany voalohany.