Bash Scripting Tutorial for Beginners

Bash Scripting Tutorial



Standard kommandospråk for Linux er Bash -skript. Vi trenger å kjøre mange kommandoer i Linux daglig for mange formål. Disse daglige oppgavene kan automatiseres ved å bruke et bash -skript. Enhver bruker kan lære dette skriptspråket veldig enkelt og raskt. Hvis du er ny innen bash -programmering, er denne opplæringen noe for deg.

Innhold:

  1. Kommentarer
  2. ekko kommando
  3. Variabler
  4. Betinget uttalelse
  5. Sløyfer
  6. Funksjoner
  7. Kaller programmer i et skript
  8. Opprette menyer
  9. Kommandolinjebehandling
  10. Aritmetikk
  11. Strengmanipulasjon
  12. Returnerer returkoder fra et skript og fanger inn et annet skript
  13. Lese og skrive til filer
  14. Rør

Kommentarer

Å legge til kommentarer med koden er en viktig del av ethvert programmeringsspråk. Kommentarene er ikke analysert med skriptet på tidspunktet for utførelsen. Leseren kan forstå hvilken som helst kode ordentlig hvis koden er godt kommentert. Du kan legge til en kommentar på flere måter i bash script. Hvordan du kan legge til kommentarer på én linje og flere linjer i et bash-skript, er vist i denne delen. Lag en bash -fil med følgende skript for å vite bruken av bash -kommentar. Her brukes '#' -symbolet for å legge til en kommentar på en linje og et enkelt sitat (') med': 'brukes for å legge til kommentarer på flere linjer.







bash_comment.sh



#!/bin/bash
#Ta et tall som inndata
kastet ut 'Skriv inn et tall'
lesetil
:'
Kontroller at inndatanummeret er
mindre enn 10 eller større enn 10 eller lik 10
'

hvis [[ $ a -lt 10 ]]
deretter
kastet ut 'Tallet er mindre enn 10'
elif [[ $ a -gt 10 ]]
deretter
kastet ut 'Tallet er større enn 10'
ellers
kastet ut 'Tallet er lik 10'
være

Produksjon:



Kjør skriptet.





$bashbash_comment.sh

Her kjøres skriptet tre ganger med inngangsverdien 3, 10 og 90. Følgende utgang vil vises.



Hvis du vil vite mer om bash -kommentarer, kan du sjekke det denne opplæringen .

Gå til toppen

ekkokommando

kommandoen 'echo' brukes i bash for å skrive ut utdata i terminalen. Ulike alternativer kan brukes med ekkokommando i bash for å skrive ut utdataene på forskjellige måter. Lag en bash -fil med følgende skript for å kjenne til de to enkle bruksområdene for 'echo' kommando. Her vil den første `ekko` -kommandoen skrive ut enkle tekstdata med en ny linje, og andre ekkokommando vil skrive ut en enkel tekst uten ny linje.

echo_test.sh

#!/bin/bash
#Skriv ut den første teksten
kastet ut 'Skriv ut tekst med en ny linje'
#Skriv ut den andre teksten
kastet ut -n 'Skriv ut tekst uten en ny linje'

Produksjon:

Kjør skriptet.

$bashecho_test.sh

Følgende utdata vises etter at du har utført kommandoen ovenfor.

Det er mange andre bruksområder for 'echo' kommando i bash. Du kan sjekke denne opplæringen for å vite mer om kommandoen `echo`.

Gå til toppen

Variabler

Variabel erklæring er en nødvendig del av ethvert programmeringsspråk. Bash -variabler kan deklareres på forskjellige måter. Når en verdi er tilordnet i en variabel, brukes ikke noe symbol i begynnelsen av variabelen. '$' -Symbolet brukes med variabelnavnet når du leser verdien av variabelen. Variabel kan brukes fra terminalen eller kan brukes i et hvilket som helst bash -skript.

Følgende kommandoer erklærer en strengvariabel som heter mystr med en bestemt verdi og deretter skrive ut verdien av variabelen i terminalen.

$mystr='Jeg liker bash programmering'
$kastet ut $ mystr

Produksjon:

Lag en bash -fil med følgende skript. To variabler er deklarert her. Disse er $ a og $ b . Hvis inngangsverdien som er lagret i $ a er lik $ b så meldingen, Tall er like vil bli skrevet ut ellers Tall er ikke like vil bli skrevet ut.

var.sh

#!/bin/bash
kastet ut 'Skriv inn et tall'
lesetil
b=100
hvis [[ $ a -ekv $ b ]]
deretter
kastet ut 'Tall er like'
ellers
kastet ut 'Tall er ikke like'
være

Produksjon:

Kjør skriptet.

$bashvar.sh

Kommandoen ovenfor utføres to ganger med verdien 56 og 100. Følgende utgang vil vises.

Hvis du vil vite mer om bash -variabler, kan du sjekke det denne opplæringen .

Gå til toppen

Betinget uttalelse

Som et annet programmeringsspråk, kan du bruke betinget setning i bash. ' Hvis-så-annet 'Og' sak 'Uttalelser brukes hovedsakelig for å implementere tilstandserklæringer i ethvert programmeringsspråk. Bruk av betinget uttalelse ved bruk av 'hvis' uttalelsen er vist i denne delen av denne opplæringen. Lag en bash -fil med følgende skript der betinget setning brukes. Her vil to verdier bli tatt fra brukeren som input og lagret i variablene, $ kode , og $ alder . 'If' -setningen brukes til å kontrollere verdien av $ alder er større enn eller lik 18 og verdien av $ kode er 1100 . Hvis begge betingelsene er sanne, er meldingen, Du er kvalifisert til å se filmen vil bli skrevet ut ellers Du er ikke kvalifisert til å se filmen vil bli skrevet ut.

cond.sh

#!/bin/bash

kastet ut 'Skriv inn koden din'
lesekode
kastet ut 'Skriv inn alderen din'
lesealder

hvis [[ $ alder -gi 18 && $ kode -ekv '1100' ]]
deretter
kastet ut 'Du er kvalifisert til å se filmen'
ellers
kastet ut 'Du er ikke kvalifisert til å se filmen'
være

Produksjon:

Kjør skriptet.

$bashcond.sh

Følgende utgang vises etter at du har tatt forskjellige inngangsverdier. 1100 er gitt som en kode og 5 er gitt som alder for den første kjøringen, og hvis betingelsen returnerer usann for disse verdiene. 1100 er gitt som en kode og 45 er gitt som alder for den andre kjøringen som returnerer true for if -tilstanden.

Hvis du vil vite mer om bash conditional statement, kan du sjekke denne opplæringen.

Gå til toppen

Sløyfer

Når noen deler av skriptet må utføres flere ganger, brukes løkken til å utføre oppgaven. Bash støtter tre typer loops -deklarasjon som andre språk. Disse er for, mens og til sløyfer. Basert på programmeringskravene, brukes en bestemt sløyfe i skriptet. Bruken av disse tre typer sløyfer er vist i denne delen ved å bruke enkle eksempler.

Bruker for loop

Lag en bash -fil med følgende skript der ` for` loop brukes for iterasjon. `for` loop brukes hovedsakelig for å iterere en liste over data eller en matrise. Her brukes en liste over ukedagsnavn, og hvert ukedagsnavn blir iterert ved å bruke for loop. `hvis` setning brukes til å skrive ut en bestemt melding basert på navnet på ukedagen.

for.sh

#Les et ukedagsnavn i hver iterasjon av løkken
tildagimandag Tirsdag Onsdag Torsdag Fredag ​​Lørdag Søndag
gjøre

#Sjekk at ukedagsnavnet er mandag eller torsdag
hvis [[ $ dag=='Mandag' || $ dag=='Torsdag' ]]
deretter
kastet ut 'Møte på$ dagkl. 9:30

#Sjekk at ukedagsnavnet er tirsdag eller onsdag eller fredag
elif [[ $ dag=='Tirsdag' || $ dag=='Onsdag' || $ dag=='Fredag' ]]
deretter
kastet ut 'Trening på$ dagkl. 11.00
ellers

#Skriv ut 'ferie' for andre dager
kastet ut '$ dager ferie '
være
gjort

Produksjon:

Kjør skriptet.

$bashfor.sh

Følgende utdata vises etter at skriptet er kjørt.

Hvis du vil vite mer brukt av bash for loop, kan du sjekke denne opplæringen.

Bruker mens loop

Lag en bash -fil med følgende skript der ` mens ` loop brukes for iterasjon. Dette skriptet vil skrive ut tallene fra 1 til 20 som er like og delbare med 5. Her, $ teller variabel brukes til å kontrollere iterasjonen av sløyfen, og verdien av denne variabelen økes med 1 i hver iterasjon. Når `hvis` tilstanden vil returnere true så vil den skrive ut verdien av $ teller .

#!/bin/bash

#Skriv ut meldingen
kastet ut 'Skriv ut tallene som er like og delbare med 5'

#Initialiser telleren
disk=1

#Iterter sløyfen til $ tellerverdien er mindre enn eller lik 20
samtidig som [ $ teller -de tjue ]
gjøre

#Sjekk at $ -telleren er delelig med 2 og 5
hvis [[ $ teller%2-ekv 0 && $ teller%5-ekv 0 ]]
deretter
#Skriv ut $ -teller uten ny linje
kastet ut '$ teller'
være

#Øk $ teller med 1
((teller ++))
gjort
kastet ut 'Ferdig'

Produksjon:

$bashmens. sh

Det er bare tall innenfor 1-20, de er like og delbare med 5. Følgende utdata vises etter at skriptet er kjørt.

Hvis du vil vite mer brukt av bash ` mens ' loop så kan du sjekke denne opplæringen .

Bruker til sløyfe

Lag en bash -fil med følgende skript der ` til` loop brukes for iterasjon. Dette skriptet vil skrive ut alle oddetall fra 0 til 20. $ n variabel brukes i dette skriptet for å iterere løkken.

inntil.sh

#!/bin/bash

#Initialiser variabelen, n
n=tjue

#Gjenta sløyfen til verdien av $ n er større enn 0
før [ $ n -lt 0 ]
gjøre

#Sjekk verdien av n er merkelig
hvis [[ $ n%2-gt 0 ]]
deretter
kastet ut $ n
være

#Øk verdien av n med 1
((n=$ n-1))
gjort

Produksjon:

Kjør skriptet.

$bashinntil.sh

Skriptet vil skrive ut alle partall fra 20 til 1. Følgende utdata vises etter at skriptet er kjørt.

Gå til toppen

Funksjoner

Når en kodeblokk må utføres flere ganger i et skript, brukes funksjonen til å utføre oppgaven. Du må bare kalle funksjonen ved navn når skriptet som er definert i funksjonen må utføres mange ganger i stedet for å legge til det samme skriptet flere ganger. Start- og sluttbraketten brukes med funksjonsnavn for å deklarere funksjonen i bash script. Funksjonen kan kalles av bare funksjonsnavnet i bash. Bash støtter ikke funksjonsargument som et annet standard programmeringsspråk. Men verdien kan overføres til bash -funksjonen på en annen måte som er vist i denne delen. Verdien kan returneres fra funksjonen med returoppgaven eller uten å bruke returoppgaven.

Lag en bash -fil med følgende script for å vite hvordan funksjonene kan deklareres og kalles i bash script. Tre funksjoner er deklarert i manuset. Den første funksjonen er erklært for å skrive ut en enkel melding, Bash -programmering for nybegynnere . Den andre funksjonen er erklært for å tildele en strengverdi i en variabel, $ retur_str som skal skrives ut, Lær bash -programmering med LinuxHint etter å ha ringt funksjonen. Den tredje funksjonen er erklært for å lese en argumentverdi som sirkelradius som vil bli gitt når du kaller funksjonen. Her, lokal brukes til å lese argumentverdien. Denne funksjonen vil beregne arealet av sirkelen basert på radiusverdi ved å bruke formelen, πr2 og skriv ut den beregnede arealverdien.

func.sh

#!/bin/bash

#Erklær en enkel funksjon
funksjonprint_message()
{
kastet ut 'Bash -programmering for nybegynnere'
}

#Deklarere en funksjon for å returnere en strengverdi
funksjonret_strdata()
{
#Initialiser variabelen med strengverdi
retur_str='Lær bash -programmering med LinuxHint'
}

#Deklarere en funksjon for å lese argumentverdi
funksjonberegne_område()

#Les den overførte argumentverdien
lokal radius=$ 1
område= $(kastet ut $ radius*$ radius*3.14

#Ring funksjonen for å skrive ut en enkel melding
print_message

#Ring funksjonen som vil tildele en strengverdi i en variabel
ret_strdata

#Skriv ut verdien av variabelen
kastet ut $ retur_str

#Les radiusverdien
kastet ut 'Skriv inn radiusverdien'
lesearbeid

#Ring funksjonen med radiusverdi
beregne_område$ rad

Produksjon:

Kjør skriptet.

$bashfunc.sh

Følgende utdata vises etter at skriptet er kjørt. De to første linjene skrives ut ved å kalle funksjonene, print_message () og ret_strdata () . Den siste linjen skrives ut ved å ringe funksjonen, beregne_område () med den innlagte radiusverdien.

Hvis du vil vite om å returnere en streng fra bash -funksjonen, kan du denne tutoriaen de.

Gå til toppen

Kaller programmer i et skript

Du kan bruke mange typer kommandoer til å ringe andre programmer i et hvilket som helst bash -skript, for eksempel kilde, bash, eval, eksek , osv. Anta tre bash -filer, add.sh , trekke fra.sh, multipliser.sh og divisjon.sh laget for å utføre addisjon, subtraksjon, multiplikasjon og divisjon. Her, trekke fra og divisjon.sh lese kommandolinjeargumenter. Skriptet til alle disse fire filene er gitt nedenfor.

add.sh

#!/bin/bash
til=60
b=40
((resultat=$ a+$ b))
kastet ut 'Tillegget av$ a+$ b=$ resultat'

subract.sh

#!/bin/bash
til=$ 1
b=$ 2
((resultat=$ a-$ b))
kastet ut 'Subtraksjonen av$ a-$ b=$ resultat'

multipliser.sh

#!/bin/bash
((resultat=$ 1*$ 2))
kastet ut 'Multiplikasjonen på $ 1 og $ 2 er$ resultat'

divide.sh

#!/bin/bash
til=$ 1
b=2
((resultat=$ a/$ b))
kastet ut 'Inndelingen av$ aav$ ber$ resultat'

Lag en bash -fil med navnet, callpro.sh med følgende skript for å ringe de nevnte bash -filene ved hjelp av kilde-, bash-, eval- og exec -kommandoer. Du må angi kjøringstillatelse for de fire filene ovenfor før du kjører følgende skript. kommandoen `kilde` brukes til å ringe add.sh fil. `bash` -kommandoen brukes til å utføre filen subtract.sh. `eval` -kommandoen brukes til å utføre multiply.sh -filen. To inngangsverdier sendes som kommandolinjeargumenter for kommandoen 'eval'. Den siste kommandoen er exec -kommando som bare fungerer med absolutt bane. For dette er hele banenavnet til divide.sh -filen gitt i skriptet.

callpro.sh

#!/bin/bash
skript1='add.sh'
script2='subtract.sh'
script3='multipliser.sh'
skript4='/home/fahmida/code/divide.sh'

kilde '$ script1'

bash $ script2 femti tjue

kastet ut 'Skriv inn verdien til a'
lesetil
kastet ut 'Skriv inn verdien til b'
leseb
eval bash $ script3 $ a $ b
eksek $ script4 30

Produksjon:

Kjør skriptet.

$bashcallpro.sh

Følgende utdata vises etter at skriptet er kjørt.

Gå til toppen

Opprette menyer

Det er en nyttig kommando i bash for å lage en enkel meny som kalles `velg` kommando. Ulike typer menyer kan opprettes ved å bruke denne kommandoen. En bestemt dataliste brukes til å lage en meny med denne kommandoen. Lag en bash -fil med følgende kode for å se bruken av `velg` kommando for å lage en meny. I dette eksemplet skrives listen over fem elementer ut som en meny, og brukeren blir bedt om å velge hvilket som helst språk fra listen. Den valgte verdien vil bli lagret i variabelen, $ språk som skrives ut senere ved å sammenkoble med en annen streng. Skriptet vil kontinuerlig be om valg av språk til brukeren trykker 6 å avslutte fra skriptet.

menu.sh

#!/bin/bash

#Skriv ut melding for brukeren
kastet ut 'Velg ditt favorittspråk'

# Definer listen over et menyelement
plukke utSpråkiC# Java PHP Python Bash Exit
gjøre
#Skriv ut den valgte verdien
hvis [[ $ språk=='Exit' ]]
deretter
exit 0
ellers
kastet ut 'Valgt språk er$ språk'
være
gjort

Produksjon:

Kjør skriptet.

$bashmenu.sh

I henhold til følgende utdata trykket brukeren på 3 for første gang som skrev ut PHP og trykket på 6 for andre gang som avsluttet fra skriptet.

Hvis du vil vite mer om opprettelse av bash meny med 'velg', kan du besøke denne opplæringen.

Gå til toppen

Kommandolinjebehandling

Noen ganger må vi angi inndataverdier når vi utfører skriptet fra kommandolinjen. Denne oppgaven kan utføres på to måter i bash. En måte er å bruke argumentvariabler og en annen måte er å bruke getopts -funksjonen. Lese kommandolinjeinndata fra terminalen ved hjelp av argumentvariabelen er vist i denne delen.

Lag en bash -fil med følgende skript for å se bruken av å lese kommandolinjens argumentverdi. Dette skriptet vil lese tre kommandolinjeargumenter som vil bli lagret i variablene, $ operand1, $ operand2 og $ operator. For å utføre skriptet på riktig måte må de første og tredje argumentverdiene være tallet og den andre argumentverdien må være hvilken som helst av de fire aritmetiske operatorene (‘+’, ‘-’, ‘/’, ‘x’). hvis setning vil kontrollere verdien av $ operator og utføre operasjonen basert på operatøren og skrive ut verdien.

cl1.sh

#!/bin/bash

#Skriv ut argumentvariablene
kastet ut 'Argumentverdier er: $ 1 $ 2 $ 3'

# Lagre argumentverdier
operand1=$ 1
operand2=$ 3
operatør=$ 2

#Sjekk den andre kommando -argumentverdien for å utføre den aritmetiske operasjonen
hvis [[ $ operatør=='+' ]]
deretter
((resultat=$ operand1+$ operand2))
elif [[ $ operatør=='-' ]]
deretter
((resultat=$ operand1-$ operand2))
elif [[ $ operatør=='x' ]]
deretter
((resultat=$ operand1*$ operand2))
elif [[ $ operatør=='/' ]]
deretter

((resultat=$ operand1/$ operand2))
være

# skrive ut resultatet
kastet ut -Og 'Resultatet er =$ resultat'

Produksjon:

Kjør skriptet.

$bashcl1.sh

Skriptet kjøres fire ganger for fire typer aritmetiske operatorer. Følgende utdata vises for argumentverdiene, 6 + 3, 6 - 3, 6 x 3 og 6 /3 .

Argumentverdier kan sendes med navn-verdi-par i bash. Lag en bash -fil med følgende skript for å vise hvordan du leser argumentverdier med navnet. Skriptet vil lese to argumentvariabler. Argumentverdiene med navn skrives ut i den første setningen i skriptet. Deretter brukes en for loop til å iterere matrisen som inneholder kommandolinjeargumentverdier. Hvert element i matrisen er delt inn i et nøkkelverdi-par ved å bruke kommandoen `cut`. Deretter brukes saksuttalelse til å skrive ut en bestemt melding basert på nøkkelverdien.

cl2.sh

. #! /er/bash

#Skriv ut argumentvariablene
kastet ut 'Argumentverdier er: $ 1 $ 2'

#Les hvert argument separat ved hjelp av for loop
tilsinti '[e -postbeskyttet]'
gjøre

#Separat argumentnavn og verdi
nøkkel= $(kastet ut $ arg | skjære -f1 -d=)
verdi= $(kastet ut $ arg | skjære -f2 -d=)

#Skriv ut melding basert på argumentets navn
sak $ nøkkel i
Navn) kastet ut 'Studentens navn =$ verdi';;
merke) kastet ut 'Mottatt merke =$ verdi' ;;
*)
esac
gjort

Produksjon:

Kjør skriptet med følgende kommandolinjeargumenter.

$bashcl2.shNavn= Abir Hossainmerke=90

To kommandolinjeargumenter er gitt i kommandoene ovenfor. Disse er navn = Abir Hossain og merke = 90 . Navn og merker skilles av skriptet, og to verdier skrives ut etter at utdataene er formatert.

Behandler kommandolinjeargumenter ved å bruke getopts funksjonen diskuteres ikke i denne opplæringen. Hvis du vil vite mer om kommandolinjebehandling ved å bruke getopts funksjon så kan du besøke denne opplæringen .

Gå til toppen

Aritmetikk

Å gjøre regning er et vanlig krav for ethvert programmeringsspråk. Bash utfører den aritmetiske operasjonen på en annen måte enn et annet standard programmeringsspråk. Det er flere måter å gjøre aritmetiske operasjoner på bash. En av de enkle måtene å utføre den aritmetiske operasjonen er vist i denne delen. Lag en bash -fil med følgende skript. Fire typer aritmetiske operasjoner er vist i dette skriptet. En enkel summerings- og delingsoperasjon vises ved bruk av doble første parenteser i begynnelsen av manuset. Deretter vises operasjonen før inkrement. Til slutt vises måten å bruke stenografoperator på i den siste delen av manuset.

arith.sh

#!/bin/bash
# Beregn summen
resultat= $((femti+25))
# Skriv ut summeringsverdi
kastet ut 'sum =$ resultat'

# Beregn divisjonen
resultat= $((femti/25))
# Skriv ut divisjonsverdi
kastet ut 'divisjon =$ resultat'

# Tildel en verdi til N
N=10
# Gjør forhåndsøkning
((--N))
# Skriv ut verdien av N
kastet ut 'Verdi etter reduksjon =$ N'

# Bruker stenografoperatør
((N +=10 ))
# Skriv ut verdien av N
kastet ut 'Verdi etter å ha lagt til 10 =$ N'

Produksjon:

Kjør skriptet.

$basharith.sh

Følgende utdata vises etter at skriptet er kjørt.

Alle regneoperasjoner utføres ved å bruke doble parenteser i dette skriptet ovenfor. Men du kan bruke ‘ la ',' ekspr 'Og' bc 'Kommando for å utføre den aritmetiske operasjonen i bash. Hvis du vil vite mer om disse kommandoene for å gjøre bash aritmetiske operasjoner, kan du besøke denne opplæringen.

Gå til toppen

Strengmanipulering

Mange typer oppgaver kan utføres med strengdataene i bash. Noen kobler sammen streng, sammenligner streng, deler en streng, endrer store og små bokstaver, etc. Det er ingen innebygde strengfunksjoner som andre standardspråk i bash for å utføre strengoperasjonene. Noen vanlige strengmanipulasjoner diskuteres i denne delen av denne opplæringen.

Sammenkoplingsstreng

Å legge to eller flere strenger sammen kalles streng sammenkobling. Strengen slås sammen i bash ved å plassere den ene etter den andre. Lag en bash -fil med følgende skript for å vise bruken av sammenkobling av strenger. To strengvariabler initialiseres og skrives ut etter at variablene er kombinert. Her er innholdet i $ string1 og $ string2 vil bli slått sammen og skrevet ut.

concat.sh

#!/bin/bash

#Initialiser den første strengvariabelen
streng1='Jeg liker '
#Initialiser den andre strengvariabelen
streng2='Bash -programmering'
#Skriv ut etter å ha kombinert begge strengene
kastet ut '$ string1$ string2'

Produksjon:

Kjør skriptet.

$bashconcat.sh

Følgende utdata vises etter at skriptet er kjørt.

Du kan vite mer om strengkobling fra denne opplæringen.

Gå til toppen

Sammenligning av streng

Bash bruker forskjellige typer operatører for å sammenligne strengdata. Lag en bash -fil med følgende skript for å vise hvordan du sammenligner to strengdata. En strengverdi tas som input i skriptet som sammenlignes med en annen streng. Hvis verdien samsvarer med en melding, Du liker Python vil bli skrevet ut ellers Du liker PERL vil bli skrevet ut.

sammenligne.sh

#!/bin/bash
kastet utSkriv inn en strengverdi
lesetekst

#Sjekk at inndataene tilsvarer Python
hvis [ $ tekst=='Python' ];deretter
kastet ut 'Du liker Python.'
ellers
kastet ut 'Du liker PERL'
være

Produksjon:

Kjør skriptet.

$bashsammenligne.sh

Følgende utdata vises etter at skriptet er kjørt der inngangsverdien er ‘PERL’.

Du kan vite mer om strengsammenligning fra denne opplæringen .

Splitting String

Bash har ingen innebygd delingsfunksjon for å dele strengdata. Strengdataene kan deles på flere måter i bash basert på forskjellige typer avgrensere. Lag en bash -fil med følgende skript for å vise hvordan strengdata kan deles inn i bash. En strengverdi tas som input. Dette skriptet vil dele verdien av $ tekst basert på plass. Her, den IFS variabel brukes til å angi skilletegn. `les ' kommando brukes her for å dele tekstverdien og lagre verdiene i en matrise. til loop brukes til å iterere matrisen og skrive ut verdien til hvert element.

split.sh

#!/bin/bash
#Skriv inn en strengverdi
kastet utSkriv inn en strengverdi
lesetekst
# Still inn skilletegn
IFS=''
#Del verdien $ -tekst i en matrise basert på mellomromstegn
lese -tilarr<<< '$ tekst'
# Skriv ut hver verdi i matrisen
tilverdii '$ {arr [@]}';
gjøre
printf '$ verdi n'
gjort

Produksjon:

Kjør skriptet.

$bashsplit.sh

Følgende utgang vil vises etter at du har tatt inndata, Lær Bash -programmering . Denne inngangsverdien er en tekst med tre ord. Så strengen er delt inn i tre deler.

Du kan vite mer om strengsammenligning fra denne opplæringen .

Endre tilfelle av strengen

De fleste skriptspråk har innebygde funksjoner for å endre tilfelle av strengdataene. Men tilfellet med strengdata kan endres i bash ved å bruke `tr` kommando eller ved å bruke ':øverste' og ':Nedre' søkeord. Lag en bash -fil med følgende skript for å kjenne til måtene å endre store og små bokstaver på. Her konverteres de første strengdataene til store bokstaver ved å bruke '^^' symbolet og den andre strengen konverteres til små bokstaver ved å bruke `tr` kommando. `tr` kommandoen søker i alle store bokstaver i strengen og konverterer tegnene til små bokstaver.

case.sh

#!/bin/bash

#Initialiser de første strengdataene
tekst 1='[e -postbeskyttet]'

#Skriv ut verdien på $ text1 ved å konvertere alle tegnene til store bokstaver
kastet ut $ {email ^^}

#Initialiser andre strengdata
tekst 2= 'Grunnleggende om programmering av bash'

#Skriv ut verdien til $ text2 ved å konvertere alle store bokstaver til små bokstaver
kastet ut $ text2 | NS [:øverste:] [:Nedre:]

Produksjon:

Kjør skriptet.

$bashcase.sh

Følgende utdata vises etter at skriptet er kjørt.

Du kan vite mer om strengsammenligning fra denne opplæringen .

Gå til toppen

Lese strengdata gjennom løkken

Strengdata fungerer som en tegnmatrise for ethvert programmeringsspråk. Hvordan ' til 'Loop kan brukes til å lese strengdata i bash er vist i denne delen. Lag en basisfil med følgende skript for å lese hver del av strengverdien ved å bruke for loop.

readstr.sh

#!/bin/bas
# Les hvert ord i en tekst ved å bruke for loop
tilverdiiBash -programmeringtilnybegynnerne
gjøre
kastet ut $ verdi
gjort

Produksjon:

Kjør skriptet.

$bashreadstr.sh

Følgende utdata vises etter at skriptet er kjørt.

Du kan vite mer om iterering av strengdata ved å bruke løkken fra denne opplæringen .

Gå til toppen

Returnerer returkoder fra et skript og fanger inn et annet skript

Ett bash -script kan fange returkoder fra et annet script ved å ringe scriptet og bruke '$?' for å lese returverdien. Anta at en bash -fil heter first.sh returnerer en kode etter utførelse. Lag en annen bash -fil med navnet second.sh og legg til følgende skript for å fange returverdien og gjøre noen andre oppgaver. Koden til begge filene er gitt nedenfor. first.sh filen vil bli kalt fra second.sh filen i begynnelsen av skriptet. first.sh vil returnere en utgangskode basert på inngangsverdien. second.sh vil fange koden ved '$?' og sammenligne med 1. Hvis begge verdiene er like, skrives det ut, Inngangstallet er større enn 100 ellers skrives det ut, Inndatatallet er mindre enn eller lik 100 .

first.sh

#!/bin/bash

kastet ut 'Skriv inn en numerisk verdi'
lesen

# Kontroller at inngangsverdien er mindre enn eller lik 100 eller ikke
hvis [[ $ n -de 100 ]]
deretter
exit 0
ellers
exit 1
være

second.sh

#! /bin/bash

#Utfør filen, first.sh
bash 'first.sh'

#Sjekk at returkoden er lik 1 eller ikke
hvis [ $? -ekv 1 ]
deretter
kastet ut 'Inndatatallet er større enn 100'
ellers
kastet ut 'Inndatatallet er mindre enn eller lik 100'
være

Produksjon:

Kjør skriptet.

$bashsecond.sh

Følgende utdata vises når skriptet kjøres av 55 og 110 to ganger.

Gå til toppen

Lese og skrive til filer

Å lese og skrive filer er vanlige krav til bash -programmering. Bash har ingen innebygd funksjon som et annet språk for å lese eller skrive filen. Det er flere måter å lese filen på bash. Den vanligste måten å lese eller skrive en fil på bash er å bruke `katt` kommando. Men denne kommandoen brukes til å lese hele innholdet i filen om gangen. Du kan også lese hvilken som helst fil linje for linje ved å bruke en sløyfe og `les ' kommando. Ved å bruke omdirigeringsoperatør, '>' , kan du skrive data til en hvilken som helst fil i bash. Hvis du vil legge til data i en fil, må du bruke den '>>' operatør. Både lese- og skrivefiloperasjoner vises i neste del av denne delen.

Lese fil i bash

Lag en bash -fil med følgende skript for å lese en eksisterende fil med navnet ' hardware.txt '. Innholdet i denne filen er gitt nedenfor. I skriptet blir hele innholdet i filen lest av `katt` kommando først og neste, mens loop brukes til å lese filen linje for linje.

hardware.txt

Observere
Tastatur
Mus
Skanner
Skriver

readfile.sh

#!/bin/bash

kastet ut 'Lese fil ved hjelp av kattkommando'

# Les innholdet i filen med kommandoen `cat`
innhold=``katthardware.txt``
kastet ut $ innhold

kastet ut 'Lese fil linje for linje ved hjelp av sløyfe'

# Tilordne filnavnet
filnavn='hardware.txt'

# Hver linje i filen vil bli lest av hver iterasjon av løkken
samtidig som leselinje;
gjøre
# skriv ut linjen
kastet ut $ linje
gjort<$ filnavn

Produksjon:

Kjør følgende kommandoer.

$katthardware.txt
$bashreadfile.sh

Her vil den første kommandoen skrive ut innholdet i filen, hardware.txt uten å kjøre noe bash -skript, og den andre kommandoen vil kjøre skriptet til readfile.sh og skriv ut innholdet i filen to ganger ved å bruke `katt` kommando og `les ' kommando med mens loop. Du kan besøke dette opplæringen for å vite mer om å lese fil linje for linje.

Skriver fil i bash

Lag en bash -fil med følgende skript for å skrive nytt innhold i en ny fil og legge til data i den filen.

writeefile.sh

#!/bin/bash

kastet ut 'Skriv inn litt tekst'
#Les strengdata
lesestr1
#Legg til inndata i filen for første gang
kastet ut $ str1 >test.txt

kastet ut 'Skriv inn en annen tekst'
#Les en annen strengdata
lesestr2
#Legg til inndata på slutten av filen
kastet ut $ str2 >>test.txt

#Vis hele innholdet i filen
kastet ut ``katttest.txt``

Produksjon:

Kjør skriptet.

$bashwriteefile.sh

Følgende utdata vises etter at skriptet er kjørt.

Gå til toppen

Rør

Pipe brukes til å omdirigere enhver kommandoutgang til annen kommandoinngang. Den kan brukes blant forskjellige typer bash -kommandoer for å generere spesifikk utgang. Standardinngangen er koblet til standardutgang i Linux via rør. Du må sette kommandoen i rekkefølge med rørsymbolet (|) for å få ønsket utgang. To eller flere kommandoer kan utføres sammen i en enkelt kommando ved hjelp av pipe. Du må utføre flere kommandoer på flere linjer uten rør for å gjøre den samme oppgaven. Så det er veldig fordelaktig å bruke rør for å gjøre mange typer oppgaver i en kort form.

syntaks:

kommando 1|kommando2|...

Her vil utdataene fra kommandoen1 bli sendt som inngangen til kommando2.

Den samme typen oppgave utføres med rør og uten rør i neste del av denne seksjonen. Anta at en tekstfil heter merker.txt er gitt med følgende data.

merker.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

Du må sortere dataene i filen og finne ut og skrive ut all oppføringen av studentnavnet ‘K ja ' . Du kan utføre denne oppgaven ved å kjøre flere kommandoer uten å bruke et rør som vises i neste avsnitt. Følgende kommandoer må kjøres for å få ønsket utgang. Den første kommandoen vil sortere filen. Den andre kommandoen søker i oppføringen 'K ja ' bruker ` grep `kommando og lagre utdataene i en temp.txt fil. Den tredje kommandoen vil telle de totale linjene til a temp.txt filen ved å bruke `wc` kommando.

$sorteremerker.txt
$grep 'Keya'merker.txt>temp.txt
$toalett -detemp.txt

Produksjon:

To oppføringer av studenten, ‘Keya’, finnes i filen. Så etter å ha kjørt kommandoene ovenfor, vil følgende utgang vises.

Du kan enkelt slå sammen de tre kommandoene ovenfor og få samme utgang ved å kjøre en enkelt kommando med et rør som vises i følgende kommando. Ingen midlertidig fil er nødvendig her for å få utdata. Her er utgangen av ` sortere `kommando vil bli sendt som input av` grep `kommando og utdata fra` grep `-kommandoen sendes som input for `wc` kommando.

$sorteremerker.txt| grep 'Keya' | toalett -de

Produksjon:

Etter at du kjører kommandoen ovenfor, får du følgende utgang som forrige kommandos utgang. Utgangen av kommandoen vil være 2.

Gå til toppen

Konklusjon:

De fleste nyttige og nødvendige temaene for bash scripting språk er forsøkt å dekke i denne opplæringen. Håper, leseren vil ha fordeler etter å ha lest denne opplæringen og kunne skrive bash -skript mer effektivt.