Bash -skriptimise õpetus algajatele

Bash Scripting Tutorial



Linuxi vaikimisi käsukeel on Bash -skript. Peame Linuxis iga päev täitma paljusid käske mitmel eesmärgil. Neid igapäevaseid ülesandeid saab bash -skripti abil automatiseerida. Iga kasutaja saab selle skriptikeele väga lihtsalt ja kiiresti selgeks õppida. Kui olete bash -programmeerimises uus, siis on see õpetus teie jaoks.

Sisu:

  1. Kommentaarid
  2. kaja käsk
  3. Muutujad
  4. Tingimuslik avaldus
  5. Silmused
  6. Funktsioonid
  7. Programmide kutsumine skriptiga
  8. Menüüde loomine
  9. Käsurea töötlemine
  10. Aritmeetika
  11. Stringidega manipuleerimine
  12. Tagastuskoodide tagastamine skriptist ja teise skripti püüdmine
  13. Failide lugemine ja kirjutamine
  14. Torud

Kommentaarid

Koodiga kommentaaride lisamine on iga programmeerimiskeele oluline osa. Kommentaare ei analüüsita skriptiga täitmise ajal. Lugeja saab igast koodist õigesti aru, kui see on hästi kommenteeritud. Kommentaari saate lisada bash -skriptiga mitmel viisil. Selles osas on näidatud, kuidas bash-skriptis ühe- ja mitmerealisi kommentaare lisada. Looge bash -fail järgmise skriptiga, et teada saada bash -kommentaari kasutamist. Siin kasutatakse sümbolit '#' üherealise kommentaari lisamiseks ja ühe tsitaati (') koos': 'kasutatakse mitmerealiste kommentaaride lisamiseks.







bash_comment.sh



#!/bin/bash
#Võtke sisendiks number
viskas välja 'Sisestage number'
loeet
:'
Kontrollige, kas sisendnumber on
vähem kui 10 või suurem kui 10 või 10
'

kui [[ $ a -lt 10 ]]
siis
viskas välja 'Arv on väiksem kui 10'
elif [[ $ a -gt 10 ]]
siis
viskas välja 'Arv on suurem kui 10'
muidu
viskas välja 'Arv on 10'
olla

Väljund:



Käivitage skript.





$löömabash_comment.sh

Siin käivitatakse skript kolm korda sisendväärtusega 3, 10 ja 90. Ilmub järgmine väljund.



Kui soovite bashi kommenteerimise kohta rohkem teada saada, saate seda kontrollida seda õpetust .

Mine üles

kaja käsk

Käsku 'echo' kasutatakse bash -is terminali väljundi printimiseks. Väljundi printimiseks erineval viisil saab bash -i käsuga echo kasutada erinevaid valikuid. Looge järgmise skriptiga bash -fail, et teada käsu 'echo' kahte lihtsat kasutamist. Siin trükib esimene käsk 'echo' lihtsa teksti andmed uue reaga ja teine ​​kaja käsk prindib lihtsa teksti ilma uue reata.

echo_test.sh

#!/bin/bash
#Printige esimene tekst
viskas välja 'Printige tekst uue reaga'
#Printige teine ​​tekst
viskas välja -n 'Printige tekst ilma uue reata'

Väljund:

Käivitage skript.

$löömaecho_test.sh

Pärast ülaltoodud käsu täitmist ilmub järgmine väljund.

Bash'is saab käsku 'echo' kasutada ka palju muud. Seda õpetust saate vaadata käsu 'echo' kohta lisateabe saamiseks.

Mine üles

Muutujad

Muutujadeklaratsioon on iga programmeerimiskeele vajalik osa. Bash -muutujaid saab deklareerida erineval viisil. Kui muutujale on määratud väärtus, ei kasutata muutuja alguses ühtegi sümbolit. Muutuja väärtuse lugemise ajal kasutatakse muutuja nime juures sümbolit „$”. Muutujat saab kasutada terminalist või mis tahes bash -skriptis.

Järgmised käsud deklareerivad stringimuutuja nimega mystr konkreetse väärtusega ja seejärel printige terminalis muutuja väärtus.

$mystr='Mulle meeldib bash -programmeerimine'
$viskas välja $ mystr

Väljund:

Looge bash -fail järgmise skriptiga. Siin on deklareeritud kaks muutujat. Need on $ a ja $ b . Kui sisendväärtus, mis on salvestatud $ a on võrdne $ b siis sõnum, Arvud on võrdsed trükitakse muidu Arvud pole võrdsed trükitakse.

var.sh

#!/bin/bash
viskas välja 'Sisestage number'
loeet
b=100
kui [[ $ a -ekv $ b ]]
siis
viskas välja 'Arvud on võrdsed'
muidu
viskas välja 'Arvud pole võrdsed'
olla

Väljund:

Käivitage skript.

$löömavar.sh

Ülaltoodud käsku täidetakse kaks korda väärtustega 56 ja 100. Ilmub järgmine väljund.

Kui soovite bash -muutujate kohta rohkem teada saada, saate seda kontrollida seda õpetust .

Mine üles

Tingimuslik avaldus

Nagu teistgi programmeerimiskeelt, saate bash -is kasutada tingimuslauset. ' Kui-siis-muidu 'Ja' juhtum Avaldusi kasutatakse peamiselt tingimuste avalduste rakendamiseks mis tahes programmeerimiskeeles. Tingimuslause kasutamine, kasutades 'Kui' avaldus on näidatud selle õpetuse selles jaotises. Looge järgmise skriptiga bash -fail, kus kasutatakse tingimuslauset. Siin võetakse kasutajalt kaks väärtust sisendiks ja salvestatakse muutujatesse, $ kood ja $ vanus . Väärtuse kontrollimiseks kasutatakse lauset „kui” $ vanus on suurem või võrdne 18 ja väärtus $ kood on 1100 . Kui mõlemad tingimused on tõesed, kuvatakse teade, Teil on õigus filmi vaadata trükitakse muidu Te ei saa filmi vaadata trükitakse.

kond.sh

#!/bin/bash

viskas välja 'Sisesta oma kood'
loekoodi
viskas välja „Sisestage oma vanus”
loevanus

kui [[ $ vanus -anna 18 && $ kood -ekv '1100' ]]
siis
viskas välja 'Teil on õigus filmi vaadata'
muidu
viskas välja 'Te ei saa filmi vaadata'
olla

Väljund:

Käivitage skript.

$löömakond.sh

Pärast erinevate sisendväärtuste võtmist kuvatakse järgmine väljund. Esmakordse täitmise korral antakse koodiks 1100 ja vanuseks 5 ning kui tingimus tagastab nende väärtuste puhul vale. 1100 on antud koodina ja 45 vanusena teise teostuse korral, mis tagastab tingimuse true juhul.

Kui soovite bash tingimuslause kohta rohkem teada saada, saate seda õpetust vaadata.

Mine üles

Silmused

Kui skripti mõnda osa tuleb mitu korda käivitada, kasutatakse ülesande täitmiseks tsüklit. Bash toetab kolme tüüpi silmuste deklareerimist nagu teised keeled. Need on silmuste jaoks, ajaks ja kuni. Programmeerimisnõuete põhjal kasutatakse skriptis konkreetset tsüklit. Nende kolme tüüpi silmuste kasutusviise näidatakse selles jaotises lihtsate näidete abil.

Kasutamine silmuse jaoks

Looge bash -fail järgmise skriptiga kus eest ' iteratsiooni kasutatakse silmust. 'eest' tsüklit kasutatakse peamiselt andmete loendi või massiivi kordamiseks. Siin kasutatakse nädalapäevade loendit ja iga nädalapäeva nime iteratsioon, kasutades tsüklit. 'kui' avaldust kasutatakse konkreetse sõnumi printimiseks nädalapäeva nime alusel.

jaoks.sh

#Lugege nädalapäeva nime iga tsükli iteratsioonis
eestpäevsisseEsmaspäev Teisipäev Kolmapäev Neljapäev Reede Laupäev Pühapäev
teha

#Kontrollige, kas nädalapäeva nimi on esmaspäev või neljapäev
kui [[ $ päev=='Esmaspäev' || $ päev=='Neljapäev' ]]
siis
viskas välja 'Koosolek käes$ päevkell 9.30

#Kontrollige nädalapäeva nime teisipäev või kolmapäev või reede
elif [[ $ päev=='Teisipäev' || $ päev=='Kolmapäev' || $ päev=='Reede' ]]
siis
viskas välja 'Koolitus edasi$ päevkell 11:00
muidu

#Printige puhkus teistele päevadele
viskas välja '$ päevon puhkus '
olla
tehtud

Väljund:

Käivitage skript.

$löömajaoks.sh

Pärast skripti käivitamist kuvatakse järgmine väljund.

Kui soovite rohkem teada saada bash for loop kasutamisest, saate seda õpetust vaadata.

Lingi kasutamine

Looge bash -fail järgmise skriptiga kus samas ` iteratsiooni kasutatakse silmust. See skript prindib need numbrid 1 kuni 20, mis on paaris ja jagatavad 5 -ga. $ loendur muutujat kasutatakse silmuse iteratsiooni juhtimiseks ja selle muutuja väärtust suurendatakse iga korduse korral 1 võrra. Millal 'kui' tingimus tagastab tõese, siis prindib selle väärtuse $ loendur .

#!/bin/bash

#Printige sõnum
viskas välja 'Printige paaritud ja 5 -ga jagatavad numbrid'

#Alustage loendur
loendur=1

#Korrake tsüklit, kuni $ loenduri väärtus on väiksem või võrdne 20
samas [ $ loendur -neid kakskümmend ]
teha

#Kontrollige, kas loendur $ jagub 2 -ga ja 5 -ga
kui [[ $ loendur%2-ekv 0 && $ loendur%5-ekv 0 ]]
siis
#Prindi $ loendur ilma uue reata
viskas välja '$ loendur'
olla

#Indrement $ loendur 1 võrra
((loendur ++))
tehtud
viskas välja 'Valmis'

Väljund:

$löömasamas.sh

1-20 piires on ainult arvud, mis on paaris ja jaguvad 5-ga. Pärast skripti käivitamist kuvatakse järgmine väljund.

Kui soovite rohkem teada saada bashi kasutamisest samas ` silmus, siis saate kontrollida seda õpetust .

Kasutamine kuni silmuseni

Looge bash -fail järgmise skriptiga kus kuni ` iteratsiooni kasutatakse silmust. See skript prindib kõik paaritu arvud vahemikus 0 kuni 20. $ n muutujat kasutatakse selles skriptis tsükli kordamiseks.

kuni.sh

#!/bin/bash

#Initsialiseeri muutuja, n
n=kakskümmend

#Korda tsüklit, kuni $ n väärtus on suurem kui 0
kuni [ $ n -lt 0 ]
teha

#Kontrollige, kas n väärtus on paaritu
kui [[ $ n%2-gt 0 ]]
siis
viskas välja $ n
olla

#Suurendage n väärtust 1 võrra
((n=$ n-1))
tehtud

Väljund:

Käivitage skript.

$löömakuni.sh

Skript prindib kõik paarisarvud vahemikus 20 kuni 1. Pärast skripti käivitamist kuvatakse järgmine väljund.

Mine üles

Funktsioonid

Kui koodiplokki tuleb skriptis mitu korda täita, kasutatakse ülesande täitmiseks funktsiooni. Funktsiooni peate nimetama ainult siis, kui funktsioonis määratletud skripti tuleb mitu korda täita, mitte sama skripti mitu korda lisada. Esimese ja lõpu esimest sulgu kasutatakse funktsiooni nimega funktsiooni deklareerimiseks bash -skriptis. Funktsiooni saab nimetada ainult funktsiooni nimega bash -is. Bash ei toeta funktsiooni argumente nagu teine ​​standardne programmeerimiskeel. Kuid väärtuse saab bash -funktsioonile edastada ka käesolevas jaotises näidatud viisil. Väärtuse saab funktsioonist tagastada koos tagastusavaldusega või ilma tagastuslauset kasutamata.

Looge järgmise skriptiga bash -fail, et teada saada, kuidas funktsioone bash -skriptis deklareerida ja kutsuda. Skriptis on deklareeritud kolm funktsiooni. Esimene funktsioon deklareeritakse lihtsa sõnumi printimiseks, Bashi programmeerimine algajale . Teine funktsioon on deklareeritud muutujale stringiväärtuse määramiseks, $ return_str mis trükib, Õppige Linuxi vihje abil bash -programmeerimist pärast funktsiooni helistamist. Kolmas funktsioon on deklareeritud lugema argumendi väärtust ringraadiusena, mis antakse funktsiooni kutsumise ajal. Siin, kohalik kasutatakse argumendi väärtuse lugemiseks. See funktsioon arvutab ringi pindala raadiuse väärtuse alusel, kasutades valemit, πr2 ja printige arvutatud ala väärtus.

func.sh

#!/bin/bash

#Deklareerige lihtne funktsioon
funktsiooniprint_message()
{
viskas välja 'Bashi programmeerimine algajale'
}

#Deklareeri funktsioon stringi väärtuse tagastamiseks
funktsiooniret_strdata()
{
#Initsialiseeri muutuja stringi väärtusega
return_str='Õppige Linuxi vihjega bash -programmeerimist'
}

#Deklareerige funktsioon argumendi väärtuse lugemiseks
funktsiooniarvuta_piirkond()

#Lugege läbitud argumendi väärtust
kohalik raadius=$ 1
piirkonnas= $(viskas välja $ raadius*$ raadius*3.14

#Helistage lihtsa sõnumi printimiseks
print_message

#Helistage funktsioonile, mis määrab muutujale stringiväärtuse
ret_strdata

#Printige muutuja väärtus
viskas välja $ return_str

#Lugege raadiuse väärtust
viskas välja 'Sisestage raadiuse väärtus'
loetööd

#Helistage raadiuse väärtusega funktsioonile
arvuta_piirkond$ rad

Väljund:

Käivitage skript.

$löömafunc.sh

Pärast skripti käivitamist kuvatakse järgmine väljund. Esimesed kaks rida prinditakse, helistades funktsioonidele, print_message () ja ret_strdata () . Viimane rida prinditakse funktsiooni kutsudes, arvuta_piirkond () sisendraadiuse väärtusega.

Kui soovite teada stringi tagastamisest bash -funktsioonist, saate seda teha see õpetus .

Mine üles

Programmide kutsumine skriptiga

Te saate kasutada mitut tüüpi käske, et helistada teistele programmidele mis tahes bash -skriptis, näiteks allikas, bash, eval, täideviija , jne. Oletame, et kolm bash -faili, add.sh , lahutama.sh, korrutada.sh ja jagada.sh loodud liitmiseks, lahutamiseks, korrutamiseks ja jagamiseks. Siin, lahutama.sh ja jagunemine.sh loe käsurea argumente. Kõigi nende nelja faili skript on toodud allpool.

add.sh

#!/bin/bash
et=60
b=40
((tulemus=$ a+$ b))
viskas välja 'Lisamine$ a+$ b=$ tulemus'

lahutama.sh

#!/bin/bash
et=$ 1
b=2 dollarit
((tulemus=$ a-$ b))
viskas välja 'Lahutamine$ a-$ b=$ tulemus'

korrutada.sh

#!/bin/bash
((tulemus=$ 1*2 dollarit))
viskas välja '1 ja 2 dollari korrutamine on$ tulemus'

jaga.sh

#!/bin/bash
et=$ 1
b=2
((tulemus=$ a/$ b))
viskas välja 'Jagunemine$ akõrval$ bon$ tulemus'

Looge bash -fail nimega, callpro.sh järgmise skriptiga, et helistada mainitud bash -failidele, kasutades käske source, bash, eval ja exec. Enne järgmise skripti käivitamist peate määrama ülaltoodud nelja faili täitmisloa. Helistamiseks kasutatakse käsku 'source' add.sh faili. käsku 'bash' kasutatakse faili subtract.sh täitmiseks. käsku 'eval' kasutatakse faili multiply.sh käivitamiseks. Käsu 'eval' käsurea argumentidena saadetakse kaks sisendväärtust. Viimane käsk on käsk exec, mis töötab ainult absoluutse tee korral. Selleks on skriptis antud faili divide.sh täielik tee nimi.

callpro.sh

#!/bin/bash
skript 1='add.sh'
skript2='lahutama.sh'
skript3='multiply.sh'
skript4='/home/fahmida/code/divide.sh'

allikas '$ script1'

lööma $ script2 viiskümmend kakskümmend

viskas välja 'Sisestage a väärtus'
loeet
viskas välja 'Sisestage b väärtus'
loeb
eval lööma $ script3 $ a $ b
täideviija $ script4 30

Väljund:

Käivitage skript.

$löömacallpro.sh

Pärast skripti käivitamist kuvatakse järgmine väljund.

Mine üles

Menüüde loomine

Bashis on kasulik käsk lihtsa menüü loomiseks, mida nimetatakse 'vali' käsk. Selle käsu abil saab luua erinevat tüüpi menüüsid. Selle käsu abil menüü loomiseks kasutatakse konkreetset andmeloendit. Kasutamise nägemiseks looge järgmise koodiga bash -fail 'vali' käsk menüü loomiseks. Selles näites prinditakse viie üksuse loend menüüna ja see palub kasutajal valida loendist mis tahes keele. Valitud väärtus salvestatakse muutujale, $ keel mis trükitakse hiljem, sidudes teise stringiga. Skript küsib pidevalt keele valimist, kuni kasutaja vajutab 6 skripti järgi lõpetada.

menu.sh

#!/bin/bash

#Printige sõnum kasutajale
viskas välja 'Valige oma lemmik keel'

# Määrake menüüelemendi loend
valikeelsisseC# Java PHP Python Bash Välju
teha
#Printige valitud väärtus
kui [[ $ keel=='Välju' ]]
siis
väljumine 0
muidu
viskas välja 'Valitud keel on$ keel'
olla
tehtud

Väljund:

Käivitage skript.

$löömamenu.sh

Vastavalt järgmisele väljundile vajutas kasutaja esimest korda nuppu 3, mis printis PHP -d, ja vajutas teist korda nuppu, mis lõpetas skripti.

Kui soovite rohkem teada saada bash -menüü loomisest valikuga „select”, võite külastada seda õpetust.

Mine üles

Käsurea töötlemine

Mõnikord peame käsurealt skripti käivitades esitama sisendväärtused. Seda ülesannet saab bash'is teha kahel viisil. Üks võimalus on kasutada argumendimuutujaid ja teine ​​võimalus on kasutada funktsiooni getopts. Selles jaotises on näidatud käsurea sisendandmete lugemine terminalist argumentmuutuja abil.

Looge käsurea argumendi väärtuse kasutamise nägemiseks järgmise skriptiga bash -fail. See skript loeb kolm käsurea argumenti, mis salvestatakse muutujatesse $ operand1, $ operand2 ja $ operator. Skripti nõuetekohaseks täitmiseks peavad esimese ja kolmanda argumendi väärtuseks olema number ning teise argumendi väärtus peab olema ükskõik milline neljast aritmeetilisest operaatorist („+”, „-”, „/”, „x”). kui avaldus kontrollib $ operaatori väärtust ja teeb operatsiooni põhjal operatsiooni ning prindib väärtuse.

cl1.sh

#!/bin/bash

#Printige argumendi muutujad
viskas välja „Argumendi väärtused on: $ 1 $ 2 $ 3”

# Salvestage argumentide väärtused
operand 1=$ 1
operand2=3 dollarit
operaator=2 dollarit

#Kontrollige aritmeetilise toimingu tegemiseks teise käsu argumendi väärtust
kui [[ $ operaator=='+' ]]
siis
((tulemus=$ operand1+$ operand2))
elif [[ $ operaator=='-' ]]
siis
((tulemus=$ operand1-$ operand2))
elif [[ $ operaator=='x' ]]
siis
((tulemus=$ operand1*$ operand2))
elif [[ $ operaator=='/' ]]
siis

((tulemus=$ operand1/$ operand2))
olla

# printige tulemus
viskas välja -Ja 'Tulemus on =$ tulemus'

Väljund:

Käivitage skript.

$löömacl1.sh

Skript käivitatakse nelja tüüpi aritmeetikaoperaatorite jaoks neli korda. Argumendi väärtuste jaoks kuvatakse järgmine väljund, 6 + 3, 6 - 3, 6 x 3 ja 6/3 .

Argumendi väärtusi saab edastada nime-väärtuse paariga bash-is. Looge järgmise skriptiga bash -fail, et näidata, kuidas nimega argumendi väärtusi lugeda. Skript loeb kahte argumendimuutujat. Nimega argumendi väärtused trükitakse skripti esimesse lausesse. Järgmisena kasutatakse for -tsüklit käsurea argumentide väärtusi sisaldava massiivi kordamiseks. Massiivi iga element eraldatakse võtme-väärtuse paariks käsuga 'cut'. Järgmisena kasutatakse juhtumivõtet konkreetse sõnumi printimiseks võtmeväärtuse alusel.

cl2.sh

. #! /olen/lööma

#Printige argumendi muutujad
viskas välja „Argumendi väärtused on: $ 1 $ 2”

#Lugege iga argumenti eraldi, kasutades tsüklit
eestvihanesisse '[email protected]'
teha

#Eraldage argumendi nimi ja väärtus
võti= $(viskas välja $ arg | lõigatud -f1 -d=)
väärtus= $(viskas välja $ arg | lõigatud -f2 -d=)

#Printige sõnum argumendi nime põhjal
juhtum $ võti sisse
nimi) viskas välja 'Õpilase nimi =$ väärtus';;
märk) viskas välja 'Saadud märk =$ väärtus' ;;
*)
esac
tehtud

Väljund:

Käivitage skript järgmiste käsurea argumentidega.

$löömacl2.shnimi= Abir Hossainmärk=90

Ülaltoodud käskudes on esitatud kaks käsurea argumenti. Need on nimi = Abir Hossain ja märk = 90 . nimi ja märke eraldatakse skriptiga ja pärast väljundi vormindamist trükitakse kaks väärtust.

Käsurea argumentide töötlemine, kasutades getopts funktsiooni selles juhendis ei käsitleta. Kui soovite teada käsurea töötlemise kohta, kasutades getopts funktsiooni, siis saate külastada seda õpetust .

Mine üles

Aritmeetika

Aritmeetiliste toimingute tegemine on iga programmeerimiskeele tavaline nõue. Bash teeb aritmeetilisi toiminguid teistmoodi kui mõni teine ​​tavaline programmeerimiskeel. Bashis saab aritmeetilisi toiminguid teha mitmel viisil. Selles jaotises on näidatud üks aritmeetilise toimingu tegemise lihtsatest viisidest. Looge bash -fail järgmise skriptiga. Selles skriptis on näidatud nelja tüüpi aritmeetilisi toiminguid. Lihtsaid summeerimis- ja jagamisoperatsioone näidatakse skripti alguses kahekordsete sulgude abil. Järgmisena kuvatakse suurendamiseelne toiming. Lõpuks on skripti viimases osas näidatud kiiroperaatori kasutamise viis.

arith.sh

#!/bin/bash
# Arvutage summa
tulemus= $((viiskümmend+25))
# Printige summeerimisväärtus
viskas välja 'summa =$ tulemus'

# Arvutage jaotus
tulemus= $((viiskümmend/25))
# Prindi jaotuse väärtus
viskas välja jaotus =$ tulemus'

# Määrake väärtusele N
N=10
# Kasvab eelnevalt
((--N))
# Printige väärtus N
viskas välja 'Väärtus pärast kahandamist =$ N'

# Kasutades kiiroperaatorit
((N +=10 ))
# Printige väärtus N
viskas välja „Väärtus pärast 10 lisamist =$ N'

Väljund:

Käivitage skript.

$löömaarith.sh

Pärast skripti käivitamist kuvatakse järgmine väljund.

Kõik aritmeetilised toimingud tehakse ülaltoodud skripti topelt sulgudes. Kuid võite kasutada ' lase ',' väljend 'Ja' bc 'Käsk teha aritmeetiline operatsioon bashis. Kui soovite nende käskude kohta bash aritmeetiliste toimingute kohta rohkem teada saada, võite külastada seda õpetust.

Mine üles

Stringide manipuleerimine

Bashi stringi andmetega saab teha mitut tüüpi ülesandeid. Mõned neist ühendavad stringi, võrdlevad stringi, jagavad stringi, muudavad stringi väiketähte jne. Stringitoimingute tegemiseks pole sisseehitatud stringifunktsioone, nagu teised bash-i standardkeeled. Selle õpetuse selles osas käsitletakse mõningaid tavalisi stringi manipuleerimisi.

Ühendav string

Kahe või enama stringi liitmist nimetatakse stringide ühendamiseks. Nöör ühendatakse bash'is üksteise järel asetades. Stringide liitmise kasutamise näitamiseks looge järgmise skriptiga bash -fail. Kaks stringimuutujat initsialiseeritakse ja prinditakse pärast muutujate kombineerimist. Siin on sisu $ string1 ja $ string2 ühendatakse ja trükitakse.

concat.sh

#!/bin/bash

#Initsialiseeri esimene stringimuutuja
string1='Mulle meeldib '
#Initsialiseeri teine ​​stringimuutuja
string2='Bashi programmeerimine'
#Printige pärast mõlema stringi ühendamist
viskas välja '$ string1$ string2'

Väljund:

Käivitage skript.

$löömaconcat.sh

Pärast skripti käivitamist kuvatakse järgmine väljund.

Sellest õpetusest saate rohkem teada stringide ühendamise kohta.

Mine üles

Stringi võrdlemine

Bash kasutab stringi andmete võrdlemiseks erinevat tüüpi operaatoreid. Looge järgmise skriptiga bash -fail, et näidata, kuidas kahte stringi andmeid võrrelda. Stringi väärtust peetakse skripti sisendiks, mida võrreldakse teise stringiga. Kui väärtus kattub, kuvatakse teade, Sulle meeldib Python trükitakse muidu Sulle meeldib PERL trükitakse.

võrdle.sh

#!/bin/bash
viskas väljaSisestage mis tahes stringi väärtus
loeteksti

#Kontrollige, kas sisendandmed on Pythoniga samaväärsed
kui [ $ tekst=='Python' ];siis
viskas välja 'Sulle meeldib Python.'
muidu
viskas välja 'Sulle meeldib PERL'
olla

Väljund:

Käivitage skript.

$löömavõrdle.sh

Pärast skripti käivitamist kuvatakse järgmine väljund, mille sisendväärtus on „PERL”.

Stringide võrdlemise kohta saate rohkem teavet siit seda õpetust .

Stringi jagamine

Bashil pole stringi andmete jagamiseks sisseehitatud jagamisfunktsiooni. Stringiandmeid saab bash -is jagada mitmel viisil, lähtudes erinevat tüüpi eraldajatest. Looge järgmise skriptiga bash -fail, et näidata, kuidas stringi andmeid saab bashiks jagada. Stringi väärtus võetakse sisendiks. See skript jagab väärtuse $ tekst ruumi põhjal. Siin, IFS muutujat kasutatakse eraldaja määramiseks. `loe` käsku kasutatakse siin tekstiväärtuse jagamiseks ja väärtuste salvestamiseks massiiviks. eest tsüklit kasutatakse massiivi kordamiseks ja iga elemendi väärtuse printimiseks.

split.sh

#!/bin/bash
#Sisestage stringi väärtus
viskas väljaSisestage stringi väärtus
loeteksti
# Määrake eraldaja
IFS=''
#Jagage $ teksti väärtus tühikutega piiritletud massiivi
loe -juurdearr<<< '$ tekst'
# Printige massiivi iga väärtus
eestväärtussisse '$ {arr [@]}';
teha
printf '$ väärtus n'
tehtud

Väljund:

Käivitage skript.

$löömasplit.sh

Pärast sisendi võtmist kuvatakse järgmine väljund, Õppige Bashi programmeerimist . See sisendväärtus koosneb kolmest sõnast. Niisiis, string on jagatud kolmeks osaks.

Stringide võrdlemise kohta saate rohkem teavet siit seda õpetust .

Stringi väiketähtede muutmine

Enamikul skriptikeeltel on stringi andmete väiketähtede muutmiseks sisseehitatud funktsioonid. Kuid stringi andmete juhtumit saab bash -is muuta, kasutades 'tr' käsuga või kasutades ': Ülemine' ja ': Madalam' märksõnad. Looge bash -fail järgmise skriptiga, et teada saada, kuidas bash -i väiketähti muuta. Siin teisendatakse esimesed stringi andmed suurtähtede abil '^^' sümbol ja teine ​​string teisendatakse väiketähtede abil 'tr' käsk. 'tr' käsk otsib stringist kõik suured tähed ja teisendab märgid väiketähtedeks.

juhtum.sh

#!/bin/bash

#Initsialiseeri esimesed stringi andmed
tekst1='[email protected]'

#Printige $ text1 väärtus, teisendades kõik märgid suurtähtedeks
viskas välja $ {email ^^}

#Initsialiseeri teise stringi andmed
tekst2= 'Bashi programmeerimise põhitõed'

#Printige $ text2 väärtus, teisendades kõik suured tähed väiketähtedeks
viskas välja $ text2 | NS [: ülemine:] [: madalam:]

Väljund:

Käivitage skript.

$löömajuhtum.sh

Pärast skripti käivitamist kuvatakse järgmine väljund.

Stringide võrdlemise kohta saate rohkem teavet siit seda õpetust .

Mine üles

Stringiandmete lugemine silmuse kaudu

Stringiandmed töötavad mis tahes programmeerimiskeele märgimassiivina. Kuidas ' eest 'Tsüklit saab kasutada stringi andmete lugemiseks bash'is, selles jaotises on näidatud. Loo baasfail järgmise skriptiga, et lugeda stringi väärtuse iga osa, kasutades tsüklit.

readstr.sh

#!/bin/bas
# Lugege iga teksti sõna silmuse abil
eestväärtussisseBashi programmeerimineeestalgajad
teha
viskas välja $ väärtus
tehtud

Väljund:

Käivitage skript.

$löömareadstr.sh

Pärast skripti käivitamist kuvatakse järgmine väljund.

Stringiandmete kordamise kohta saate lisateavet, kasutades silmust allikast seda õpetust .

Mine üles

Tagastuskoodide tagastamine skriptist ja teise skripti püüdmine

Üks bash -skript saab skripti helistades ja kasutades kasutada skripti tagastamiskoode '$?' tagastusväärtuse lugemiseks. Oletame, et bash -fail nimega esimene.sh tagastab pärast täitmist koodi. Looge teine ​​bash -fail nimega teine.sh ja lisage järgmine skript tagastusväärtuse saamiseks ja mõne muu toimingu tegemiseks. Mõlema faili kood on toodud allpool. esimene.sh failist helistatakse teine.sh faili skripti alguses. esimene.sh tagastab sisendväärtuse põhjal väljumiskoodi. second.sh püüab koodi kinni '$?' ja võrrelge 1. Kui mõlemad väärtused on võrdsed, prinditakse see välja, Sisendarv on suurem kui 100 , muidu prinditakse, Sisendarv on väiksem või võrdne 100 -ga .

esimene.sh

#!/bin/bash

viskas välja 'Sisestage arvväärtus'
loen

# Kontrollige, kas sisendväärtus on väiksem või võrdne 100 või mitte
kui [[ $ n -neid 100 ]]
siis
väljumine 0
muidu
väljumine 1
olla

teine.sh

#! /bin/bash

#Täitke fail, first.sh
lööma 'first.sh'

#Kontrollige, kas tagastamiskood on 1 või mitte
kui [ $? -ekv 1 ]
siis
viskas välja 'Sisendarv on suurem kui 100'
muidu
viskas välja 'Sisendarv on väiksem või võrdne 100'
olla

Väljund:

Käivitage skript.

$löömateine.sh

Järgmine väljund kuvatakse, kui skripti täidetakse 55 ja 110 kaks korda.

Mine üles

Failide lugemine ja kirjutamine

Failide lugemine ja kirjutamine on bash -programmeerimise tavalised nõuded. Bashil pole faili lugemiseks või kirjutamiseks ühtegi sisseehitatud funktsiooni, nagu mõni muu keel. Faili bash -vormingus lugemiseks on mitu võimalust. Kõige tavalisem viis faili lugemiseks või kirjutamiseks bash -is on kasutamine 'kass' käsk. Kuid seda käsku kasutatakse kogu faili sisu korraga lugemiseks. Samuti saate rida -realt lugeda mis tahes faili, kasutades mis tahes tsüklit ja `loe` käsk. Kasutades ümbersuunamisoperaatorit, '>' , saate andmeid kirjutada mis tahes bash -faili. Kui soovite andmeid mis tahes faili lisada, peate seda kasutama '>>' operaator. Nii lugemis- kui ka kirjutamistoiminguid näidatakse selle jaotise järgmises osas.

Faili lugemine bash

Looge järgmise skriptiga bash -fail, et lugeda olemasolevat faili nimega „ hardware.txt ’. Selle faili sisu on toodud allpool. Skriptis loetakse kogu faili sisu 'kass' käsku esimene ja järgmine, samas kui tsüklit kasutatakse faili ridade kaupa lugemiseks.

hardware.txt

Monitor
Klaviatuur
Hiir
Skanner
Printer

readfile.sh

#!/bin/bash

viskas välja 'Faili lugemine kassi käsu abil'

# Lugege faili sisu käsuga 'cat'
sisu=''kasshardware.txt''
viskas välja $ sisu

viskas välja 'Faili lugemine rida -realt silmuse abil'

# Määrake failinimi
faili nimi='hardware.txt'

# Faili iga rida loetakse silmuse iga iteratsiooni abil
samas loerida;
teha
# printige rida
viskas välja $ rida
tehtud<$ failinimi

Väljund:

Käivitage järgmised käsud.

$kasshardware.txt
$löömareadfile.sh

Siin prindib esimene käsk faili sisu, hardware.txt ilma bash -skripti käivitamata ja teine ​​käsk käivitab skripti readfile.sh ja printige faili sisu kaks korda, kasutades 'kass' käsk ja `loe` käsk while loopiga. Saate seda külastada õpetus failide ridade kaupa lugemise kohta lisateavet.

Faili kirjutamine bash -vormingus

Looge järgmise skriptiga bash -fail uue sisu kirjutamiseks uude faili ja selle faili andmete lisamiseks.

writefile.sh

#!/bin/bash

viskas välja 'Sisestage tekst'
#Lugege stringi andmeid
loestr1
#Lisage esmakordselt faili sisendandmed
viskas välja $ str1 >test.txt

viskas välja 'Sisestage mõni muu tekst'
#Lugege teisi stringi andmeid
loestr2
#Lisage sisestatud andmed faili lõppu
viskas välja $ str2 >>test.txt

#Näidake faili täielikku sisu
viskas välja ''kasstest.txt''

Väljund:

Käivitage skript.

$löömawritefile.sh

Pärast skripti käivitamist kuvatakse järgmine väljund.

Mine üles

Torud

Toru kasutatakse mis tahes käsu väljundi suunamiseks teise käsusisendisse. Seda saab kasutada eri tüüpi bash -käskude vahel konkreetse väljundi genereerimiseks. Standardne sisend on ühendatud Linuxi standardväljundiga toru kaudu. Soovitud väljundi saamiseks peate käsu järjestama toru (|) sümboliga. Pipi abil saab ühe käsuna täita kaks või enam käsku. Sama ülesande täitmiseks peate täitma mitu käsku mitmel real ilma toruta. Niisiis on toru kasutamine väga kasulik mitut tüüpi ülesannete lühikeseks tegemiseks.

süntaks:

käsk 1|käsk 2|...

Siin edastatakse käsu1 väljund käsu2 sisendina.

Sama tüüpi ülesandeid tehakse toruga ja ilma toruta selle jaotise järgmises osas. Oletame tekstifaili nimega marks.txt antakse koos järgmiste andmetega.

marks.txt

Asraf CSE-409 79

Kabir CSE-304 95

Keya CSE-101 67

Asraf CSE-304 88

Keya CSE-409 90

Asraf CSE-101 92

Peate faili andmed sorteerima ja uurima ja printima kõik õpilase nime „K” kirjed jah ' . Seda ülesannet saate teha, käivitades mitu käsku ilma toru kasutamata, mis on näidatud järgmises jaotises. Soovitud väljundi saamiseks tuleb käivitada järgmised käsud. Esimene käsk sorteerib faili. Teine käsk otsib kirjet „K jah ' kasutades ` haaret `käske ja salvestage väljund temp.txt faili. Kolmas käsk loeb kokku a read temp.txt faili kasutades 'wc' käsk.

$sorteerimamarks.txt
$haaret 'Keya'marks.txt>temp.txt
$tualett -neidtemp.txt

Väljund:

Failis on kaks õpilase kirjet „Keya”. Nii et pärast ülaltoodud käskude käivitamist ilmub järgmine väljund.

Saate hõlpsalt ühendada ülaltoodud kolm käsku ja saada sama väljundi, käivitades ühe käsu toruga, mis on näidatud järgmises käsus. Väljundi saamiseks pole siin vaja ajutist faili. Siin on väljund ` sorteerima 'käsk edastatakse sisendina' haaret `käsk ja` väljund haaret käsku edastatakse 'wc' käsk.

$sorteerimamarks.txt| haaret 'Keya' | tualett -neid

Väljund:

Pärast ülaltoodud käsu käivitamist saate järgmise väljundi nagu eelmise käsu väljund. Käsu väljund on 2.

Mine üles

Järeldus:

Selles õpetuses püütakse käsitleda kõige kasulikumaid ja vajalikke bash -skriptikeele teemasid. Loodetavasti saab lugeja sellest õpetuse lugemisest kasu ja saab bash -skripti tõhusamalt kirjutada.