Bash Scripting Tutorial za začetnike

Bash Scripting Tutorial



Privzeti ukazni jezik Linuxa je skript Bash. V Linuxu moramo dnevno izvajati številne ukaze za različne namene. Te dnevne naloge je mogoče avtomatizirati z uporabo bash skripta. Vsak uporabnik se lahko tega skriptnega jezika nauči zelo enostavno in hitro. Če ste nov pri programiranju bash, je ta vadnica za vas.

Vsebina:

  1. Komentarji
  2. ukaz echo
  3. Spremenljivke
  4. Pogojna izjava
  5. Zanke
  6. Funkcije
  7. Klicanje programov v skripti
  8. Ustvarjanje menijev
  9. Obdelava ukazne vrstice
  10. Aritmetika
  11. Manipulacija niza
  12. Vrnitev povratnih kod iz skripta in ulov v drugem skriptu
  13. Branje in pisanje v datoteke
  14. Cevi

Komentarji

Dodajanje komentarjev s kodo je bistven del vsakega programskega jezika. Komentarji se ob izvedbi ne razčlenijo s skriptom. Bralnik lahko pravilno razume katero koli kodo, če je koda dobro komentirana. Komentar lahko dodate na več načinov v bash skriptu. V tem delu je prikazano, kako lahko v bash skript dodate komentarje z eno in več vrsticami. Ustvarite bash datoteko z naslednjim skriptom, če želite poznati uporabo bash komentarja. Tukaj se simbol '#' uporablja za dodajanje komentarja v eni vrstici, enojni narekovaj (') z': 'pa za dodajanje komentarjev v več vrsticah.







bash_comment.sh



#!/bin/bash
#Vzemite številko za vnos
vrgel ven 'Vnesite številko'
prebratido
:'
Preverite vnosno številko
manj kot 10 ali več kot 10 ali enako 10
'

če [[ $ a -l 10 ]]
potem
vrgel ven 'Število je manjše od 10'
elif [[ $ a -gt 10 ]]
potem
vrgel ven 'Število je večje od 10'
drugače
vrgel ven 'Število je enako 10'
biti

Izhod:



Zaženite skript.





$bashbash_comment.sh

Tu se skript izvede trikrat z vhodno vrednostjo 3, 10 in 90. Prikazal se bo naslednji izhod.



Če želite izvedeti več o bash komentiranju, lahko preverite ta vadnica .

Pojdi na vrh

ukaz echo

Ukaz `echo` se uporablja v bash za tiskanje izhodov v terminalu. Z ukazom echo v bash lahko uporabite različne možnosti za tiskanje izpisa na različne načine. Ustvarite bash datoteko z naslednjim skriptom, če želite poznati dve preprosti uporabi ukaza `echo`. Tu bo prvi ukaz 'echo' natisnil preproste besedilne podatke z novo vrstico, drugi ukaz echo pa preprosto besedilo brez nove vrstice.

echo_test.sh

#!/bin/bash
#Natisnite prvo besedilo
vrgel ven 'Natisni besedilo z novo vrstico'
#Natisnite drugo besedilo
vrgel ven -n 'Natisni besedilo brez nove vrstice'

Izhod:

Zaženite skript.

$bashecho_test.sh

Po izvedbi zgornjega ukaza se prikaže naslednji izhod.

Ukaz `echo` v bashu ima veliko drugih uporab. Če želite izvedeti več o ukazu `echo`, si oglejte to vadnico.

Pojdi na vrh

Spremenljivke

Izjava spremenljivke je nujen del vsakega programskega jezika. Basove spremenljivke je mogoče razglasiti na različne načine. Ko je vrednost dodeljena spremenljivki, se na začetku spremenljivke ne uporablja simbol. Simbol '$' se uporablja z imenom spremenljivke v času branja vrednosti spremenljivke. Spremenljivko lahko uporabite s terminala ali pa v kateri koli bash skripti.

Naslednji ukazi bodo razglasili spremenljivko niza z imenom mystr z določeno vrednostjo in naslednjim natisnite vrednost spremenljivke v terminalu.

$mystr='Všeč mi je programiranje bash'
$vrgel ven $ mystr

Izhod:

Ustvarite bash datoteko z naslednjim skriptom. Tu sta deklarirani dve spremenljivki. To so $ a in b . Če je vhodna vrednost, ki je shranjena v $ a je enako b potem sporočilo, Številke so enake bo natisnjena drugače Številke niso enake bo natisnjena.

var.sh

#!/bin/bash
vrgel ven 'Vnesite številko'
prebratido
b=100
če [[ $ a -ekv b ]]
potem
vrgel ven 'Številke so enake'
drugače
vrgel ven 'Številke niso enake'
biti

Izhod:

Zaženite skript.

$bashvar.sh

Zgornji ukaz se izvede dvakrat z vrednostjo 56 in 100. Prikazal se bo naslednji izhod.

Če želite izvedeti več o spremenljivkah bash, lahko preverite ta vadnica .

Pojdi na vrh

Pogojna izjava

Tako kot drug programski jezik lahko tudi v bash uporabite pogojni stavek. ' Če-potem-drugače 'In' Ovitek 'Stavki se večinoma uporabljajo za izvajanje stavkov pogojev v katerem koli programskem jeziku. Uporaba pogojnega stavka z uporabo 'Če' stavek je prikazan v tem razdelku te vadnice. Ustvarite bash datoteko z naslednjim skriptom, kjer se uporablja pogojni stavek. Tukaj bosta uporabniku vzeta dve vrednosti kot vhodni in shranjeni v spremenljivkah, koda $ , in $ starost . Stavek 'if' se uporablja za preverjanje vrednosti $ starost je večji ali enak 18 in vrednost koda $ je 1100 . Če sta oba pogoja resnična, se prikaže sporočilo, Film si lahko ogledate bo natisnjena drugače Nimate pravice do ogleda filma bo natisnjena.

cond.sh

#!/bin/bash

vrgel ven 'Vnesite kodo'
prebratiKoda
vrgel ven 'Vnesite svojo starost'
prebratistarost

če [[ $ starost -daj 18 && koda $ -ekv '1100' ]]
potem
vrgel ven 'Film si lahko ogledate'
drugače
vrgel ven 'Niste upravičeni do ogleda filma'
biti

Izhod:

Zaženite skript.

$bashcond.sh

Naslednji izhod se prikaže po sprejemu različnih vhodnih vrednosti. 1100 je podano kot koda, 5 pa kot starost za prvo izvedbo in če za te vrednosti vrne pogoj false. 1100 je podano kot koda, 45 pa kot starost za drugo izvedbo, ki vrne true za if pogoj.

Če želite izvedeti več o pogojni izjavi bash, si oglejte to vadnico.

Pojdi na vrh

Zanke

Ko je treba nekatere dele skripta izvesti večkrat, se zanka uporabi za izvedbo naloge. Bash podpira tri vrste deklariranja zank, podobno kot drugi jeziki. To so zanke, medtem ko in dokler. Na podlagi programskih zahtev se v skriptu uporablja določena zanka. Uporaba teh treh vrst zank je prikazana v tem razdelku z uporabo preprostih primerov.

Z uporabo zanke for

Ustvarite bash datoteko z naslednjim skriptom, kjer ` za` zanka se uporablja za ponovitev. `za` zanka se večinoma uporablja za ponovitev seznama podatkov ali matrike. Tu se uporablja seznam imen delavnikov in vsak dan v tednu se ponavlja s pomočjo zanke for. 'če' stavek se uporablja za tiskanje določenega sporočila glede na ime delavnika.

for.sh

#Preberite ime delavnika v vsaki ponovitvi zanke
zadanvponedeljek torek sreda četrtek petek sobota nedelja
naredi

#Preverite, da je ime med tednom ponedeljek ali četrtek
če [[ $ dan=='Ponedeljek' || $ dan=='Četrtek' ]]
potem
vrgel ven 'Srečanje se nadaljuje$ danob 9.30 uri

#Preverite, ali je ime med tednom torek ali sreda ali petek
elif [[ $ dan=='Torek' || $ dan=='Sreda' || $ dan=='Petek' ]]
potem
vrgel ven 'Trening naprej$ danob 11.00 uri
drugače

#Natisnite 'Počitnice' za druge dni
vrgel ven '$ danje praznik '
biti
Končano

Izhod:

Zaženite skript.

$bashfor.sh

Po zagonu skripta se prikaže naslednji izhod.

Če želite izvedeti več o uporabi bash for zanke, si oglejte to vadnico.

Uporaba zanke while

Ustvarite bash datoteko z naslednjim skriptom, kjer ` medtem ko ` zanka se uporablja za ponovitev. Ta skript bo natisnil tiste številke od 1 do 20, ki so sodo in deljivo s 5. Tukaj, $ števec spremenljivka se uporablja za nadzor ponovitve zanke, vrednost te spremenljivke pa se v vsaki ponovitvi poveča za 1. Kdaj 'če' pogoj bo vrnil true, potem bo natisnil vrednost $ števec .

#!/bin/bash

#Natisnite sporočilo
vrgel ven 'Natisnite številke, ki so sodo in deljivo s 5'

#Inicializirajte števec
števec=1

#Ponavljajte zanko, dokler vrednost števca $ ni manjša ali enaka 20
medtem [ $ števec - dvajset ]
naredi

#Preverite, ali je števec $ deljiv z 2 in 5
če [[ $ števec%2-ekv 0 && $ števec%5-ekv 0 ]]
potem
#Natisni $ counter brez nove vrstice
vrgel ven '$ števec'
biti

#Povečajte števec $ za 1
((števec ++))
Končano
vrgel ven 'Končano'

Izhod:

$bashwhile.sh

V 1-20 so samo številke, ki so parne in deljive s 5. Naslednji izhod se prikaže po zagonu skripta.

Če želite izvedeti več o uporabi bash ` medtem ko` zanko, potem lahko preverite ta vadnica .

Z uporabo zanke while

Ustvarite bash datoteko z naslednjim skriptom, kjer ` do` zanka se uporablja za ponovitev. Ta skript bo natisnil vsa liha števila od 0 do 20. $ n spremenljivka se v tem skriptu uporablja za ponovitev zanke.

dokler.sh

#!/bin/bash

#Inicializirajte spremenljivko, n
n=dvajset

#Ponavljajte zanko, dokler vrednost $ n ne preseže 0
dokler [ $ n -l 0 ]
naredi

#Preverite, da je vrednost n liha
če [[ $ n%2-gt 0 ]]
potem
vrgel ven $ n
biti

#Povečajte vrednost n za 1
((n=$ n-1))
Končano

Izhod:

Zaženite skript.

$bashdokler.sh

Skript bo natisnil vsa parna števila od 20 do 1. Po zagonu skripta se prikaže naslednji izhod.

Pojdi na vrh

Funkcije

Kadar je treba kodo bloka večkrat izvesti v skriptu, se funkcija uporabi za opravljanje naloge. Funkcijo boste morali poklicati po imenu le, če se mora skript, definiran v funkciji, večkrat izvesti, namesto da večkrat dodate isti skript. Začetni in končni prvi oklepaj se uporablja z imenom funkcije za razglasitev funkcije v bash skriptu. Funkcijo lahko pokličete samo z imenom funkcije v bash. Bash ne podpira funkcijskega argumenta kot drug standardni programski jezik. Toda vrednost je mogoče prenesti v funkcijo bash na drugačen način, ki je prikazan v tem razdelku. Vrednost je mogoče vrniti iz funkcije z izjavo return ali brez uporabe stavka return.

Ustvarite bash datoteko z naslednjim skriptom, če želite vedeti, kako je mogoče funkcije razglasiti in poklicati v bash skriptu. V skriptu so deklarirane tri funkcije. Prva funkcija je razglašena za tiskanje preprostega sporočila, Bash programiranje za začetnike . Druga funkcija je razglašena za dodelitev vrednosti niza v spremenljivki, $ return_str ki bo tiskal, Naučite se bash programiranja z LinuxHintom po klicu funkcije. Tretja funkcija je razglašena za branje vrednosti argumenta kot polmera kroga, ki bo naveden v času klica funkcije. Tukaj, lokalno se uporablja za branje vrednosti argumenta. Ta funkcija bo izračunala površino kroga glede na vrednost polmera po formuli, πr2 in natisnite izračunano vrednost površine.

func.sh

#!/bin/bash

#Razglasite preprosto funkcijo
funkcijoprint_message()
{
vrgel ven 'Bash programiranje za začetnike'
}

#Razglasite funkcijo za vrnitev vrednosti niza
funkcijoret_strdata()
{
#Inicializirajte spremenljivko z vrednostjo niza
return_str='Naučite se bash programiranja z LinuxHintom'
}

#Razglasite funkcijo za branje vrednosti argumenta
funkcijoizračunaj_območje()

#Preberite posredovano vrednost argumenta
lokalno polmer=1 USD
območje= $(vrgel ven polmer $*polmer $*3.14

#Pokličite funkcijo, da natisnete preprosto sporočilo
print_message

#Pokličite funkcijo, ki bo spremenljivki dodelila vrednost niza
ret_strdata

#Natisnite vrednost spremenljivke
vrgel ven $ return_str

#Preberite vrednost polmera
vrgel ven 'Vnesite vrednost polmera'
prebratidelo

#Pokličite funkcijo z vrednostjo polmera
izračunaj_območje$ rad

Izhod:

Zaženite skript.

$bashfunc.sh

Po zagonu skripta se prikaže naslednji izhod. Prvi dve vrstici se bosta natisnili s klicem funkcij, print_message () in ret_strdata () . Zadnja vrstica se natisne s klicem funkcije, izračunaj_območje () s sprejeto vrednostjo vhodnega polmera.

Če želite vedeti o vrnitvi niza iz funkcije bash, lahko ta vadnica the.

Pojdi na vrh

Klicanje programov v skripti

Za klicanje drugih programov v katerem koli bash skriptu lahko uporabite številne vrste ukazov, na primer vir, bash, eval, exec itd. Recimo tri datoteke bash, add.sh , odštej.sh, pomnoži.sh in deljenje.sh ustvarjen za seštevanje, odštevanje, množenje in deljenje. Tukaj, odštej.sh in divizija.sh preberite argumente ukazne vrstice. Spodaj je podan skript vseh teh štirih datotek.

add.sh

#!/bin/bash
do=60
b=40
((rezultat=$ a+b))
vrgel ven 'Dodatek$ a+b=$ rezultat'

subract.sh

#!/bin/bash
do=1 USD
b=2 USD
((rezultat=$ a-b))
vrgel ven 'Odštevanje$ a-b=$ rezultat'

pomnoži.sh

#!/bin/bash
((rezultat=1 USD*2 USD))
vrgel ven 'Pomnožek 1 USD in 2 USD je$ rezultat'

razdeli.sh

#!/bin/bash
do=1 USD
b=2
((rezultat=$ a/b))
vrgel ven 'Delitev$ aavtor:bje$ rezultat'

Ustvarite bash datoteko z imenom, callpro.sh z naslednjim skriptom za klic omenjenih bash datotek z ukazi source, bash, eval in exec. Pred zagonom naslednjega skripta morate nastaviti dovoljenje za izvajanje zgornjih štirih datotek. Za klic se uporablja ukaz `source` add.sh mapa. Ukaz `bash` se uporablja za izvajanje datoteke subtract.sh. Ukaz `eval` se uporablja za izvajanje datoteke multiply.sh. Dve vhodni vrednosti se pošljeta kot argumenta ukazne vrstice za ukaz `eval`. Zadnji ukaz je ukaz exec, ki deluje samo z absolutno potjo. Za to je v skriptu podano celotno ime datoteke divide.sh.

callpro.sh

#!/bin/bash
skript1='add.sh'
skript2='subtract.sh'
skript3='multiply.sh'
skript4='/home/fahmida/code/divide.sh'

vir '$ script1'

bash $ script2 petdeset dvajset

vrgel ven 'Vnesite vrednost a'
prebratido
vrgel ven 'Vnesite vrednost b'
prebratib
eval bash $ script3 $ a b
exec $ script4 30

Izhod:

Zaženite skript.

$bashcallpro.sh

Po zagonu skripta se prikaže naslednji izhod.

Pojdi na vrh

Ustvarjanje menijev

V bashu je uporaben ukaz za ustvarjanje preprostega menija, ki se imenuje `izberi` ukaz. S tem ukazom lahko ustvarite različne vrste menijev. Za ustvarjanje menija s tem ukazom se uporabi določen seznam podatkov. Ustvarite bash datoteko z naslednjo kodo, da si ogledate uporabo `izberi` ukaz za ustvarjanje menija. V tem primeru bo seznam petih elementov natisnjen kot meni in uporabnika pozval, naj izbere kateri koli jezik s seznama. Izbrana vrednost bo shranjena v spremenljivki, $ jezik ki se kasneje natisne z združevanjem z drugim nizom. Skript bo nenehno zahteval izbiro jezika, dokler uporabnik ne pritisne 6 prekiniti iz skripta.

menu.sh

#!/bin/bash

#Natisni sporočilo za uporabnika
vrgel ven 'Izberite svoj najljubši jezik'

# Določite seznam elementov menija
izberitejezikvC# Izhod Java PHP Python Bash
naredi
#Natisnite izbrano vrednost
če [[ $ jezik=='Izhod' ]]
potem
izhod 0
drugače
vrgel ven 'Izbrani jezik je$ jezik'
biti
Končano

Izhod:

Zaženite skript.

$bashmenu.sh

V skladu z naslednjim izhodom je uporabnik prvič pritisnil 3, ki je natisnil PHP, in drugič 6, ki je končal skript.

Če želite izvedeti več o ustvarjanju bash menija z `select`, obiščite to vadnico.

Pojdi na vrh

Obdelava ukazne vrstice

Včasih moramo pri izvajanju skripta iz ukazne vrstice navesti vhodne vrednosti. To nalogo lahko v bashu izvedete na dva načina. Eden od načinov je uporaba spremenljivk argumenta, drugi način pa uporaba funkcije getopts. V tem razdelku je prikazano branje vnosnih podatkov ukazne vrstice s terminala s pomočjo spremenljivke argumenta.

Ustvarite bash datoteko z naslednjim skriptom, da si ogledate uporabo branja vrednosti argumenta ukazne vrstice. Ta skript bo prebral tri argumente ukazne vrstice, ki bodo shranjeni v spremenljivkah, $ operand1, $ operand2 in $ operator. Za pravilno izvedbo skripta morata biti prva in tretja vrednost argumenta število, druga vrednost argumenta pa kateri koli od štirih aritmetičnih operatorjev (‘+’, ‘-’, ‘/’, ‘x’). če stavek bo preveril vrednost operaterja $ in izvedel operacijo na podlagi operaterja ter natisnil vrednost.

cl1.sh

#!/bin/bash

#Natisnite spremenljivke argumenta
vrgel ven 'Vrednosti argumentov so: $ 1 $ 2 $ 3'

# Shrani vrednosti argumentov
operand1=1 USD
operand2=3 USD
operater=2 USD

#Preverite vrednost drugega argumenta ukaza, da izvedete aritmetično operacijo
če [[ $ operator=='+' ]]
potem
((rezultat=$ operand1+$ operand2))
elif [[ $ operator=='-' ]]
potem
((rezultat=$ operand1-$ operand2))
elif [[ $ operator=='x' ]]
potem
((rezultat=$ operand1*$ operand2))
elif [[ $ operator=='/' ]]
potem

((rezultat=$ operand1/$ operand2))
biti

# natisni rezultat
vrgel ven -In 'Rezultat je =$ rezultat'

Izhod:

Zaženite skript.

$bashcl1.sh

Skript se izvede štirikrat za štiri vrste aritmetičnih operaterjev. Za vrednosti argumentov se prikaže naslednji izhod: 6 + 3, 6 - 3, 6 x 3 in 6/3 .

Vrednosti argumenta lahko posredujete s parom ime-vrednost v bash. Ustvarite bash datoteko z naslednjim skriptom, ki bo pokazal, kako prebrati vrednosti argumentov z imenom. Skript bo prebral dve spremenljivki argumenta. Vrednosti argumenta z imenom so natisnjene v prvem stavku skripta. Nato se zanka for uporabi za ponovitev matrike, ki vsebuje vrednosti argumentov ukazne vrstice. Vsak element matrike je z ukazom `cut` ločen v par ključ-vrednost. Nato se stavek primera uporabi za tiskanje določenega sporočila na podlagi vrednosti ključa.

cl2.sh

. #! /sem/bash

#Natisnite spremenljivke argumenta
vrgel ven 'Vrednosti argumentov so: $ 1 $ 2'

#Vsak argument preberite posebej z zanko for
zajezenv '[zaščiteno po e -pošti]'
naredi

#Ločeno ime in vrednost argumenta
ključ= $(vrgel ven $ arg | rezati -f1 -d=)
vrednost= $(vrgel ven $ arg | rezati -f2 -d=)

#Natisni sporočilo glede na ime argumenta
Ovitek $ ključ v
ime) vrgel ven 'Ime študenta =$ vrednost';;
označite) vrgel ven 'Pridobljena oznaka =$ vrednost' ;;
*)
esac
Končano

Izhod:

Zaženite skript z naslednjimi argumenti ukazne vrstice.

$bashcl2.shime= Abir Hossainoznačite=90

V zgornjih ukazih sta navedena dva argumenta ukazne vrstice. To so ime = Abir Hossain in oznaka = 90 . ime in oznake sta ločeni s skriptom, dve vrednosti pa sta natisnjeni po oblikovanju izhoda.

Obdelava argumentov ukazne vrstice z uporabo getopts V tej vadnici funkcija ni obravnavana. Če želite izvedeti o obdelavi ukazne vrstice z uporabo getopts funkcijo, ki jo lahko obiščete ta vadnica .

Pojdi na vrh

Aritmetika

Aritmetična operacija je pogosta zahteva vsakega programskega jezika. Bash izvaja aritmetično operacijo na drugačen način kot drug standardni programski jezik. Aritmetične operacije v bashu so na več načinov. Eden od preprostih načinov izvajanja aritmetične operacije je prikazan v tem razdelku. Ustvarite bash datoteko z naslednjim skriptom. V tem skriptu so prikazane štiri vrste aritmetičnih operacij. Preproste operacije seštevanja in deljenja so prikazane z uporabo dvojnih prvih oklepajev na začetku skripta. Nato je prikazana operacija predprirastka. Nazadnje je način uporabe okrajšanega operaterja prikazan v zadnjem delu skripte.

arith.sh

#!/bin/bash
# Izračunajte vsoto
rezultat= $((petdeset+25))
# Natisni povzetek vrednosti
vrgel ven 'vsota =$ rezultat'

# Izračunajte delitev
rezultat= $((petdeset/25))
# Natisni vrednost delitve
vrgel ven 'delitev =$ rezultat'

# Dodelite vrednost N
N=10
# Izvajanje predhodnega prirastka
((--N))
# Natisnite vrednost N
vrgel ven 'Vrednost po znižanju =$ N'

# Uporaba operaterja stenografije
((N +=10 ))
# Natisnite vrednost N
vrgel ven 'Vrednost po dodajanju 10 =$ N'

Izhod:

Zaženite skript.

$basharith.sh

Po zagonu skripta se prikaže naslednji izhod.

Vse aritmetične operacije se izvedejo z uporabo dvojnih oklepajev v tem zgornjem skriptu. Lahko pa uporabite ' pustiti ',' ekspr 'In' pr 'Ukaz za izvedbo aritmetične operacije v bash. Če želite izvedeti več o teh ukazih za izvajanje aritmetičnih operacij bash, obiščite to vadnico.

Pojdi na vrh

Manipulacija nizov

S podatki nizov v bash je mogoče opraviti veliko vrst nalog. Nekateri združujejo niz, primerjajo niz, razcepijo niz, spremenijo velikost niza itd. V bashu za vklapljanje nizov ni vgrajenih funkcij niza, kot so drugi standardni jeziki. V tem razdelku te vadnice so obravnavane nekatere pogoste manipulacije z nizi.

Povezovalni niz

Dodajanje dveh ali več nizov se imenuje združevanje nizov. Niz se združi v bash tako, da se postavi drug za drugim. Ustvarite bash datoteko z naslednjim skriptom, ki bo prikazal uporabo združevanja nizov. Dve spremenljivki niza se inicializirata in po združitvi spremenljivk natisneta. Tukaj je vsebina $ string1 in $ string2 bodo združene in natisnjene.

concat.sh

#!/bin/bash

#Inicializirajte spremenljivko niza
niz1='Všeč mi je '
#Inicializirajte drugo nizovno spremenljivko
niz2='Bash programiranje'
#Natisnite po združitvi obeh nizov
vrgel ven '$ string1$ string2'

Izhod:

Zaženite skript.

$bashconcat.sh

Po zagonu skripta se prikaže naslednji izhod.

Več o združevanju nizov lahko izveste iz te vadnice.

Pojdi na vrh

Primerjava niza

Bash uporablja različne vrste operaterjev za primerjavo podatkov niza. Ustvarite bash datoteko z naslednjim skriptom, ki bo pokazal, kako primerjati dva podatkovna niza. Vrednost niza se vzame kot vhod v skriptu, ki se primerja z drugim nizom. Če se vrednost ujema, se prikaže sporočilo, Všeč vam je Python bo natisnjena drugače Všeč vam je PERL bo natisnjena.

primerjaj.sh

#!/bin/bash
vrgel venVnesite poljubno vrednost niza
prebratibesedilo

#Preverite, ali so vhodni podatki enakovredni Pythonu
če [ $ besedilo=='Python' ];potem
vrgel ven 'Všeč ti je Python.'
drugače
vrgel ven 'Všeč ti je PERL'
biti

Izhod:

Zaženite skript.

$bashprimerjaj.sh

Naslednji izhod se prikaže po zagonu skripta, kjer je vhodna vrednost 'PERL'.

Več o primerjavi nizov lahko izveste iz ta vadnica .

Razdelitev niza

Bash nima vgrajene funkcije za razdelitev podatkov za niz. Podatke niza lahko razdelite na več načinov v bash na podlagi različnih vrst ločil. Ustvarite bash datoteko z naslednjim skriptom, ki bo pokazal, kako lahko podatke niza razdelite na bash. Za vnos se vzame vrednost niza. Ta skript bo razdelil vrednost $ besedilo temelji na vesolju. Tukaj, IFS spremenljivka se uporablja za nastavitev ločila. `preberi` ukaz se tukaj uporablja za razdelitev besedilne vrednosti in shranjevanje vrednosti v matriko. za zanka se uporablja za ponovitev matrike in tiskanje vrednosti vsakega elementa.

split.sh

#!/bin/bash
#Vnesite vrednost niza
vrgel venVnesite vrednost niza
prebratibesedilo
# Nastavite ločilo
IFS=''
#Razdelite vrednost besedila $ v matriko na podlagi ločila za presledek
prebrati -zapribl<<< '$ besedilo'
# Natisnite vsako vrednost matrike
zavrednostv '$ {arr [@]}';
naredi
printf '$ vrednost n'
Končano

Izhod:

Zaženite skript.

$bashsplit.sh

Po vnosu se prikaže naslednji izhod: Naučite se Bash programiranja . Ta vhodna vrednost je besedilo treh besed. Tako je niz razdeljen na tri dele.

Več o primerjavi nizov lahko izveste iz ta vadnica .

Spreminjanje velikih in malih črk niza

Večina skriptnih jezikov ima vgrajene funkcije za spreminjanje velikosti podatkov niza. Toda primer podatkov niza lahko v bash spremenite z uporabo `tr` ukaz ali z uporabo ': Zgornji' in ': Nižje' ključne besede. Ustvarite bash datoteko z naslednjim skriptom, če želite poznati načine spreminjanja velikih črk v bash. Tu se podatki prvega niza pretvorijo v velike črke z uporabo '^^' simbol, drugi niz pa z uporabo pretvorimo v male črke `tr` ukaz. `tr` ukaz bo iskal vse velike črke v nizu in pretvoril znake v male črke.

case.sh

#!/bin/bash

#Inicializirajte podatke prvega niza
besedilo1='[zaščiteno po e -pošti]'

#Natisnite vrednost $ text1 s pretvorbo vseh znakov v velika črka
vrgel ven $ {email ^^}

#Inicializirajte podatke drugega niza
besedilo 2= 'Osnove programiranja Bash'

#Natisnite vrednost $ text2 s pretvorbo vseh velikih črk v male
vrgel ven $ text2 | NS [: zgornji:] [: spodaj:]

Izhod:

Zaženite skript.

$bashcase.sh

Po zagonu skripta se prikaže naslednji izhod.

Več o primerjavi nizov lahko izveste iz ta vadnica .

Pojdi na vrh

Branje podatkov niza skozi zanko

Nizni podatki delujejo kot niz znakov za kateri koli programski jezik. Kako ' za ’Zanko lahko uporabite za branje podatkov o nizu v bash, je prikazano v tem razdelku. Ustvarite osnovno datoteko z naslednjim skriptom za branje vsakega dela vrednosti niza z uporabo zanke for.

readstr.sh

#!/bin/bas
# Preberite vsako besedo z uporabo zanke for
zavrednostvBash programiranjezazačetniki
naredi
vrgel ven $ vrednost
Končano

Izhod:

Zaženite skript.

$bashreadstr.sh

Po zagonu skripta se prikaže naslednji izhod.

Več o ponavljanju nizovnih podatkov lahko izvedete z uporabo zanke iz ta vadnica .

Pojdi na vrh

Vrnitev povratnih kod iz skripta in ulov v drugem skriptu

En bash skript lahko ujame povratne kode iz drugega skripta tako, da pokliče skript in ga uporabi '$?' prebrati vrnjeno vrednost. Recimo bash datoteka z imenom first.sh vrne kodo po izvedbi. Ustvarite drugo bash datoteko z imenom second.sh in dodajte naslednji skript, da ujamete vrnjeno vrednost in opravite nekatera druga opravila. Koda obeh datotek je podana spodaj. first.sh datoteka bo poklicana iz second.sh datoteko na začetku skripta. first.sh vrne izhodno kodo na podlagi vhodne vrednosti. second.sh bo ujel kodo '$?' in primerjajte z 1. Če sta obe vrednosti enaki, se natisne, Vhodno število je večje od 100 , sicer se natisne, Vhodno število je manjše ali enako 100 .

first.sh

#!/bin/bash

vrgel ven 'Vnesite številsko vrednost'
prebratin

# Preverite, ali je vhodna vrednost manjša ali enaka 100 ali ne
če [[ $ n - 100 ]]
potem
izhod 0
drugače
izhod 1
biti

second.sh

#! /bin/bash

#Izvedite datoteko, first.sh
bash 'first.sh'

#Preverite, ali je povratna koda enaka 1 ali ne
če [ $? -ekv 1 ]
potem
vrgel ven 'Vhodno število je večje od 100'
drugače
vrgel ven 'Vhodno število je manjše ali enako 100'
biti

Izhod:

Zaženite skript.

$bashsecond.sh

Naslednji izhod se prikaže, ko se skript dvakrat izvede pri 55 in 110.

Pojdi na vrh

Branje in pisanje v datoteke

Branje in pisanje datotek sta pogosti zahtevi bash programiranja. Bash nima vgrajene funkcije, kot je drug jezik, za branje ali pisanje datoteke. Datoteko v bashu lahko preberete na več načinov. Najpogostejši način branja ali pisanja datoteke v bash je uporaba 'mačka' ukaz. Toda ta ukaz se uporablja za branje celotne vsebine datoteke hkrati. Vsako datoteko lahko preberete tudi vrstico za vrstico s pomočjo katere koli zanke in `preberi` ukaz. Z uporabo operaterja preusmeritve, '>' , lahko v bash zapišete podatke v katero koli datoteko. Če želite podatke dodati v katero koli datoteko, jo morate uporabiti '>>' operater. Operacije branja in pisanja datotek so prikazane v naslednjem delu tega razdelka.

Branje datoteke v bashu

Ustvarite bash datoteko z naslednjim skriptom za branje obstoječe datoteke z imenom ' hardware.txt «. Vsebina te datoteke je navedena spodaj. V skriptu bere celotno vsebino datoteke 'mačka' prvi in ​​naslednji ukaz, zanka while pa se bere po vrstici.

hardware.txt

Monitor
Tipkovnica
Miška
Optični bralnik
Tiskalnik

readfile.sh

#!/bin/bash

vrgel ven 'Branje datoteke z ukazom cat'

# Preberite vsebino datoteke z ukazom `cat`
vsebino=''mačkahardware.txt''
vrgel ven $ vsebina

vrgel ven 'Branje datoteke po vrstici z uporabo zanke'

# Dodelite ime datoteke
Ime datoteke='hardware.txt'

# Vsaka vrstica datoteke bo prebrana pri vsaki ponovitvi zanke
medtem prebrativrstica;
naredi
# natisni vrstico
vrgel ven vrstica $
Končano<$ ime datoteke

Izhod:

Zaženite naslednje ukaze.

$mačkahardware.txt
$bashreadfile.sh

Tukaj bo prvi ukaz natisnil vsebino datoteke, hardware.txt brez izvajanja bash skripta, drugi ukaz pa bo zagnal skript readfile.sh in dvakrat natisnite vsebino datoteke z uporabo 'mačka' ukaz in `preberi` ukaz z zanko while. To lahko obiščete vadnica če želite izvedeti več o branju datotek po vrsticah.

Pisanje datoteke v bash

Ustvarite bash datoteko z naslednjim skriptom, da v novo datoteko napišete novo vsebino in v to datoteko dodate podatke.

writefile.sh

#!/bin/bash

vrgel ven 'Vnesite besedilo'
#Preberite podatke niza
prebratistr1
#Prvič dodajte vhodne podatke v datoteko
vrgel ven $ str1 >test.txt

vrgel ven 'Vnesite drugo besedilo'
#Preberite druge podatke niza
prebratistr2
#Dodajte vhodne podatke na koncu datoteke
vrgel ven $ str2 >>test.txt

#Prikaži celotno vsebino datoteke
vrgel ven ''mačkatest.txt''

Izhod:

Zaženite skript.

$bashwritefile.sh

Po zagonu skripta se prikaže naslednji izhod.

Pojdi na vrh

Cevi

Pipe se uporablja za preusmeritev katerega koli izpisa ukaza na drug vnos ukaza. Uporablja se lahko med različnimi vrstami ukazov bash za ustvarjanje specifičnega izhoda. Standardni vhod je povezan s standardnim izhodom v Linuxu. Ukaz morate nastaviti zaporedno s simbolom pipe (|), da dobite želeni izhod. Dva ali več ukazov lahko skupaj izvedete v enem ukazu s pomočjo pipe. Za isto nalogo morate izvesti več ukazov v več vrsticah brez pipe. Torej je uporaba pipe zelo koristna za opravljanje številnih vrst nalog v kratki obliki.

skladnja:

ukaz1|ukaz2|...

Tukaj bo izhod ukaza 1 poslan kot vhod ukaza 2.

V naslednjem delu tega razdelka se enaka naloga opravi s cevjo in brez cevi. Recimo besedilna datoteka z imenom marks.txt je podano z naslednjimi podatki.

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

Razvrstiti morate podatke datoteke, poiskati in natisniti vse vnose študentskega imena 'K ja ' . To nalogo lahko izvedete tako, da izvedete več ukazov, ne da bi uporabili črto, ki je prikazana v naslednjem razdelku. Za pridobitev želenega izpisa bodo potrebni naslednji ukazi. Prvi ukaz bo datoteko razvrstil. Drugi ukaz bo iskal vnos 'K ja ' z uporabo ` oprijem `ukaz in shranite izhod v temp.txt mapa. Tretji ukaz bo prešteval skupno število vrstic a temp.txt datoteko z uporabo `wc` ukaz.

$razvrstimarks.txt
$oprijem 'Keya'marks.txt>temp.txt
$stranišče -temp.txt

Izhod:

V datoteki obstajata dva vnosa študenta, 'Keya'. Tako se po zagonu zgornjih ukazov prikaže naslednji izhod.

Zgornje tri ukaze lahko preprosto združite in dobite enake rezultate tako, da zaženete en sam ukaz s cevjo, ki je prikazana v naslednjem ukazu. Za pridobitev rezultatov tukaj ni potrebna začasna datoteka. Tukaj je rezultat ` razvrsti 'ukaz bo poslan kot vnos' oprijem ukaz `in izhod` oprijem ukaz bo poslan kot vhod za `wc` ukaz.

$razvrstimarks.txt| oprijem 'Keya' | stranišče -

Izhod:

Po zagonu zgornjega ukaza boste dobili naslednji izhod, podoben izhodu prejšnjega ukaza. Izhod ukaza bo 2.

Pojdi na vrh

Zaključek:

V tej vadnici poskušamo obravnavati najbolj uporabne in potrebne teme skriptnega jezika bash. Upam, da bo bralcu po branju te vadnice koristilo in bo lahko učinkoviteje zapisal bash skript.