Bash Scripting Handledning för nybörjare

Bash Scripting Tutorial



Standardkommandospråket för Linux är Bash -skript. Vi måste köra många kommandon i Linux dagligen för många ändamål. Dessa dagliga uppgifter kan automatiseras med hjälp av ett bash -skript. Alla användare kan lära sig detta skriptspråk mycket enkelt och snabbt. Om du är ny i bash -programmering är den här självstudien för dig.

Innehåll:

  1. Kommentarer
  2. echo Command
  3. Variabler
  4. Villkorligt uttalande
  5. Slingor
  6. Funktioner
  7. Kalla program i ett manus
  8. Skapa menyer
  9. Kommandoradsbehandling
  10. Aritmetisk
  11. Strängmanipulation
  12. Returnera returkoder från ett skript och fånga in ett annat skript
  13. Läsa och skriva till filer
  14. Rör

Kommentarer

Att lägga till kommentarer med koden är en viktig del av alla programmeringsspråk. Kommentarerna analyseras inte med skriptet vid körningstillfället. Läsaren kan förstå vilken kod som helst om koden är välkommenterad. Du kan lägga till en kommentar på flera sätt i bash script. Hur du kan lägga till kommentarer med en rad och flera rader i ett bash-skript visas i den här delen. Skapa en bash -fil med följande skript för att veta användningen av bash -kommentar. Här används symbolen '#' för att lägga till en kommentar med en rad och ett citat (') med': 'används för att lägga till kommentarer med flera rader.







bash_comment.sh



#!/bin/bash
#Ta ett tal som inmatning
kastade ut 'Ange ett nummer'
läsatill
:'
Kontrollera att inmatningsnumret är
mindre än 10 eller större än 10 eller lika med 10
'

om [[ $ a -lt 10 ]]
sedan
kastade ut 'Antalet är mindre än 10'
elif [[ $ a -gt 10 ]]
sedan
kastade ut 'Antalet är större än 10'
annan
kastade ut 'Siffran är lika med 10'
vara

Produktion:



Kör skriptet.





$våldsamt slagbash_comment.sh

Här körs skriptet tre gånger med inmatningsvärdet 3, 10 och 90. Följande utmatning visas.



Om du vill veta mer om bash -kommentarer kan du kolla denna handledning .

Gå till toppen

echo -kommando

kommandot 'echo' används i bash för att skriva ut utdata i terminalen. Olika alternativ kan användas med echo -kommandot i bash för att skriva ut utskriften på olika sätt. Skapa en bash -fil med följande skript för att känna till de två enkla användningarna av kommandot 'echo'. Här kommer det första 'echo' -kommandot att skriva ut en enkel textdata med en ny rad och det andra echo -kommandot kommer att skriva ut en enkel text utan ny rad.

echo_test.sh

#!/bin/bash
#Skriv ut den första texten
kastade ut 'Skriv ut text med en ny rad'
#Skriv ut den andra texten
kastade ut -n 'Skriv ut text utan en ny rad'

Produktion:

Kör skriptet.

$våldsamt slagecho_test.sh

Följande utdata visas efter att kommandot ovan har körts.

Det finns många andra användningsområden för kommandot 'echo' i bash. Du kan kontrollera den här självstudien för att veta mer om kommandot `echo`.

Gå till toppen

Variabler

Variabel deklaration är en nödvändig del av alla programmeringsspråk. Bash -variabler kan deklareras på olika sätt. När ett värde tilldelas i en variabel används ingen symbol i början av variabeln. '$' -Symbolen används med variabelnamnet vid tidpunkten för att läsa av variabelns värde. Variabel kan användas från terminalen eller kan användas i vilket bash -skript som helst.

Följande kommandon kommer att deklarera en strängvariabel med namnet mystr med ett visst värde och sedan skriva ut värdet på variabeln i terminalen.

$mystr='Jag gillar bash programmering'
$kastade ut $ mystr

Produktion:

Skapa en bash -fil med följande skript. Två variabler deklareras här. Dessa är $ a och $ b . Om ingångsvärdet som lagras i $ a är lika med $ b sedan meddelandet, Siffrorna är lika kommer att skrivas ut annars Siffrorna är inte lika kommer att skrivas ut.

var.sh

#!/bin/bash
kastade ut 'Ange ett nummer'
läsatill
b=100
om [[ $ a -ekv $ b ]]
sedan
kastade ut 'Siffrorna är lika'
annan
kastade ut 'Siffrorna är inte lika'
vara

Produktion:

Kör skriptet.

$våldsamt slagvar.sh

Kommandot ovan körs två gånger med värdet 56 och 100. Följande utmatning visas.

Om du vill veta mer om bash -variabler kan du kolla denna handledning .

Gå till toppen

Villkorligt uttalande

Liksom ett annat programmeringsspråk kan du använda villkorligt uttalande i bash. ' Om då annars 'Och' fall 'Uttalanden används huvudsakligen för att implementera tillståndsuttalanden i alla programmeringsspråk. Användning av villkorligt uttalande genom att använda 'om' uttalande visas i det här avsnittet i denna handledning. Skapa en bash -fil med följande skript där villkorligt uttalande används. Här kommer två värden att tas från användaren som inmatning och lagras i variablerna, $ -kod , och $ ålder . 'If' -uttryck används för att kontrollera värdet på $ ålder är större än eller lika med 18 och värdet på $ -kod är 1100 . Om båda villkoren är sanna, meddelandet, Du är berättigad att se filmen kommer att skrivas ut annars Du är inte berättigad att se filmen kommer att skrivas ut.

cond.sh

#!/bin/bash

kastade ut 'Ange din kod'
läsakoda
kastade ut 'Ange din ålder'
läsaålder

om [[ $ ålder -ge 18 && $ -kod -ekv '1100' ]]
sedan
kastade ut 'Du är berättigad att se filmen'
annan
kastade ut 'Du är inte berättigad att se filmen'
vara

Produktion:

Kör skriptet.

$våldsamt slagcond.sh

Följande utdata visas efter att ha tagit olika ingångsvärden. 1100 ges som en kod och 5 ges som ålder för den första körningen och om villkoret returnerar falskt för dessa värden. 1100 ges som en kod och 45 ges som ålder för den andra körningen som returnerar true för if -tillståndet.

Om du vill veta mer om bash conditional statement kan du kolla den här självstudien.

Gå till toppen

Slingor

När vissa delar av manuset måste köras flera gånger används loopet för att utföra uppgiften. Bash stöder tre typer av loop -deklaration som andra språk. Dessa är för, medan och tills slingor. Baserat på programmeringskraven används en viss slinga i skriptet. Användningen av dessa tre typer av slingor visas i detta avsnitt med hjälp av enkla exempel.

Använd för loop

Skapa en bash -fil med följande skript där ` för ' loop används för iteration. `för` loop används huvudsakligen för att iterera en lista med data eller en array. Här används en lista med vardagarnamn och varje vardagens namn itereras med hjälp av för loop. `om` uttalande används för att skriva ut ett visst meddelande baserat på vardagens namn.

för.sh

#Läs ett vardagarnamn i varje iteration av slingan
fördagimåndag tisdag onsdag torsdag fredag ​​lördag söndag
do

#Kontrollera att vardagens namn är måndag eller torsdag
om [[ $ dag=='Måndag' || $ dag=='Torsdag' ]]
sedan
kastade ut 'Möte på$ dagkl 9:30

#Kontrollera att vardagens namn är tisdag eller onsdag eller fredag
elif [[ $ dag=='Tisdag' || $ dag=='Onsdag' || $ dag=='Fredag' ]]
sedan
kastade ut 'Träning på$ dagklockan 11.00
annan

#Skriv ut 'Holiday' för andra dagar
kastade ut '$ dagär semester '
vara
Gjort

Produktion:

Kör skriptet.

$våldsamt slagför.sh

Följande utdata visas efter att manuset har körts.

Om du vill veta mer använd av bash för loop kan du kolla den här självstudien.

Använd medan loop

Skapa en bash -fil med följande skript där ` medan ` loop används för iteration. Detta manus kommer att skriva ut de siffror från 1 till 20 som är jämna och delbara med 5. Här, $ räknare variabel används för att styra slingans iteration och värdet på denna variabel ökas med 1 i varje iteration. När `om` villkoret kommer att returnera sant så kommer det att skriva ut värdet av $ räknare .

#!/bin/bash

#Skriv ut meddelandet
kastade ut 'Skriv ut siffrorna som är jämna och delbara med 5'

#Initiera räknaren
disken=1

#Iterera slingan tills $ -räknaren är mindre än eller lika med 20
medan [ $ räknare -de tjugo ]
do

#Kolla att $ -räknaren är delbar med 2 och 5
om [[ $ räknare%2-ekv 0 && $ räknare%5-ekv 0 ]]
sedan
#Skriv ut $ -räknare utan ny rad
kastade ut '$ räknare'
vara

#Öka $ -räknaren med 1
((räknare ++))
Gjort
kastade ut 'Gjort'

Produktion:

$våldsamt slagmedan. sh

Det finns bara siffror inom 1-20 som är jämna och delbara med 5. Följande utdata visas efter att manuset har körts.

Om du vill veta mer används av bash ` medan ' loop då kan du kolla denna handledning .

Använd till loop

Skapa en bash -fil med följande skript där ` tills ' loop används för iteration. Detta manus kommer att skriva ut alla udda tal från 0 till 20. $ n variabel används i detta skript för att iterera slingan.

tills.sh

#!/bin/bash

#Initiera variabeln, n
n=tjugo

#Upprepa slingan tills värdet på $ n är större än 0
fram tills [ $ n -lt 0 ]
do

#Kolla att värdet på n är udda
om [[ $ n%2-gt 0 ]]
sedan
kastade ut $ n
vara

#Öka värdet på n med 1
((n=$ n-1))
Gjort

Produktion:

Kör skriptet.

$våldsamt slagtills.sh

Skriptet kommer att skriva ut alla jämna nummer från 20 till 1. Följande utdata visas efter att manuset har körts.

Gå till toppen

Funktioner

När ett kodblock måste köra flera gånger i ett skript används funktionen för att utföra uppgiften. Du kommer att behöva anropa funktionen endast vid namn när skriptet som definieras i funktionen behöver köras många gånger istället för att lägga till samma skript flera gånger. Den första och slutande första parentesen används med funktionsnamn för att deklarera funktionen i bash script. Funktionen kan bara kallas med funktionsnamnet i bash. Bash stöder inte funktionsargument som ett annat standardprogrammeringsspråk. Men värdet kan överföras till bash -funktionen på ett annat sätt som visas i det här avsnittet. Värdet kan returneras från funktionen med returangivelsen eller utan att använda retursedeln.

Skapa en bash -fil med följande skript för att veta hur funktionerna kan deklareras och kallas in bash script. Tre funktioner deklareras i manuset. Den första funktionen deklareras för att skriva ut ett enkelt meddelande, Bash -programmering för nybörjare . Den andra funktionen deklareras för att tilldela ett strängvärde i en variabel, $ return_str som kommer att skriva ut, Lär dig bash -programmering med LinuxHint efter att ha ringt funktionen. Den tredje funktionen deklareras att läsa ett argumentvärde som cirkelradie som kommer att tillhandahållas vid tidpunkten för funktionens anrop. Här, lokal används för att läsa argumentvärdet. Denna funktion beräknar cirkelns yta baserat på radievärdet med hjälp av formeln, πr2 och skriv ut det beräknade ytvärdet.

func.sh

#!/bin/bash

#Deklarera en enkel funktion
fungeraprint_message()
{
kastade ut 'Bash -programmering för nybörjare'
}

#Deklarera en funktion för att returnera ett strängvärde
fungeraret_strdata()
{
#Initiera variabeln med strängvärde
return_str='Lär dig bash -programmering med LinuxHint'
}

#Deklarera en funktion för att läsa argumentvärde
fungeraberäkna_område()

#Läs det godkända argumentvärdet
lokal radie=$ 1
område= $(kastade ut $ radie*$ radie*3.14

#Ring funktionen för att skriva ut ett enkelt meddelande
print_message

#Ring funktionen som tilldelar ett strängvärde i en variabel
ret_strdata

#Skriv ut variabelns värde
kastade ut $ return_str

#Läs radievärdet
kastade ut 'Ange radievärdet'
läsaarbete

#Ring funktionen med radievärde
beräkna_område$ rad

Produktion:

Kör skriptet.

$våldsamt slagfunc.sh

Följande utdata visas efter att manuset har körts. De två första raderna skrivs ut genom att anropa funktionerna, print_message () och ret_strdata () . Den sista raden skrivs ut genom att ringa funktionen, beräkna_område () med det angivna ingångsradievärdet.

Om du vill veta om att returnera en sträng från bash -funktionen kan du denna tutoria de.

Gå till toppen

Kalla program i ett manus

Du kan använda många typer av kommandon för att ringa till andra program i alla bash -skript, t.ex. källa, bash, eval, exec , etc. Antag tre bash -filer, add.sh , subtrahera.sh, multiplicera.sh och division.sh skapad för att utföra addition, subtraktion, multiplikation och division. Här, subtrahera.sh och division.sh läs kommandoradsargument. Skriptet för alla dessa fyra filer ges nedan.

add.sh

#!/bin/bash
till=60
b=40
((resultat=$ a+$ b))
kastade ut 'Additionen av$ a+$ b=$ resultat'

subract.sh

#!/bin/bash
till=$ 1
b=$ 2
((resultat=$ a-$ b))
kastade ut 'Subtraktionen av$ a-$ b=$ resultat'

multiplicera.sh

#!/bin/bash
((resultat=$ 1*$ 2))
kastade ut 'Multiplikationen av $ 1 och $ 2 är$ resultat'

divide.sh

#!/bin/bash
till=$ 1
b=2
((resultat=$ a/$ b))
kastade ut 'Uppdelningen av$ aförbi$ bär$ resultat'

Skapa en bash -fil med namnet, callpro.sh med följande skript för att anropa de nämnda bash -filerna med hjälp av käll-, bash-, eval- och exec -kommandon. Du måste ange körningstillstånd för ovanstående fyra filer innan du kör följande skript. kommandot 'source' används för att ringa add.sh fil. `bash` -kommandot används för att köra filen subtract.sh. kommandot 'eval' används för att köra multiply.sh -filen. Två ingångsvärden skickas som kommandoradsargument för kommandot 'eval'. Det sista kommandot är exec -kommando som endast fungerar med absolut sökväg. För detta anges hela sökvägsnamnet för divide.sh -filen i skriptet.

callpro.sh

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

källa '$ script1'

våldsamt slag $ script2 femtio tjugo

kastade ut 'Ange värdet på a'
läsatill
kastade ut 'Ange värdet på b'
läsab
eval våldsamt slag $ script3 $ a $ b
exec $ script4 30

Produktion:

Kör skriptet.

$våldsamt slagcallpro.sh

Följande utdata visas efter att manuset har körts.

Gå till toppen

Skapa menyer

Det finns ett användbart kommando i bash för att skapa en enkel meny som kallas 'välj' kommando. Olika typer av menyer kan skapas med det här kommandot. En särskild datalista används för att skapa en meny med detta kommando. Skapa en bash -fil med följande kod för att se användningen av 'välj' kommando för att skapa en meny. I det här exemplet skrivs listan med fem objekt ut som en meny och uppmanar användaren att välja vilket språk som helst från listan. Det valda värdet lagras i variabeln, $ språk som skrivs ut senare genom att sammanfoga med annan sträng. Skriptet kommer kontinuerligt att be om att välja språk tills användaren trycker på 6 att avsluta från skriptet.

menu.sh

#!/bin/bash

#Skriv ut meddelande för användaren
kastade ut 'Välj ditt favoritspråk'

# Definiera listan över ett menyalternativ
VäljspråkiC# Java PHP Python Bash Exit
do
#Skriv ut det valda värdet
om [[ $ språk=='Utgång' ]]
sedan
utgång 0
annan
kastade ut 'Valt språk är$ språk'
vara
Gjort

Produktion:

Kör skriptet.

$våldsamt slagmenu.sh

Enligt följande utdata tryckte användaren på 3 för första gången som skrev ut PHP och tryckte på 6 för andra gången som avslutades från skriptet.

Om du vill veta mer om bash -menyskapande med 'select' kan du besöka den här självstudien.

Gå till toppen

Kommandoradsbehandling

Ibland måste vi ange inmatningsvärden när man kör skriptet från kommandoraden. Denna uppgift kan utföras på två sätt i bash. Ett sätt är att använda argumentvariabler och ett annat sätt är att använda getopts -funktionen. Läsa kommandoradsinmatningsdata från terminalen med hjälp av argumentvariabeln visas i detta avsnitt.

Skapa en bash -fil med följande skript för att se hur man läser kommandoradsargumentvärdet. Detta skript kommer att läsa tre kommandoradsargument som lagras i variablerna, $ operand1, $ operand2 och $ operator. För att köra skriptet korrekt måste de första och tredje argumentvärdena vara antalet och andra argumentvärdet måste vara något av de fyra aritmetiska operatorerna (‘+’, ‘-’, ‘/’, ‘x’). om statement kommer att kontrollera värdet på $ operator och utföra operationen baserat på operatören och skriva ut värdet.

cl1.sh

#!/bin/bash

#Skriv ut argumentvariablerna
kastade ut 'Argumentvärden är: $ 1 $ 2 $ 3'

# Spara argumentvärden
operand1=$ 1
operand2=$ 3
operatör=$ 2

#Kontrollera det andra kommando -argumentvärdet för att utföra den aritmetiska operationen
om [[ $ operatör=='+' ]]
sedan
((resultat=$ operand1+$ operand2))
elif [[ $ operatör=='-' ]]
sedan
((resultat=$ operand1-$ operand2))
elif [[ $ operatör=='x' ]]
sedan
((resultat=$ operand1*$ operand2))
elif [[ $ operatör=='/' ]]
sedan

((resultat=$ operand1/$ operand2))
vara

# skriv ut resultatet
kastade ut -Och 'Resultatet är =$ resultat'

Produktion:

Kör skriptet.

$våldsamt slagcl1.sh

Skriptet körs fyra gånger för fyra typer av aritmetiska operatorer. Följande utdata visas för argumentvärdena, 6 + 3, 6 - 3, 6 x 3 och 6 /3 .

Argumentvärden kan skickas med namn-värde-par i bash. Skapa en bash -fil med följande skript för att visa hur man läser argumentvärden med namnet. Skriptet kommer att läsa två argumentvariabler. Argumentvärdena med namn skrivs ut i skriptets första sats. Därefter används en for loop för att iterera matrisen som innehåller kommandoradsargumentvärden. Varje element i matrisen separeras i ett nyckel-värdepar med kommandot 'cut'. Därefter används ärendebesked för att skriva ut ett visst meddelande baserat på nyckelvärdet.

cl2.sh

. #! /am/våldsamt slag

#Skriv ut argumentvariablerna
kastade ut 'Argumentvärden är: $ 1 $ 2'

#Läs varje argument separat med hjälp av for loop
förargi '[e -postskyddad]'
do

#Separat argumentnamn och värde
nyckel-= $(kastade ut $arg | skära -f1 -d=)
värde= $(kastade ut $arg | skära -f2 -d=)

#Skriv ut meddelande baserat på argumentets namn
fall $ nyckel i
namn) kastade ut 'Studentens namn =$ värde';;
märke) kastade ut 'Erhållet märke =$ värde' ;;
*)
esac
Gjort

Produktion:

Kör skriptet med följande kommandoradsargument.

$våldsamt slagcl2.shnamn= Abir Hossainmärke=90

Två kommandoradsargument finns i kommandona ovan. Dessa är namn = Abir Hossain och märke = 90 . namn och märken separeras av skriptet och två värden skrivs ut efter formatering av utdata.

Behandla kommandoradsargument med getopts funktion diskuteras inte i denna handledning. Om du vill veta om kommandoradsbehandling med getopts funktion då kan du besöka denna handledning .

Gå till toppen

Aritmetisk

Att räkna är ett vanligt krav för alla programmeringsspråk. Bash gör den aritmetiska operationen på ett annat sätt än ett annat standardprogrammeringsspråk. Det finns flera sätt att göra aritmetiska operationer i bash. Ett av de enkla sätten att göra den aritmetiska operationen visas i detta avsnitt. Skapa en bash -fil med följande skript. Fyra typer av aritmetiska operationer visas i detta skript. En enkel summering och delning visas med dubbla första parenteser i början av manuset. Därefter visas förökningsoperationen. Slutligen visas sättet att använda stenografoperator i den sista delen av manuset.

arith.sh

#!/bin/bash
# Beräkna summan
resultat= $((femtio+25))
# Skriv ut summeringsvärde
kastade ut 'summa =$ resultat'

# Beräkna uppdelningen
resultat= $((femtio/25))
# Skriv ut divisionsvärde
kastade ut 'division =$ resultat'

# Tilldela ett värde till N
N=10
# Gör förhöjning
((--N))
# Skriv ut värdet på N
kastade ut 'Värde efter minskning =$ N'

# Använda stenografoperatör
((N +=10 ))
# Skriv ut värdet på N
kastade ut 'Värde efter att ha lagt till 10 =$ N'

Produktion:

Kör skriptet.

$våldsamt slagarith.sh

Följande utdata visas efter att manuset har körts.

Alla aritmetiska operationer utförs med hjälp av dubbla parenteser i detta skript ovan. Men du kan använda ' låta ',' expr 'Och' före Kristus ‘Kommando för att göra den aritmetiska operationen i bash. Om du vill veta mer om dessa kommandon för bash aritmetiska operationer kan du besöka den här självstudien.

Gå till toppen

Strängmanipulation

Många typer av uppgifter kan utföras med strängdata i bash. Vissa sammanfogar sträng, jämför sträng, delar en sträng, ändrar strängens fall, etc. Det finns inga inbyggda strängfunktioner som andra standardspråk i bash för att utföra strängoperationerna. Några vanliga strängmanipulationer diskuteras i det här avsnittet i den här självstudien.

Kopplingssträng

Att lägga till två eller flera strängar kallas strängsammanlänkning. Strängen sammanfogas i bash genom att placera den ena efter den andra. Skapa en bash -fil med följande skript för att visa användningen av sträng sammanfogning. Två strängvariabler initialiseras och skrivs ut efter att variablerna har kombinerats. Här är innehållet i $ string1 och $ string2 kommer att slås samman och skrivas ut.

concat.sh

#!/bin/bash

#Initiera den första strängvariabeln
sträng1='Jag gillar '
#Initiera den andra strängvariabeln
string2='Bash -programmering'
#Skriv ut efter att ha kombinerat båda strängarna
kastade ut '$ string1$ string2'

Produktion:

Kör skriptet.

$våldsamt slagconcat.sh

Följande utdata visas efter att manuset har körts.

Du kan veta mer om strängkoppling från den här självstudien.

Gå till toppen

Jämför sträng

Bash använder olika typer av operatörer för att jämföra strängdata. Skapa en bash -fil med följande skript för att visa hur du jämför två strängdata. Ett strängvärde tas som input i skriptet som jämförs med en annan sträng. Om värdet matchar ett meddelande, Du gillar Python kommer att skrivas ut annars Du gillar PERL kommer att skrivas ut.

jämför. sh

#!/bin/bash
kastade utAnge valfritt strängvärde
läsatext

#Kontrollera att inmatningsdata motsvarar Python
om [ $ text=='Pytonorm' ];sedan
kastade ut 'Du gillar Python.'
annan
kastade ut 'Du gillar PERL'
vara

Produktion:

Kör skriptet.

$våldsamt slagjämför. sh

Följande utdata visas efter att manuset har körts där inmatningsvärdet är 'PERL'.

Du kan veta mer om strängjämförelse från denna handledning .

Delande sträng

Bash har ingen inbyggd delningsfunktion för att dela strängdata. Strängdata kan delas på flera sätt i bash baserat på olika typer av avgränsare. Skapa en bash -fil med följande skript för att visa hur strängdata kan delas in i bash. Ett strängvärde tas som inmatning. Detta skript delar värdet på $ text baserat på rymden. Här, IFS variabel används för att ställa in avgränsaren. `läs` kommando används här för att dela upp textvärdet och lagra värdena i en array. för loop används för att iterera arrayen och skriva ut värdet för varje element.

split.sh

#!/bin/bash
#Ange ett strängvärde
kastade utAnge ett strängvärde
läsatext
# Ställ in avgränsaren
IFS=''
#Dela värdet på $ text i en array baserad på rymdavgränsare
läsa -tillarr<<< '$ text'
# Skriv ut varje värde i matrisen
förvärdei '$ {arr [@]}';
do
printf '$ värde n'
Gjort

Produktion:

Kör skriptet.

$våldsamt slagsplit.sh

Följande utdata kommer att visas efter att ingången tagits, Lär dig Bash -programmering . Detta inmatningsvärde är en text med tre ord. Så strängen är uppdelad i tre delar.

Du kan veta mer om strängjämförelse från denna handledning .

Ändra fall av strängen

De flesta skriptspråk har inbyggda funktioner för att ändra fallet med strängdata. Men fallet med strängdata kan ändras i bash med hjälp av `tr` kommando eller med ':övre' och ':lägre' nyckelord. Skapa en bash -fil med följande skript för att känna till sätten att ändra skiftläge i bash. Här konverteras den första strängdata till versaler med hjälp av ‘^^’ symbolen och den andra strängen konverteras till gemener med `tr` kommando. `tr` kommandot söker igenom alla stora bokstäver i strängen och konverterar tecknen till gemener.

case.sh

#!/bin/bash

#Initiera den första strängdata
text1='[e -postskyddad]'

#Skriv ut värdet på $ text1 genom att konvertera alla tecken till versaler
kastade ut $ {email ^^}

#Initiera den andra strängdata
text2= 'Grunderna för basprogrammering'

#Skriv ut värdet på $ text2 genom att konvertera alla stora till små bokstäver
kastade ut $ text2 | NS [:övre:] [:lägre:]

Produktion:

Kör skriptet.

$våldsamt slagcase.sh

Följande utdata visas efter att manuset har körts.

Du kan veta mer om strängjämförelse från denna handledning .

Gå till toppen

Läser strängdata genom slingan

Strängdata fungerar som en teckenmatris för alla programmeringsspråk. Hur ' för 'Loop kan användas för att läsa strängdata i bash visas i detta avsnitt. Skapa en basfil med följande skript för att läsa varje del av strängvärdet med hjälp av for loop.

readstr.sh

#!/bin/bas
# Läs varje ord i en text med hjälp av för loop
förvärdeiBash -programmeringförnybörjarna
do
kastade ut $ värde
Gjort

Produktion:

Kör skriptet.

$våldsamt slagreadstr.sh

Följande utdata visas efter att manuset har körts.

Du kan veta mer om itererande strängdata med hjälp av loop från denna handledning .

Gå till toppen

Returnera returkoder från ett skript och fånga in ett annat skript

Ett bash -skript kan fånga returkoder från ett annat skript genom att ringa manuset och använda '$?' för att läsa returvärdet. Anta att en bash -fil heter first.sh returnerar en kod efter körning. Skapa en annan bash -fil med namnet second.sh och lägg till följande skript för att få tillbaka returvärdet och göra några andra uppgifter. Koden för båda filerna ges nedan. first.sh filen kommer att anropas från second.sh filen i början av skriptet. first.sh kommer att returnera en utgångskod baserat på inmatningsvärdet. second.sh hämtar koden med '$?' och jämför med 1. Om båda värdena är lika skrivs det ut, Inmatningsnumret är större än 100 annars skrivs det ut, Inmatningsnumret är mindre än eller lika med 100 .

first.sh

#!/bin/bash

kastade ut 'Ange ett numeriskt värde'
läsan

# Kontrollera att ingångsvärdet är mindre än eller lika med 100 eller inte
om [[ $ n -de 100 ]]
sedan
utgång 0
annan
utgång 1
vara

second.sh

#! /bin/bash

#Kör filen, first.sh
våldsamt slag 'first.sh'

#Kontrollera att returkoden är lika med 1 eller inte
om [ $? -ekv 1 ]
sedan
kastade ut 'Inmatningsnumret är större än 100'
annan
kastade ut 'Inmatningsnumret är mindre än eller lika med 100'
vara

Produktion:

Kör skriptet.

$våldsamt slagsecond.sh

Följande utdata visas när skriptet körs av 55 och 110 två gånger.

Gå till toppen

Läsa och skriva till filer

Läsa och skriva filer är vanliga krav för bash programmering. Bash har ingen inbyggd funktion som ett annat språk för att läsa eller skriva filen. Det finns flera sätt att läsa filen i bash. Det vanligaste sättet att läsa eller skriva en fil i bash är att använda `katt` kommando. Men det här kommandot används för att läsa hela innehållet i filen åt gången. Du kan också läsa vilken fil som helst rad för rad med hjälp av valfri loop och `läs` kommando. Med omdirigeringsoperatör, '>' , kan du skriva data till valfri fil i bash. Om du vill lägga till data i någon fil måste du använda '>>' operatör. Både läs- och skrivfilsoperationer visas i nästa del av detta avsnitt.

Läser fil i bash

Skapa en bash -fil med följande skript för att läsa en befintlig fil med namnet ' hardware.txt ’. Innehållet i denna fil ges nedan. I skriptet läses hela innehållet i filen av `katt` kommando först och nästa, medan loop används för att läsa filen rad för rad.

hardware.txt

Övervaka
Tangentbord
Mus
Scanner
Skrivare

readfile.sh

#!/bin/bash

kastade ut 'Läser fil med cat -kommando'

# Läs innehållet i filen med kommandot `cat`
innehåll=''katthardware.txt''
kastade ut $ innehåll

kastade ut 'Läser fil rad för rad med loop'

# Tilldela filnamnet
filnamn='hardware.txt'

# Varje rad i filen kommer att läsas av varje iteration av slingan
medan läsalinje;
do
# skriv ut raden
kastade ut $ rad
Gjort<$ filnamn

Produktion:

Kör följande kommandon.

$katthardware.txt
$våldsamt slagreadfile.sh

Här kommer det första kommandot att skriva ut innehållet i filen, hardware.txt utan att köra något bash -skript och det andra kommandot kör scriptet av readfile.sh och skriv ut innehållet i filen två gånger med `katt` kommando och `läs` kommando med while loop. Du kan besöka detta handledning för att veta mer om att läsa fil rad för rad.

Skriva fil i bash

Skapa en bash -fil med följande skript för att skriva nytt innehåll i en ny fil och lägga till data i den filen.

skrivfil.sh

#!/bin/bash

kastade ut 'Skriv in lite text'
#Läs strängdata
läsastr1
#Lägg till inmatningsdata i filen för första gången
kastade ut $ str1 >test.txt

kastade ut 'Ange någon annan text'
#Läs en annan strängdata
läsastr2
#Lägg till indata i slutet av filen
kastade ut $ str2 >>test.txt

#Visa hela innehållet i filen
kastade ut ''katttest.txt''

Produktion:

Kör skriptet.

$våldsamt slagskrivfil.sh

Följande utdata visas efter att manuset har körts.

Gå till toppen

Rör

Rör används för att omdirigera kommandoutgångar till andra kommandoinmatningar. Den kan användas bland olika typer av bash -kommandon för att generera specifik utdata. Standardingången är ansluten till standardutmatning i Linux via rör. Du måste ställa in kommandot i följd med rör (|) symbol för att få önskad utmatning. Två eller flera kommandon kan köras tillsammans i ett enda kommando med hjälp av pipe. Du måste utföra flera kommandon i flera rader utan rör för att göra samma uppgift. Så att använda rör är mycket fördelaktigt för att utföra många typer av uppgifter i en kort form.

syntax:

kommando1|kommando2|...

Här kommer utmatningen från kommandot1 att skickas som ingången till kommando2.

Samma typ av uppgift görs med rör och utan rör i nästa del av detta avsnitt. Anta att en textfil heter marks.txt ges med följande data.

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

Du måste sortera data i filen och ta reda på och skriva ut all post i studentnamnet ‘K ja ' . Du kan utföra denna uppgift genom att köra flera kommandon utan att använda ett rör som visas i nästa avsnitt. Följande kommandon måste köras för att få önskad utdata. Det första kommandot sorterar filen. Det andra kommandot söker efter posten 'K ja ' använder ` grepp `kommando och lagra utdata i en temp.txt fil. Det tredje kommandot räknar de totala raderna för a temp.txt fil med `wc ' kommando.

$sorteramarks.txt
$grepp 'Keya'marks.txt>temp.txt
$toalett -detemp.txt

Produktion:

Två poster av eleven, ‘Keya’ finns i filen. Så efter att ha kört ovanstående kommandon visas följande utdata.

Du kan enkelt slå ihop de tre kommandona ovan och få samma utdata genom att köra ett enda kommando med ett rör som visas i följande kommando. Ingen tillfällig fil krävs här för att få utmatningen. Här är utmatningen av ` sortera `kommandot skickas som inmatning av` grepp `-kommandot och utmatningen av` grepp `kommandot skickas som inmatning för `wc ' kommando.

$sorteramarks.txt| grepp 'Keya' | toalett -de

Produktion:

Efter att du kör kommandot ovan får du följande utdata som föregående kommandos utdata. Utdata från kommandot kommer att vara 2.

Gå till toppen

Slutsats:

De mest användbara och nödvändiga ämnena för bash -skriptspråk försöker täcka i denna handledning. Hoppas, läsaren kommer att gynnas efter att ha läst denna handledning och kunna skriva bash -skript mer effektivt.