Bash Scripting Tutorial for begyndere

Bash Scripting Tutorial



Standardkommandosproget for Linux er Bash -script. Vi er nødt til at køre mange kommandoer i Linux dagligt til mange formål. Disse daglige opgaver kan automatiseres ved hjælp af et bash -script. Enhver bruger kan nemt og hurtigt lære dette scriptsprog. Hvis du er ny inden for bash -programmering, er denne vejledning noget for dig.

Indhold:

  1. Kommentarer
  2. ekko kommando
  3. Variabler
  4. Betinget erklæring
  5. Sløjfer
  6. Funktioner
  7. Opkald til programmer i et script
  8. Oprettelse af menuer
  9. Kommandolinjebehandling
  10. Aritmetik
  11. Strengmanipulation
  12. Returnering af returkoder fra et script og indfangning af et andet script
  13. Læsning og skrivning til filer
  14. Rør

Kommentarer

Tilføjelse af kommentarer med koden er en væsentlig del af ethvert programmeringssprog. Kommentarerne analyseres ikke med scriptet på tidspunktet for udførelsen. Læseren kan forstå enhver kode korrekt, hvis koden er godt kommenteret. Du kan tilføje en kommentar på flere måder i bash script. Hvordan du kan tilføje kommentarer med én linje og flere linjer i et bash-script er vist i denne del. Opret en bash -fil med følgende script for at kende brugen af ​​bash -kommentar. Her bruges '#'-symbolet til at tilføje en enkeltlinjes kommentar og et enkelt citat (') med ':' bruges til at tilføje kommentarer med flere linjer.







bash_comment.sh



#!/bin/bash
#Tag et tal som input
smed ud 'Indtast et nummer'
Læstil
:'
Kontroller, at indtastningsnummeret er
mindre end 10 eller større end 10 eller lig med 10
'

hvis [[ $ a -lt 10 ]]
derefter
smed ud 'Tallet er mindre end 10'
elif [[ $ a -gt 10 ]]
derefter
smed ud 'Tallet er større end 10'
andet
smed ud 'Tallet er lig med 10'
være

Produktion:



Kør scriptet.





$bashbash_comment.sh

Her udføres scriptet tre gange med inputværdien 3, 10 og 90. Følgende output vises.



Hvis du vil vide mere om bash -kommentarer, kan du tjekke det denne vejledning .

Gå til toppen

ekkokommando

kommandoen 'echo' bruges i bash til at udskrive output i terminalen. Forskellige muligheder kan bruges med echo -kommando i bash til at udskrive output på forskellige måder. Opret en bash -fil med følgende script for at kende de to enkle anvendelser af kommandoen 'echo'. Her vil den første kommando `ekko` udskrive simple tekstdata med en ny linje og anden ekkokommando udskrive en simpel tekst uden en ny linje.

echo_test.sh

#!/bin/bash
#Udskriv den første tekst
smed ud 'Udskriv tekst med en ny linje'
#Udskriv den anden tekst
smed ud -n 'Udskriv tekst uden en ny linje'

Produktion:

Kør scriptet.

$bashecho_test.sh

Følgende output vises efter udførelse af ovenstående kommando.

Der er mange andre anvendelser af 'echo' kommando i bash. Du kan kontrollere denne vejledning for at vide mere om kommandoen `echo`.

Gå til toppen

Variabler

Variabel erklæring er en nødvendig del af ethvert programmeringssprog. Bash -variabler kan erklæres på forskellige måder. Når en værdi er tildelt i en variabel, bruges der ikke noget symbol i begyndelsen af ​​variablen. '$' Symbol bruges med variabelnavnet på tidspunktet for aflæsning af værdien af ​​variablen. Variabel kan bruges fra terminalen eller kan bruges i ethvert bash -script.

Følgende kommandoer erklærer en strengvariabel navngivet mystr med en bestemt værdi og derefter udskrive værdien af ​​variablen i terminalen.

$mystr='Jeg kan godt lide bash programmering'
$smed ud $ mystr

Produktion:

Opret en bash -fil med følgende script. To variabler er angivet her. Disse er $ a og $ b . Hvis inputværdien, der er gemt i $ a er lig med $ b derefter beskeden, Tallene er ens vil blive udskrevet på anden måde Tal er ikke ens vil blive udskrevet.

var.sh

#!/bin/bash
smed ud 'Indtast et nummer'
Læstil
b=100
hvis [[ $ a -ækv $ b ]]
derefter
smed ud 'Tal er lige'
andet
smed ud 'Tal er ikke lige'
være

Produktion:

Kør scriptet.

$bashvar.sh

Ovenstående kommando udføres to gange med værdien 56 og 100. Følgende output vises.

Hvis du vil vide mere om bash -variabler, kan du tjekke det denne vejledning .

Gå til toppen

Betinget erklæring

Ligesom et andet programmeringssprog kan du bruge betinget sætning i bash. ' Hvis-så-ellers 'Og' sag 'Udsagn bruges hovedsageligt til at implementere tilstandserklæringer i ethvert programmeringssprog. Brug af betinget erklæring ved brug af 'hvis' erklæring er vist i dette afsnit af denne vejledning. Opret en bash -fil med følgende script, hvor betinget sætning bruges. Her vil to værdier blive taget fra brugeren som input og gemt i variablerne, $ kode , og $ alder . 'If' -sætning bruges til at kontrollere værdien af $ alder er større end eller lig med 18 og værdien af $ kode er 1100 . Hvis begge betingelser er sande, er meddelelsen, Du er berettiget til at se filmen vil blive udskrevet på anden måde Du er ikke berettiget til at se filmen vil blive udskrevet.

kond.sh

#!/bin/bash

smed ud 'Skriv din kode'
Læskode
smed ud 'Indtast din alder'
Læsalder

hvis [[ $ alder -give 18 && $ kode -ækv '1100' ]]
derefter
smed ud 'Du er berettiget til at se filmen'
andet
smed ud 'Du er ikke berettiget til at se filmen'
være

Produktion:

Kør scriptet.

$bashkond.sh

Følgende output vises efter at have taget forskellige inputværdier. 1100 er givet som en kode, og 5 er givet som alder for den første udførelse, og hvis betingelsen returnerer falsk for disse værdier. 1100 er givet som en kode, og 45 er givet som alder for den anden eksekvering, der returnerer true for if -tilstand.

Hvis du vil vide mere om bash conditional statement, kan du tjekke denne vejledning.

Gå til toppen

Sløjfer

Når nogle dele af scriptet skal udføres flere gange, bruges løkken til at udføre opgaven. Bash understøtter tre typer loops -deklaration ligesom andre sprog. Disse er til, mens og indtil sløjfer. Baseret på programmeringskravene bruges en bestemt loop i scriptet. Brugen af ​​disse tre typer sløjfer er vist i dette afsnit ved hjælp af enkle eksempler.

Brug til loop

Opret en bash -fil med følgende script, hvor ` for` loop bruges til iteration. `for` loop bruges hovedsageligt til iterering af en liste med data eller en matrix. Her bruges en liste med hverdagsnavn, og hvert hverdagsnavn gentages ved hjælp af for loop. `hvis` sætning bruges til at udskrive en bestemt besked baseret på ugedagens navn.

for.sh

#Læs et hverdagsnavn i hver iteration af sløjfen
tildagimandag Tirsdag Onsdag Torsdag fredag ​​Lørdag Søndag
gøre

#Kontroller, at hverdagsnavnet er mandag eller torsdag
hvis [[ $ dag=='Mandag' || $ dag=='Torsdag' ]]
derefter
smed ud 'Møde den$ dagkl. 9:30

#Kontroller, at hverdagsnavnet er tirsdag eller onsdag eller fredag
elif [[ $ dag=='Tirsdag' || $ dag=='Onsdag' || $ dag=='Fredag' ]]
derefter
smed ud 'Træning på$ dagkl. 11.00 '
andet

#Udskriv ‘Ferie’ til andre dage
smed ud '$ dager ferie '
være
Færdig

Produktion:

Kør scriptet.

$bashfor.sh

Følgende output vises efter at scriptet er kørt.

Hvis du vil vide mere brugt af bash til loop, kan du tjekke denne vejledning.

Brug mens loop

Opret en bash -fil med følgende script, hvor ` mens ` loop bruges til iteration. Dette script udskriver de tal fra 1 til 20, som er lige og delelige med 5. Her, $ tæller variabel bruges til at styre loopens iteration, og værdien af ​​denne variabel øges med 1 i hver iteration. Hvornår `hvis` tilstand vender tilbage sand, så udskriver den værdien af $ tæller .

#!/bin/bash

#Udskriv meddelelsen
smed ud 'Udskriv tallene, der er lige og delelige med 5'

#Initialiser tælleren
tæller=1

#Iterer sløjfen, indtil $ -tællerværdien er mindre end eller lig med 20
mens [ $ tæller -det tyve ]
gøre

#Kontroller, at $ -tælleren er delelig med 2 og 5
hvis [[ $ tæller%2-ækv 0 && $ tæller%5-ækv 0 ]]
derefter
#Print $ tæller uden ny linje
smed ud '$ tæller'
være

#Forøg $ tæller med 1
((tæller ++))
Færdig
smed ud 'Færdig'

Produktion:

$bashmens.sh

Der er kun tal inden for 1-20, der er lige og delelige med 5. Det følgende output vises efter at scriptet er kørt.

Hvis du vil vide mere brugt af bash ` mens ' loop så kan du tjekke denne vejledning .

Brug indtil loop

Opret en bash -fil med følgende script, hvor ` indtil ' loop bruges til iteration. Dette script udskriver alle ulige tal fra 0 til 20. $ n variabel bruges i dette script til at iterere sløjfen.

indtil.sh

#!/bin/bash

#Initialiser variablen, n
n=tyve

#Gentag sløjfen, indtil værdien af ​​$ n er større end 0
så længe [ $ n -lt 0 ]
gøre

#Kontroller værdien af ​​n er ulige
hvis [[ $ n%2-gt 0 ]]
derefter
smed ud $ n
være

#Forøg værdien af ​​n med 1
((n=$ n-1))
Færdig

Produktion:

Kør scriptet.

$bashindtil.sh

Scriptet udskriver alle lige numre fra 20 til 1. Det følgende output vises efter scriptet er kørt.

Gå til toppen

Funktioner

Når en kodeblok skal udføres flere gange i et script, bruges funktionen til at udføre opgaven. Du skal kun kalde funktionen ved navn, når scriptet, der er defineret i funktionen, skal udføres mange gange i stedet for at tilføje det samme script flere gange. Start- og slutterste parentes bruges med funktionsnavn til at deklarere funktionen i bash script. Funktionen kan kun kaldes med funktionsnavnet i bash. Bash understøtter ikke funktionsargument som et andet standard programmeringssprog. Men værdien kan overføres til bash -funktion på en anden måde, som er vist i dette afsnit. Værdien kan returneres fra funktionen med returopgørelsen eller uden at bruge returangivelsen.

Opret en bash -fil med følgende script for at vide, hvordan funktionerne kan deklareres og kaldes i bash script. Tre funktioner er erklæret i scriptet. Den første funktion erklæres for at udskrive en simpel besked, Bash -programmering for begyndere . Den anden funktion erklæres for at tildele en strengværdi i en variabel, $ return_str der vil udskrive, Lær bash -programmering med LinuxHint efter at have kaldt funktionen. Den tredje funktion erklæres for at læse en argumentværdi som cirkelradius, der vil blive givet på tidspunktet for kald til funktionen. Her, lokal bruges til at læse argumentværdien. Denne funktion beregner cirkelarealet baseret på radiusværdi ved hjælp af formlen, πr2 og udskriv den beregnede arealværdi.

func.sh

#!/bin/bash

#Deklarere en simpel funktion
fungereprint_message()
{
smed ud 'Bash -programmering for begyndere'
}

#Deklarere en funktion for at returnere en strengværdi
fungereret_strdata()
{
#Initialiser variablen med strengværdi
return_str='Lær bash -programmering med LinuxHint'
}

#Deklarere en funktion for at læse argumentværdi
fungereberegn_område()

#Læs den beståede argumentværdi
lokal radius=$ 1
areal= $(smed ud $ radius*$ radius*3.14

#Ring til funktionen for at udskrive en simpel besked
print_message

#Ring til den funktion, der vil tildele en strengværdi i en variabel
ret_strdata

#Udskriv værdien af ​​variablen
smed ud $ return_str

#Læs radiusværdien
smed ud 'Indtast radiusværdien'
Læsarbejde

#Ring til funktionen med radiusværdi
beregn_område$ rad

Produktion:

Kør scriptet.

$bashfunc.sh

Følgende output vises efter at scriptet er kørt. De to første linjer udskrives ved at kalde funktionerne, print_message () og ret_strdata() . Den sidste linje udskrives ved at kalde funktionen, beregn_område () med den indtastede indgangsradiusværdi.

Hvis du vil vide om returnering af en streng fra bash -funktion, kan du denne tutoria det.

Gå til toppen

Opkald til programmer i et script

Du kan bruge mange typer kommandoer til at kalde andre programmer i ethvert bash -script, f.eks kilde, bash, eval, exec osv. Antag tre bash -filer, tilføj.sh , trække fra.sh, multiplicere.sh og division.sh skabt til at udføre addition, subtraktion, multiplikation og division. Her, trække.sh og division.sh læs kommandolinjeargumenter. Scriptet for alle disse fire filer er angivet nedenfor.

tilføj.sh

#!/bin/bash
til=60
b=40
((resultat=$ a+$ b))
smed ud 'Tilføjelsen af$ a+$ b=$ resultat'

subract.sh

#!/bin/bash
til=$ 1
b=$ 2
((resultat=$ a-$ b))
smed ud 'Subtraktionen af$ a-$ b=$ resultat'

multiplicere.sh

#!/bin/bash
((resultat=$ 1*$ 2))
smed ud 'Multiplikationen på $ 1 og $ 2 er$ resultat'

divide.sh

#!/bin/bash
til=$ 1
b=2
((resultat=$ a/$ b))
smed ud 'Opdelingen af$ aved$ ber$ resultat'

Opret en bash -fil med navnet, callpro.sh med følgende script til at kalde de nævnte bash -filer ved hjælp af source, bash, eval og exec kommandoer. Du skal angive udførelsestilladelse til ovenstående fire filer, før du kører følgende script. kommandoen `kilde` bruges til at ringe tilføj.sh fil. kommandoen `bash` bruges til at udføre filen subtract.sh. kommandoen `eval` bruges til at udføre filen multiply.sh. To inputværdier sendes som kommandolinjeargumenter for kommandoen 'eval'. Den sidste kommando er exec -kommando, der kun fungerer med absolut sti. Til dette er det fulde stinavn for filen divide.sh angivet i scriptet.

callpro.sh

#!/bin/bash
script1='add.sh'
script2='subtract.sh'
script3='multiply.sh'
script4='/home/fahmida/code/divide.sh'

kilde '$ script1'

bash $ script2 halvtreds tyve

smed ud 'Indtast værdien af ​​a'
Læstil
smed ud 'Indtast værdien af ​​b'
Læsb
eval bash $ script3 $ a $ b
exec $ script4 30

Produktion:

Kør scriptet.

$bashcallpro.sh

Følgende output vises efter at scriptet er kørt.

Gå til toppen

Oprettelse af menuer

Der er en nyttig kommando i bash til at oprette en simpel menu, som kaldes 'vælg' kommando. Der kan oprettes forskellige typer menuer ved hjælp af denne kommando. En bestemt dataliste bruges til at oprette en menu med denne kommando. Opret en bash -fil med følgende kode for at se brugen af 'vælg' kommando til oprettelse af en menu. I dette eksempel udskrives listen over fem emner som en menu og beder brugeren om at vælge et hvilket som helst sprog fra listen. Den valgte værdi gemmes i variablen, $ sprog der udskrives senere ved at sammenkoble med en anden streng. Scriptet vil løbende bede om valg af sprog, indtil brugeren trykker på 6 at afslutte fra scriptet.

menu.sh

#!/bin/bash

#Udskriv besked til brugeren
smed ud 'Vælg dit yndlingssprog'

# Definer listen over et menupunkt
VælgSprogiC# Java PHP Python Bash Exit
gøre
#Udskriv den valgte værdi
hvis [[ $ sprog=='Afslut' ]]
derefter
Afslut 0
andet
smed ud 'Valgt sprog er$ sprog'
være
Færdig

Produktion:

Kør scriptet.

$bashmenu.sh

Ifølge det følgende output trykte brugeren på 3 for første gang, der udskriver PHP og trykker på 6 for anden gang, der sluttede fra scriptet.

Hvis du vil vide mere om oprettelse af bash menu med 'select', kan du besøge denne vejledning.

Gå til toppen

Kommandolinjebehandling

Nogle gange skal vi angive inputværdier, når scriptet udføres fra kommandolinjen. Denne opgave kan udføres på to måder i bash. En måde er ved at bruge argumentvariabler og en anden måde er ved at bruge getopts -funktion. Læsning af kommandolinjens inputdata fra terminalen ved hjælp af argumentvariablen er vist i dette afsnit.

Opret en bash -fil med følgende script for at se brugen af ​​læsning af kommandolinjens argumentværdi. Dette script vil læse tre kommandolinjeargumenter, som vil blive gemt i variablerne, $ operand1, $ operand2 og $ operator. For at udføre scriptet korrekt skal de første og tredje argumentværdier være tallet, og den anden argumentværdi skal være en af ​​de fire aritmetiske operatorer ('+', '-', '/', 'x'). hvis statement vil kontrollere værdien af ​​$ operator og udføre operationen baseret på operatoren og udskrive værdien.

cl1.sh

#!/bin/bash

#Udskriv argumentvariablerne
smed ud 'Argumentværdier er: $ 1 $ 2 $ 3'

# Gem argumentværdier
operand1=$ 1
operand2=$ 3
operatør=$ 2

#Kontroller den anden kommandeargumentværdi for at udføre den aritmetiske handling
hvis [[ $ operatør=='+' ]]
derefter
((resultat=$ operand1+$ operand2))
elif [[ $ operatør=='-' ]]
derefter
((resultat=$ operand1-$ operand2))
elif [[ $ operatør=='x' ]]
derefter
((resultat=$ operand1*$ operand2))
elif [[ $ operatør=='/' ]]
derefter

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

# udskriv resultatet
smed ud -Og 'Resultatet er =$ resultat'

Produktion:

Kør scriptet.

$bashcl1.sh

Scriptet udføres fire gange for fire typer af aritmetiske operatorer. Følgende output vises for argumentværdierne, 6 + 3, 6 - 3, 6 x 3 og 6 /3 .

Argumentværdier kan sendes med navn-værdi-par i bash. Opret en bash -fil med følgende script for at vise, hvordan du læser argumentværdier med navnet. Scriptet vil læse to argumentvariabler. Argumentværdierne med navn udskrives i scriptets første sætning. Dernæst bruges en for loop til at gentage arrayet, der indeholder kommandolinjeargumentværdier. Hvert element i arrayet adskilles i et nøgleværdipar ved hjælp af kommandoen 'cut'. Dernæst bruges sagserklæring til at udskrive en bestemt meddelelse baseret på nøgleværdien.

cl2.sh

. #! /er/bash

#Udskriv argumentvariablerne
smed ud 'Argumentværdier er: $ 1 $ 2'

#Læs hvert argument separat ved hjælp af for loop
tilvredi '[email protected]'
gøre

#Adskil argumentnavn og værdi
nøgle= $(smed ud $ arg | skære -f1 -d=)
værdi= $(smed ud $ arg | skære -f2 -d=)

#Udskriv besked baseret på argumentets navn
sag $ nøgle i
navn) smed ud 'Elevens navn =$ værdi';;
mærke) smed ud 'Opnået mærke =$ værdi' ;;
*)
esac
Færdig

Produktion:

Kør scriptet med følgende kommandolinjeargumenter.

$bashcl2.shnavn= Abir Hossainmærke=90

To kommandolinjeargumenter findes i ovenstående kommandoer. Disse er navn = Abir Hossain og mærke = 90 . navn og mærker er adskilt af scriptet, og to værdier udskrives efter formatering af output.

Behandling af kommandolinjeargumenter ved hjælp af getopts funktion diskuteres ikke i denne vejledning. Hvis du vil vide mere om kommandolinjebehandling ved hjælp af getopts funktion, så kan du besøge denne vejledning .

Gå til toppen

Aritmetik

Regnearbejde er et almindeligt krav for ethvert programmeringssprog. Bash udfører den aritmetiske operation på en anden måde end et andet standard programmeringssprog. Der er flere måder at udføre aritmetiske operationer på bash. En af de enkle måder at udføre den aritmetiske operation er vist i dette afsnit. Opret en bash -fil med følgende script. Fire typer af aritmetiske operationer er vist i dette script. En simpel summerings- og opdelingsoperation vises ved at bruge dobbelte første parenteser i begyndelsen af ​​scriptet. Dernæst vises operationen før forøgelse. Endelig er måden at bruge stenografoperator vist i den sidste del af scriptet.

arith.sh

#!/bin/bash
# Beregn summen
resultat= $((halvtreds+25))
# Udskriv summeringsværdi
smed ud 'sum =$ resultat'

# Beregn opdelingen
resultat= $((halvtreds/25))
# Udskriv divisionsværdi
smed ud 'division =$ resultat'

# Tildel en værdi til N
N=10
# Gør præ-inkrement
((--N))
# Udskriv værdien af ​​N
smed ud 'Værdi efter fald =$ N'

# Brug af stenografoperator
((N +=10 ))
# Udskriv værdien af ​​N
smed ud 'Værdi efter tilføjelse af 10 =$ N'

Produktion:

Kør scriptet.

$basharith.sh

Følgende output vises efter at scriptet er kørt.

Alle aritmetiske handlinger udføres ved at bruge dobbelt parenteser i dette script ovenfor. Men du kan bruge ' lade ',' eksp 'Og' bc 'Kommando til at udføre den aritmetiske operation i bash. Hvis du vil vide mere om disse kommandoer til bash aritmetiske operationer, kan du besøge denne vejledning.

Gå til toppen

Strengmanipulation

Mange typer opgaver kan udføres med strengen data i bash. Nogle er sammenkædning af streng, sammenligning af streng, opdeling af en streng, ændring af streng for store, osv. Der er ingen indbyggede strengfunktioner som andre standardsprog i bash til at udføre strengoperationer. Nogle almindelige strengmanipulationer diskuteres i dette afsnit af denne vejledning.

Sammenkædende streng

Tilføjelse af to eller flere strenge kaldes streng sammenkædning. Strengen er forbundet sammen i bash ved at placere den ene efter den anden. Opret en bash -fil med følgende script for at vise brugen af ​​streng sammenkædning. To strengvariabler initialiseres og udskrives efter kombination af variablerne. Her er indholdet af $ streng1 og $ string2 vil blive flettet og trykt.

concat.sh

#!/bin/bash

#Initialiser den første strengvariabel
streng 1='Jeg kan lide '
#Initialiser anden strengvariabel
streng2='Bash -programmering'
#Print efter at have kombineret begge strenge
smed ud '$ streng1$ string2'

Produktion:

Kør scriptet.

$bashconcat.sh

Følgende output vises efter at scriptet er kørt.

Du kan vide mere om streng sammenkædning fra denne vejledning.

Gå til toppen

Sammenligning af streng

Bash bruger forskellige typer operatører til at sammenligne strengdata. Opret en bash -fil med følgende script for at vise, hvordan du sammenligner to strengdata. En strengværdi tages som input i scriptet, der sammenlignes med en anden streng. Hvis værdien svarer til en meddelelse, Du kan lide Python vil blive udskrevet på anden måde Du kan lide PERL vil blive udskrevet.

sammenligne.sh

#!/bin/bash
smed udIndtast en hvilken som helst strengværdi
Læstekst

#Kontroller, at inputdataene svarer til Python
hvis [ $ tekst=='Python' ];derefter
smed ud 'Du kan lide Python.'
andet
smed ud 'Du kan lide PERL'
være

Produktion:

Kør scriptet.

$bashsammenligne.sh

Følgende output vises efter at scriptet er kørt, hvor inputværdien er 'PERL'.

Du kan vide mere om strengsammenligning fra denne vejledning .

Splitting String

Bash har ikke nogen indbygget splitfunktion til at opdele strengdata. Strengdataene kan deles på flere måder i bash baseret på forskellige typer afgrænsere. Opret en bash -fil med følgende script for at vise, hvordan strengdata kan opdeles i bash. En strengværdi tages som input. Dette script vil opdele værdien af $ tekst baseret på rummet. Her er IFS variabel bruges til at indstille afgrænseren. `læs` kommando bruges her til at opdele tekstværdien og gemme værdierne i et array. til loop bruges til at iterere arrayet og udskrive værdien af ​​hvert element.

split.sh

#!/bin/bash
#Indtast en strengværdi
smed udIndtast en strengværdi
Læstekst
# Indstil afgrænsningen
IFS=''
#Opdel værdien af ​​$ tekst i et array baseret på mellemrumsafgrænsning
Læs -tilarr<<< '$ tekst'
# Udskriv hver værdi i arrayet
tilværdii '$ {arr [@]}';
gøre
printf '$ værdi n'
Færdig

Produktion:

Kør scriptet.

$bashsplit.sh

Følgende output vises efter indtastning, Lær Bash -programmering . Denne inputværdi er en tekst med tre ord. Så strengen er opdelt i tre dele.

Du kan vide mere om strengsammenligning fra denne vejledning .

Ændring af strengens sag

De fleste scriptsprog har indbyggede funktioner til at ændre sagen for strengdataene. Men sagen om strengdata kan ændres i bash ved hjælp af `tr` kommando eller ved at bruge ':øverst' og ':nederste' nøgleord. Opret en bash -fil med følgende script for at kende måderne at ændre store og små bogstaver i bash. Her konverteres de første strengdata til store ved hjælp af '^^' symbol og den anden streng konverteres til små ved hjælp af `tr` kommando. `tr` kommandoen søger efter alle store bogstaver i strengen og konverterer tegnene til små bogstaver.

case.sh

#!/bin/bash

#Initialiser de første strengdata
tekst 1='[email protected]'

#Udskriv værdien af ​​$ text1 ved at konvertere alle tegn til store bogstaver
smed ud $ {email ^^}

#Initialiser den anden strengdata
tekst 2= 'Grundlæggende om programmering af bash'

#Udskriv værdien af ​​$ text2 ved at konvertere alle store til små bogstaver
smed ud $ tekst2 | NS [:øverst:] [:nederste:]

Produktion:

Kør scriptet.

$bashcase.sh

Følgende output vises efter at scriptet er kørt.

Du kan vide mere om strengsammenligning fra denne vejledning .

Gå til toppen

Læser strengdata gennem løkken

Strengdataene fungerer som et tegn array for ethvert programmeringssprog. Hvordan ' til 'Loop kan bruges til at læse string data i bash er vist i dette afsnit. Opret en basisfil med følgende script for at læse hver del af strengværdien ved hjælp af for loop.

readstr.sh

#!/bin/bas
# Læs hvert ord i en tekst ved at bruge til loop
tilværdiiBash programmeringtilbegyndere
gøre
smed ud $ værdi
Færdig

Produktion:

Kør scriptet.

$bashreadstr.sh

Følgende output vises efter at scriptet er kørt.

Du kan vide mere om iterering af strengedata ved at bruge loop fra denne vejledning .

Gå til toppen

Returnering af returkoder fra et script og indfangning af et andet script

Et bash -script kan fange returkoder fra et andet script ved at kalde scriptet og bruge '$?' at læse returværdien. Antag, at en bash -fil hedder first.sh returnerer en kode efter udførelse. Opret en anden bash -fil med navnet second.sh og tilføj følgende script for at fange returværdien og udføre nogle andre opgaver. Koden for begge filer er angivet nedenfor. first.sh filen vil blive kaldt fra second.sh fil i begyndelsen af ​​scriptet. first.sh returnerer en exit -kode baseret på inputværdien. second.sh vil fange koden ved '$?' og sammenlign med 1. Hvis begge værdier er ens, udskrives det, Inputnummeret er større end 100 ellers udskrives det, Inputnummeret er mindre end eller lig med 100 .

first.sh

#!/bin/bash

smed ud 'Indtast en numerisk værdi'
Læsn

# Kontroller, at inputværdien er mindre end eller lig med 100 eller ej
hvis [[ $ n -det 100 ]]
derefter
Afslut 0
andet
Afslut 1
være

second.sh

#! /bin/bash

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

#Kontroller, at returkoden er lig med 1 eller ej
hvis [ $? -ækv 1 ]
derefter
smed ud 'Inputnummeret er større end 100'
andet
smed ud 'Inputnummeret er mindre end eller lig med 100'
være

Produktion:

Kør scriptet.

$bashsecond.sh

Følgende output vises, når scriptet udføres af 55 og 110 to gange.

Gå til toppen

Læsning og skrivning til filer

Læsning og skrivning af filer er almindelige krav til bash -programmering. Bash har ikke nogen indbygget funktion som et andet sprog til at læse eller skrive filen. Der er flere måder at læse filen på bash. Den mest almindelige måde at læse eller skrive en fil i bash på er at bruge `kat` kommando. Men denne kommando bruges til at læse hele filens indhold ad gangen. Du kan også læse enhver fil linje for linje ved hjælp af en hvilken som helst loop og `læs` kommando. Ved hjælp af omdirigeringsoperator, '>' , kan du skrive data til en hvilken som helst fil i bash. Hvis du vil tilføje data til en fil, skal du bruge '>>' operatør. Både læsning og skrivning af filoperationer vises i den næste del af dette afsnit.

Læser fil i bash

Opret en bash -fil med følgende script for at læse en eksisterende fil med navnet ' hardware.txt ’. Indholdet af denne fil er angivet nedenfor. I scriptet læses hele filens indhold af `kat` kommando først og derefter, mens loop bruges til at læse filen linje for linje.

hardware.txt

Overvåge
Tastatur
Mus
Scanner
Printer

readfile.sh

#!/bin/bash

smed ud 'Læser fil ved hjælp af kat -kommando'

# Læs filens indhold ved hjælp af kommandoen `cat`
indhold=``kathardware.txt``
smed ud $ indhold

smed ud 'Læser fil linje for linje ved hjælp af loop'

# Tildel filnavnet
filnavn='hardware.txt'

# Hver linje i filen vil blive læst af hver iteration af sløjfen
mens Læslinje;
gøre
# udskriv linjen
smed ud $ linje
Færdig<$ filnavn

Produktion:

Kør følgende kommandoer.

$kathardware.txt
$bashreadfile.sh

Her vil den første kommando udskrive filens indhold, hardware.txt uden at køre noget bash -script, og den anden kommando kører scriptet af readfile.sh og udskriv filens indhold to gange ved at bruge `kat` kommando og `læs` kommando med while loop. Du kan besøge dette tutorial for at vide mere om at læse fil linje for linje.

Skrive fil i bash

Opret en bash -fil med følgende script for at skrive nyt indhold i en ny fil og tilføje data i den fil.

writeefile.sh

#!/bin/bash

smed ud 'Indtast noget tekst'
#Læs strengdata
Læsstr1
#Føj inputdata til filen for første gang
smed ud $ str1 >test.txt

smed ud 'Indtast anden tekst'
#Læs en anden strengdata
Læsstr2
#Tilføj inputdata i slutningen af ​​filen
smed ud $ str2 >>test.txt

#Vis hele filens indhold
smed ud ``kattest.txt``

Produktion:

Kør scriptet.

$bashwriteefile.sh

Følgende output vises efter at scriptet er kørt.

Gå til toppen

Rør

Pipe bruges til at omdirigere kommandoutput til andet kommandoindgang. Det kan bruges blandt forskellige typer bash -kommandoer til at generere specifikt output. Standardindgangen er forbundet med standardoutput i Linux via rør. Du skal indstille kommandoen i rækkefølge med rør (|) symbol for at få det ønskede output. To eller flere kommandoer kan udføres sammen i en enkelt kommando ved hjælp af rør. Du skal udføre flere kommandoer i flere linjer uden rør for at udføre den samme opgave. Så det er meget fordelagtigt at bruge rør til at udføre mange typer opgaver i en kort form.

syntaks:

kommando 1|kommando2|...

Her vil output fra kommandoen1 blive sendt som input af kommando2.

Den samme type opgave udføres med rør og uden rør i den næste del af dette afsnit. Antag en tekstfil med navnet mærker.txt er givet med følgende data.

mærker.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 skal sortere filens data og finde ud af og udskrive alle indtastninger af elevens navn 'K ja ' . Du kan udføre denne opgave ved at køre flere kommandoer uden at bruge et rør, der vises i det næste afsnit. Følgende kommandoer skal køre for at få det ønskede output. Den første kommando sorterer filen. Den anden kommando søger efter posten 'K ja ' ved hjælp af ' greb `kommando og gem output i en temp.txt fil. Den tredje kommando tæller de samlede linjer på a temp.txt fil ved hjælp af `wc` kommando.

$sorteremærker.txt
$greb 'Keya'mærker.txt>temp.txt
$Toilet -dettemp.txt

Produktion:

To poster af eleven, 'Keya' findes i filen. Så efter at have kørt ovenstående kommandoer, vises følgende output.

Du kan let flette ovenstående tre kommandoer og få det samme output ved at køre en enkelt kommando med et rør, der vises i den følgende kommando. Her kræves ingen midlertidig fil for at få output. Her er output fra ` sortere `kommando sendes som input til` greb `kommando og output af` greb `kommando sendes som input til `wc` kommando.

$sorteremærker.txt| greb 'Keya' | Toilet -det

Produktion:

Når du kører ovenstående kommando, får du følgende output som den tidligere kommandos output. Udgangen af ​​kommandoen vil være 2.

Gå til toppen

Konklusion:

De fleste nyttige og nødvendige emner i bash scripting sprog er forsøgt at dække i denne vejledning. Håber, læseren vil få gavn af at have læst denne vejledning og være i stand til at skrive bash script mere effektivt.