Bash -skripte saab kasutada erinevatel eesmärkidel, näiteks shellikäsu täitmine, mitme käsu koos käivitamine, haldusülesannete kohandamine, ülesannete automatiseerimine jne. Seega on bash -programmeerimise põhitõdede tundmine iga Linuxi kasutaja jaoks oluline. See artikkel aitab teil saada bash -programmeerimise põhiidee. Enamikku bash -skriptimise tavalisi toiminguid selgitatakse siin väga lihtsate näidetega.
Selles artiklis käsitletakse järgmisi bash -programmeerimise teemasid.
- Tere, Maailm
- Kaja käsk
- Kommentaarid
- Mitmerealine kommentaar
- Kuigi Loop
- Loopi jaoks
- Hankige kasutaja sisend
- Kui avaldus
- Ja tingimus, kui avaldus
- Või tingimus, kui avaldus
- Muul juhul tingimus
- Korpuse seisund
- Hankige argumendid käsurealt
- Hankige nimedega käsurealt argumente
- Ühendage muutujaga kaks stringi
- Hankige stringide alamstring
- Lisage muutujale 2 numbrit
- Looge funktsioon
- Kasutage funktsiooni parameetreid
- Edastage skripti tagastamisväärtus
- Tee kataloog
- Looge kataloog olemasolu kontrollides
- Lugege faili
- Kustuta fail
- Lisa faili
- Kontrollige, kas fail on olemas
- Näide e -posti saatmisest
- Hankige praeguse kuupäeva parsimine
- Oota käsk
- Unekäsk
Esimese BASH -programmi loomine ja käivitamine:
Bash -skripti saate käivitada terminalist või käivitades mis tahes bash -faili. Väga lihtsa bash -avalduse täitmiseks käivitage terminalist järgmine käsk. Käsu väljund on „ Tere, Maailm '.
$viskas välja 'Tere, Maailm'
Bash -faili loomiseks avage mis tahes redaktor. Siin, nano faili loomiseks kasutatakse redaktorit ja failinimeks määratakse „ First.sh '
$nanoEsiteks.sh
Lisage faili järgmine bash -skript ja salvestage fail.
#!/bin/bashviskas välja 'Tere, Maailm'
Bash -faili saate käivitada kahel viisil. Üks võimalus on kasutada käsku bash ja teine on määrata täitmisõigus faili bash ja käivitada. Siin on näidatud mõlemad viisid.
$löömaEsiteks.shVõi
$chmoda+x Esiteks.sh$./Esiteks.sh
Kaja käsu kasutamine:
Kaja käsku saate kasutada erinevate valikutega. Järgmises näites on mainitud mõningaid kasulikke valikuid. Kui kasutate ' viskas välja 'Käsku ilma suvandita, siis lisatakse vaikimisi uus rida. '-N' suvandit kasutatakse mis tahes teksti printimiseks ilma uue reata ja '' Ja '' suvandit kasutatakse kaldkriipsu eemaldamiseks väljundist. Looge uus bash -fail nimega, ' echo_example.sh 'Ja lisage järgmine skript.
#!/bin/bashviskas välja 'Uue reaga teksti printimine'
viskas välja -n 'Teksti printimine ilma uue rea'
viskas välja -Ja ' nEemaldamine tkaldkriips ttegelased n'
Käivitage fail bash -käsuga.
$löömaecho_example.sh
Kommentaari kasutamine:
„#” sümbolit kasutatakse ühe rea kommentaari lisamiseks bash -skripti. Looge uus fail nimega ' comment_example.sh ” ja lisage järgmine skript ühe rea kommentaariga.
#!/bin/bash# Lisage kaks numbrilist väärtust
((summa=25+35))
#Printige tulemus
viskas välja $ summa
Käivitage fail bash -käsuga.
$löömakommentaar_näide.sh
Mitmerealise kommentaari kasutamine:
Mitmerealist kommentaari saate bash -is kasutada mitmel viisil. Lihtne viis on näidatud järgmises näites. Looge uus bash nimega, „Multiline-comment.sh” ja lisage järgmine skript. Siin, ':' ja ' sümboleid kasutatakse mitmerealise kommentaari lisamiseks bash -skripti. See järgmine skript arvutab ruudu 5.
#!/bin/bash:'
Järgmine skript arvutab
numbri ruutväärtus, 5.
'
((piirkonnas=5*5))
viskas välja $ ala
Käivitage fail bash -käsuga.
$löömamultiline-comment.sh
Bash -kommentaari kasutamise kohta lisateabe saamiseks vaadake järgmist linki.
https://linuxhint.com/bash_comments/
Kasutamine silmuse ajal:
Looge bash -fail nimega, „While_example.sh”, kasutamist teada samas silmus. Näites samas silmus kordub 5 korda. Väärtus loendama muutuja suureneb 1 igal sammul. Kui väärtus loendama muutuja on 5, siis samas silmus lõpeb.
#!/bin/bashkehtiv=tõsi
loendama=1
samas [ $ kehtiv ]
teha
viskas välja $ loend
kui [ $ loend -ekv 5 ];
siis
murda
olla
((loe ++))
tehtud
Käivitage fail bash -käsuga.
$löömawhile_example.sh
Saate vaadata järgmist linki, et saada lisateavet while -tsükli kasutamise kohta.
https://linuxhint.com/bash- while-loop-examples/
Kasutamine silmuse jaoks:
Põhiline eest silmusdeklaratsioon on näidatud järgmises näites. Looge fail nimega ' for_example.sh 'Ja lisage järgmine skript, kasutades eest silmus. Siin, eest silmus kordub 10 korda ja printige kõik muutuja väärtused, loendur ühes reas.
#!/bin/basheest (( loendur=10; loendur>0; loendur--))
teha
viskas välja -n '$ loendur'
tehtud
printf ' n'
Käivitage fail bash -käsuga.
$löömafor_example.sh
Loopi saab kasutada bash -skripti erinevatel eesmärkidel ja viisidel. Lingi kasutamise kohta lisateabe saamiseks vaadake järgmist linki.
https://linuxhint.com/bash-for-loop-examples/
Hankige kasutaja sisend:
' loe 'Käsku kasutatakse bash -i kasutajalt sisendi saamiseks. Looge fail nimega ' user_input.sh 'Ja lisage kasutajalt sisendi saamiseks järgmine skript. Siin võetakse kasutajalt üks stringi väärtus ja kuvatakse väärtus, kombineerides muu stringi väärtuse.
#!/bin/bashviskas välja 'Sisestage oma nimi'
loenimi
viskas välja 'Tere tulemast$ nimiLinuxi jaoks vihje '
Käivitage fail bash -käsuga.
$löömauser_input.sh
Kasutaja sisendi kasutamise kohta lisateabe saamiseks vaadake järgmist linki.
https://linuxhint.com/bash-script-user-input/
Kasutades lauset if:
Saate kasutada tingimust ühe või mitme tingimusega. Selle avalduse algus- ja lõppploki määratleb 'Kui' ja 'ole' . Looge fail nimega ' simple_if.sh 'Kasutamise teadmiseks kasutage järgmist skripti kui avaldus bash. Siin, 10 on määratud muutujale, n . kui väärtus $ n on väiksem kui 10, siis väljund on See on ühekohaline number , muidu väljund on See on kahekohaline number . Võrdluseks, '-Lt' kasutatakse siin. Võrdluseks võite kasutada ka '-Eq' eest võrdsus , '' sündinud '' eest mitte võrdsus ja '-Gt' eest suurem kui bashi skriptis.
#!/bin/bashn=10
kui [ $ n -lt 10 ];
siis
viskas välja 'See on ühekohaline number'
muidu
viskas välja 'See on kahekohaline number'
olla
Käivitage fail bash -käsuga.
$löömasimple_if.sh
Kui kasutada lauset AND loogikaga:
Kui lauses on kaks või enam tingimust, saab kasutada erinevat tüüpi loogilisi tingimusi. Kuidas saate avaldise kasutamisel määrata mitu tingimust JA loogika on näidatud järgmises näites. '&&' kasutatakse rakendamiseks JA loogika kui avaldus. Looge fail nimega „If_with_AND.sh” et kontrollida järgmist koodi. Siin on väärtus kasutajanimi ja parool muutujad võetakse kasutajalt ja võrreldakse admin 'Ja' saladus ’. Kui mõlemad väärtused kattuvad, on väljund kehtiv kasutaja , muidu väljund on kehtetu kasutaja .
! /olen/löömaviskas välja 'Sisesta kasutajanimi'
loekasutajanimi
viskas välja 'Sisestage parool'
loeparool
kui [[ ( $ kasutajanimi=='admin' && $ parool=='saladus' ) ]];siis
viskas välja 'kehtiv kasutaja'
muidu
viskas välja 'kehtetu kasutaja'
olla
Käivitage fail bash -käsuga.
$löömaif_with_AND.sh
Kasutades lauset OR loogikaga:
' || 'Kasutatakse määratlemiseks VÕI loogika sees kui seisukorras. Looge fail nimega „If_with_OR.sh” kasutamise kontrollimiseks järgmise koodiga VÕI loogika kui avaldus. Siin on väärtus n võetakse kasutajalt ära. Kui väärtus on võrdne viisteist või Neli, viis siis on väljund Sa võitsid mängu , muidu väljund on Sa kaotasid mängu .
#!/bin/bashviskas välja 'Sisestage mis tahes number'
loen
kui [[ ( $ n -ekv viisteist || $ n -ekv Neli, viis ) ]]
siis
viskas välja 'Sa võitsid mängu'
muidu
viskas välja 'Sa kaotasid mängu'
olla
Käivitage fail bash -käsuga.
$löömaif_with_OR.sh
Kasutades lauset else if
Kasutamine muidu kui Tingimus on bash'is vähe erinev teistest programmeerimiskeeltest. ' elif 'Kasutatakse määratlemiseks muidu kui seisukord bash. Looge fail nimega ' elseif_example.sh 'Ja lisage järgmine skript, et kontrollida, kuidas muidu kui on määratletud bash -skriptis.
#!/bin/bashviskas välja 'Sisesta oma õnnenumber'
loen
kui [ $ n -ekv 101 ];
siis
viskas välja 'Teil on esimene auhind'
elif [ $ n -ekv 510 ];
siis
viskas välja 'Sa said teise auhinna'
elif [ $ n -ekv 999 ];
siis
viskas välja 'Sa said kolmanda auhinna'
muidu
viskas välja 'Vabandust, proovige järgmine kord'
olla
Käivitage fail bash -käsuga.
$löömaelseif_example.sh
Juhtumi avalduse kasutamine:
Juhtum avaldust kasutatakse alternatiivina if-elseif-else avaldus. Selle avalduse alguse ja lõpu plokk on määratletud järgmiselt: juhtum 'Ja' esac ’. Looge uus fail nimega ' case_example.sh 'Ja lisage järgmine skript. Järgmise skripti väljund on sama mis eelmisel muidu kui näide.
#!/bin/bashviskas välja 'Sisesta oma õnnenumber'
loen
juhtum $ n sisse
101)
viskas välja viskas välja 'Teil on esimene auhind' ;;
510)
viskas välja 'Sa said teise auhinna' ;;
999)
viskas välja 'Sa said kolmanda auhinna' ;;
*)
viskas välja 'Vabandust, proovige järgmine kord' ;;
esac
Käivitage fail bash -käsuga.
$löömacase_example.sh
Argumentide hankimine käsurealt:
Bash -skript saab käsurea argumentidest sisendit lugeda, nagu ka teist programmeerimiskeelt. Näiteks, $ 1 ja 2 dollarit muutujat kasutatakse esimese ja teise käsurea argumentide lugemiseks. Looge fail nimega command_line.sh ja lisage järgmine skript. Kaks argumendi väärtust loevad järgmise skripti ja prindivad väljundina argumentide koguarvu ja argumentide väärtused.
#!/bin/bashviskas välja „Argumente kokku: $#”
viskas välja 'Esimene argument = 1 dollar'
viskas välja 'Teine argument = 2 dollarit'
Käivitage fail bash -käsuga.
$löömacommand_line.sh Linuxi näpunäide
Käsurea argumendi kasutamise kohta lisateabe saamiseks võite vaadata järgmist linki.
https://linuxhint.com/command_line_arguments_bash_script/
Hankige argumendid käsurealt nimedega:
Kuidas lugeda nimedega käsurea argumente, on näidatud järgmises skriptis. Looge fail nimega ' command_line_names.sh ' ja lisage järgmine kood. Siin on kaks argumenti, X ja JA loetakse selle skripti järgi ja prinditakse X ja Y summa.
#!/bin/basheestvihanesisse '[email protected]'
teha
indeks= $(viskas välja $ arg | lõigatud -f1 -d=)
tundi= $(viskas välja $ arg | lõigatud -f2 -d=)
juhtum $ indeks sisse
X) x=$ tundi;;
JA) ja=$ tundi;;
*)
esac
tehtud
((tulemus= x + y))
viskas välja „X + Y =$ tulemus'
Käivitage fail käsuga bash ja kahe käsurea argumendiga.
$löömacommand_line_namesX=Neli, viis JA=30
Stringi muutujate kombineerimine:
Stringimuutujaid saate bash -is hõlpsasti kombineerida. Looge fail nimega string_combine.sh ja lisage järgmine skript, et kontrollida, kuidas saab bash -is stringimuutujaid kombineerida, muutujaid kokku pannes või kasutades '+' operaator.
#!/bin/bashstring1='Linux'
string2='Vihje'
viskas välja '$ string1$ string2'
string3=$ string1+$ string2
string3+='on hea õpetusblogi sait'
viskas välja $ string3
Käivitage fail bash -käsuga.
$löömastring_combine.sh
Hankige stringi alamstring:
Sarnaselt teisele programmeerimiskeelele pole ka bashil sisseehitatud funktsiooni, mis võimaldaks stringi andmetest väärtust lõigata. Kuid alamstringi ülesannet saate bash -is teha ka muul viisil, mis on näidatud järgmises skriptis. Skripti testimiseks looge fail nimega ' alamstring_näide.sh 'Järgmise koodiga. Siin on väärtus, 6 näitab alguspunkti, kust alamstring algab ja 5 näitab alamstringi pikkust.
#!/bin/bashStr='Õpi Linuxit Linuxist
subStr=$ {Str: 6: 5}
viskas välja $ subStr
Käivitage fail bash -käsuga.
$löömaalamstring_näide.sh
Lisage kaks numbrit:
Aritmeetilisi toiminguid saate bash -is teha erineval viisil. Järgmises skriptis on näidatud, kuidas topelt sulgudes bash -is lisada kaks täisarvu. Looge fail nimega ' add_numbers.sh 'Järgmise koodiga. Kasutajalt võetakse kaks täisarvu väärtust ja prinditakse liitmise tulemus.
#!/bin/bashviskas välja 'Sisesta esimene number'
loex
viskas välja 'Sisesta teine number'
loeja
(( summa= x + y))
viskas välja 'Lisamise tulemus =$ summa'
Käivitage fail bash -käsuga.
$löömaadd_numbers.sh
Bash -aritmeetika kohta lisateabe saamiseks vaadake järgmist linki.
https://linuxhint.com/bash_arithmetic_operations/
Loo funktsioon:
Lihtsa funktsiooni loomine ja funktsiooni kutsumine on näidatud järgmises skriptis. Looge fail nimega ' function_example.sh 'Ja lisage järgmine kood. Saate mis tahes funktsiooni nimetada ainult nime järgi, ilma bash -skripti sulgu kasutamata.
#!/bin/bashfunktsiooniF1()
{
viskas välja 'Mulle meeldib bash -programmeerimine'
}
F1
Käivitage fail bash -käsuga.
$löömafunction_example.sh
Funktsiooni loomine parameetritega:
Bash ei saa funktsiooni deklareerimise ajal funktsiooni parameetrit või argumente deklareerida. Kuid saate kasutada parameetreid funktsioonis, kasutades muud muutujat. Kui funktsiooni kutsumise ajal edastatakse kaks väärtust, kasutatakse väärtuste lugemiseks muutujaid $ 1 ja $ 2. Looge fail nimega ' funktsioon | _parameter.sh 'Ja lisage järgmine kood. Siin on funktsioon ' Ristküliku_piirkond ” arvutab parameetrite väärtuste põhjal ristküliku pindala.
#!/bin/bashRistkülik_piirkond() {
piirkonnas= $(($ 1 * 2 dollarit))
viskas välja 'Piirkond on:$ ala'
}
Ristkülik_piirkond10 kakskümmend
Käivitage fail bash -käsuga.
$löömafunction_parameter.sh
Funktsioonilt tagastamise väärtus:
Bash -funktsioon võib edastada nii numbrilisi kui ka stringi väärtusi. Järgmises näites on näidatud, kuidas funktsioonist stringiväärtust edastada. Looge fail nimega ' function_return.sh 'Ja lisage järgmine kood. Funktsioon, tervitus () tagastab muutujale stringi väärtuse, tundi mis prindib hiljem, kombineerides seda teiste stringidega.
#!/bin/bashfunktsioonitervitus() {
lk='Tere,$ nimi'
viskas välja $ str
}
viskas välja 'Sisestage oma nimi'
loenimi
tundi= $(tervitus)
viskas välja 'Funktsiooni tagastusväärtus on$ tundi'
Käivitage fail bash -käsuga.
$löömafunction_return.sh
Bash -funktsiooni kasutamise kohta lisateabe saamiseks vaadake järgmist linki.
https://linuxhint.com/return-string-bash-functions/
Tee kataloog:
Bash kasutab ' mkdir 'Käsku uue kataloogi loomiseks. Looge fail nimega ' make_directory.sh 'Ja lisage kasutajalt uue katalooginime saamiseks järgmine kood. Kui kataloogi nime praeguses asukohas pole, loob see kataloogi, vastasel juhul kuvab programm vea.
#!/bin/bashviskas välja 'Sisesta kataloogi nimi'
loenewdir
''mkdir $ newdir''
Käivitage fail bash -käsuga.
$löömamake_directory.sh
Looge kataloog olemasolu kontrollides:
Kui soovite kontrollida kataloogi olemasolu praeguses asukohas enne ' mkdir 'Käsku, saate kasutada järgmist koodi. ‘-D 'Suvandit kasutatakse konkreetse kataloogi olemasolu kontrollimiseks. Looge fail nimega ' directory_exist.sh ” ja lisage kataloogi loomiseks olemasolu kontrollides järgmine kood.
#!/bin/bashviskas välja 'Sisesta kataloogi nimi'
loendr
kui [ -d '$ ndir' ]
siis
viskas välja 'Kataloog on olemas'
muidu
''mkdir $ ndir''
viskas välja „Kataloog on loodud”
olla
Käivitage fail bash -käsuga.
$löömadirectory_exist.sh
Kataloogide loomise kohta lisateabe saamiseks vaadake järgmist linki.
https://linuxhint.com/bash_mkdir_not_existent_path/
Faili lugemine:
Lingi abil saate bash -is rida -realt lugeda mis tahes faili. Looge fail nimega ' read_file.sh 'Ja lisage järgmine kood olemasoleva faili lugemiseks,' raamat.txt '.
#!/bin/bashfaili='book.txt'
samas loerida;teha
viskas välja $ rida
tehtud < $ fail
Käivitage fail bash -käsuga.
$löömaread_file.shKäivitage järgmine käsk, et kontrollida saidi algupärast sisu raamat.txt 'Fail.
$kassraamat.txt
Faili lugemise erinevate viiside tundmiseks saate vaadata järgmist linki.
https://linuxhint.com/read_file_line_by_line_bash/
Faili kustutamine:
' rm 'Käsku kasutatakse bash -is failide eemaldamiseks. Looge fail nimega ' delete_file.sh 'Järgmise koodiga, et failinimi kasutajalt ära võtta ja eemaldada. Siin, '-I' suvandit kasutatakse kasutajalt loa saamiseks enne faili eemaldamist.
#!/bin/bashviskas välja „Sisestage eemaldatava failinimi”
loefn
rm -mina $ fn
Käivitage fail bash -käsuga.
$ls$löömadelete_file.sh
$ls
Lisa faili:
Kasutades saab uusi andmeid lisada mis tahes olemasolevasse faili '>>' operaator bashis. Looge fail nimega ‘Append_file.sh 'Ja lisage faili lõppu uue sisu lisamiseks järgmine kood. Siin, ' Laraveli õppimine 5 'Lisatakse kuupäeval' raamat.txt ' faili pärast skripti käivitamist.
#!/bin/bashviskas välja 'Enne faili lisamist'
kassraamat.txt
viskas välja 'Laravel 5 õppimine'>>raamat.txt
viskas välja 'Pärast faili lisamist'
kassraamat.txt
Käivitage fail bash -käsuga.
$löömaappend_file.sh
Kontrollige, kas fail on olemas:
Faili olemasolu bash -is saate kontrollida, kasutades '' Ja '' või '-F' valik. '-F' suvandit kasutatakse järgmises skriptis faili olemasolu testimiseks. Looge fail nimega ' file_exist.sh 'Ja lisage järgmine kood. Siin läheb failinimi käsurealt üle.
#!/bin/bashfaili nimi=$ 1
kui [ -f '$ failinimi' ];siis
viskas välja 'Fail on olemas'
muidu
viskas välja 'Faili ei ole olemas'
olla
Faili olemasolu kontrollimiseks käivitage järgmised käsud. Siin, raamat.txt fail on olemas ja raamat2.txt pole praeguses asukohas olemas.
$ls$löömafile_exist.sh book.txt
$löömafile_exist.sh book2.txt
Saada email:
Saate saata e -kirju, kasutades nuppu ' posti teel 'Või' kirja saatma ’Käsk. Enne nende käskude kasutamist peate installima kõik vajalikud paketid. Looge fail nimega ' mail_example.sh 'Ja lisage e -kirja saatmiseks järgmine kood.
#!/bin/bashSaaja= admin@example.com
Teema= Tervitades
Sõnum= Tere tulemast meie saidile
''posti teel-s $ Teema $ Saaja <<< $ Sõnum''
Käivitage fail bash -käsuga.
$löömamail_example.sh
Hankige praeguse kuupäeva sõelumine:
Praeguse süsteemi kuupäeva ja kellaaja väärtuse leiate nupu `abil kuupäev `käsk. Kuupäeva ja kellaaja väärtuse iga osa saab sõeluda, kasutades Y ',' m ',' d ',' H ',' M ' ja ' S ' . Looge uus fail nimega ' date_parse.sh ” ja lisage päeva, kuu, aasta, tunni, minuti ja teise väärtuste eraldamiseks järgmine kood.
#!/bin/bashAasta=''kuupäev+%JA''
Kuu=''kuupäev+%m''
Päev=''kuupäev+%d''
Tund=''kuupäev+%H''
Minut=''kuupäev+%M''
Teiseks=''kuupäev+%S''
viskas välja ''kuupäev''
viskas välja 'Praegune kuupäev on:$ Päev-$ Kuu-$ Aasta'
viskas välja 'Praegune aeg on:$ Tund:$ Minut:$ Teine'
Käivitage fail bash -käsuga.
$löömadate_parse.sh
Oota käsk:
oota on Linuxi sisseehitatud käsk, mis ootab mis tahes töötava protsessi lõpuleviimist. oota käsku kasutatakse konkreetse protsessi ID või töö ID -ga. Kui ootekäsuga ei anta protsessi ID -d ega töö ID -d, ootab see kõigi praeguste alamprotsesside lõpuleviimist ja tagastab väljumise oleku. Looge fail nimega ' wait_example.sh ” ja lisage järgmine skript.
#!/bin/bashviskas välja 'Oota käsk' &
protsessi_id=$!
oota $ process_id
viskas välja 'Kas väljusite olekuga $?'
Käivitage fail bash -käsuga.
$löömawait_example.sh
Ootekäsu kohta lisateabe saamiseks võite vaadata järgmist linki.
Unekäsk:
Kui soovite mõne käsu täitmise teatud ajaks peatada, saate seda kasutada magama käsk. Saate määrata viivituse summat sekundit (s), minutit (m), tundi (h) ja päeva (d). Looge fail nimega „Uni_näide.sh” ja lisage järgmine skript. See skript ootab pärast käivitamist 5 sekundit.
#!/bin/bashviskas väljaOotaeest 5sekundit
magama 5
viskas väljaLõpetatud
Käivitage fail bash -käsuga.
$löömauni_näide.sh
Une käsu kohta lisateabe saamiseks vaadake järgmist linki.
https://linuxhint.com/sleep_command_linux/
Loodetavasti olete pärast selle artikli lugemist saanud bash -skriptikeele põhikontseptsiooni ja saate neid vastavalt oma vajadustele rakendada.