logo

Exempel på skalskript

För alla Linux-distributioner är skalskriptet som en trollstav som automatiserar processen, sparar tid för användare och ökar produktiviteten. Denna handledning för ska skript kommer att introducera dig till 25 plus ska skriptexemplen.

Men innan vi går vidare till ämnet skalskript exempel, låt oss förstå skalskript och de faktiska användningsfallen för skalskript.

Vad är Shell Script?

Tja, skalet är en CLI ( kommandoradstolk ), som körs i ett textfönster där användare kan hantera och utföra skalkommandon. Å andra sidan, processen att skriva en uppsättning kommandon som ska köras på ett Linux-system. En fil som innehåller sådana instruktioner kallas ett bash-skript.



Användning av Shell-skript

Nedan följer några vanliga användningsområden för Shell Script:

  • Uppgiftsautomatisering – Den kan användas för att automatisera repetitiva uppgifter som regelbundna säkerhetskopieringar och programvaruinstallationsuppgifter.
  • Anpassning – Man kan använda skalskript för att designa sin kommandoradsmiljö och enkelt utföra sin uppgift enligt behov.
  • Filhantering - Skalskripten kan också användas för att hantera och manipulera filer och kataloger, som att flytta, kopiera, byta namn på eller ta bort filer.

Shell Script Exempel i Linux

1) Vad indikerar shebang (#!) i början av ett skalskript?

De shebang (#!) i början av ett skript indikerar tolken som ska användas för att köra skriptet. Det talar om för systemet vilket skal eller tolk som ska tolka skriptets kommandon.

Till exempel: Anta att vi har ett skript som heter myscript.sh skrivet i Bash-skalet:

java filterström
shebang

shebang

I det här exemplet:

  • #!/bin/bash i början av skriptet indikerar att skriptet ska tolkas med Bash-skalet.
  • Ekokommandona används för att skriva ut meddelanden till terminalen.

2) Hur kör du ett skalskript från kommandoraden?

För att köra ett skalskript från kommandoraden måste vi följa dessa steg:

  • Se till att skriptfilen har körbara behörigheter med hjälp av chmod kommando :
chmod +x myscript.sh>
  • Kör skriptet med dess filnamn:
./myscript.sh>

Här måste du byta ut myscrtipt.sh med ditt manusnamn.

3) Skriv ett skalskript som skriver ut techcodeview.com till terminalen.

Skapa ett skriptnamn `myscript.sh` (vi använder ` därför att ` editor, du kan välja vilken editor som helst)

vim myscript.sh>

#!/bin/bash
# Detta skript skriver ut techcodeview.com till terminalen
echo techcodeview.com

Skriv namn

Skriv namn

Vi gör vårt skript körbart genom att använda `chmod +x` och kör sedan med `./myscipt.sh` och få vår önskade utdata techcodeview.com.

4) Förklara syftet med echo-kommandot i skalskript.

De eko kommando används för att visa text eller variabler på terminalen. Det används ofta för att skriva ut meddelanden, variabla värden och generera programutdata.

434

eko kommando

I det här exemplet har vi exekverat `echo` på terminal direkt, eftersom det fungerar på samma sätt i skalskriptet.

5) Hur kan du tilldela ett värde till en variabel i ett skalskript?

Variabler tilldelas värden med hjälp av tilldelningsoperatorn =.

Till exempel:

#!/bin/bash
# Tilldela ett värde till en variabel
namn=Jayesh
ålder=21
echo $name $age

Förklaring:

  • Namnvariabeln tilldelas värdet Jayesh.
  • Åldersvariabeln tilldelas värdet 21.
  • echo används för att skriva ut och `$name` `$age` används för att anropa värdet som lagras i variablerna.

435

6) Skriv ett skalskript som tar en användares namn som indata och hälsar dem välkomna.

Skapa ett skriptnamn `example.sh`.

#!/bin/bash
# Fråga användaren om deras namn
echo Vad heter du?
läs namn
# Hälsa användaren
echo Hej, $name! Trevligt att träffas.

Förklaring:

  • #!/bin/bash: Det här är shebang-linjen. Den säger åt systemet att använda Bash-tolken för att köra skriptet.
  • # Fråga användaren om deras namn: Det här är en kommentar. Det ger sammanhang om den kommande koden. Kommentarer ignoreras av tolken.
  • echo Vad heter du?: Echo-kommandot används för att visa texten med dubbla citattecken på terminalen.
  • read name: Read-kommandot väntar på att användaren matar in text och lagrar den i variabelnamnet.
  • echo Hej, $name! Trevligt att träffa dig.: Den här raden använder ekokommandot för att skriva ut ett hälsningsmeddelande som inkluderar värdet på namnvariabeln, som samlades in från användarens indata.

436

7) Hur lägger man till kommentarer till ett skalskript?

Kommentarer i skalskript används för att ge förklaringar eller sammanhang till koden. De ignoreras av tolken och är endast avsedda för människor som läser manuset. Du kan lägga till kommentarer med #-symbolen.

#!/bin/bash
# Det här är en kommentar som förklarar syftet med skriptet
echo gfg

8) Skapa ett skalskript som kontrollerar om en fil finns i den aktuella katalogen.

Här är ett skript som kontrollerar om en fil med namnet example.txt finns i den aktuella katalogen:

#!/bin/bash
file=example.txt
# Kontrollera om filen finns
if [ -e $fil ]; sedan
echo Filen finns: $file
annan
echo Filen hittades inte: $file
vara

Förklaring:

  1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
  2. file=example.txt: Den här raden definierar variabelfilen och tilldelar den värdet example.txt. Du kan ersätta detta med namnet på filen du vill söka efter.
  3. if [ -e $fil ]; then: Den här raden startar en if-sats. Villkoret [ -e $file ] kontrollerar om filen som anges av värdet på filvariabeln existerar. Flaggan -e används för att kontrollera om filen finns.
  4. echo File exists: $file: Om villkoret är sant (dvs. filen existerar), skrivs ett meddelande ut på den här raden som indikerar att filen existerar, tillsammans med filens namn.
  5. else: Om villkoret är falskt (dvs. filen existerar inte), kör skriptet koden under else-grenen.
  6. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades, tillsammans med filens namn.
  7. fi: Denna rad markerar slutet på if-satsen.
Hittar fil

Hittar fil

9) Vad är skillnaden mellan enkla citattecken (') och dubbla citattecken () i skalskript?

Enkla citattecken (') och dubbla citattecken () används för att omsluta strängar i skalskript, men de har olika beteenden:

  • Enstaka citattecken: Allt mellan enstaka citattecken behandlas som en bokstavlig sträng. Variabelnamn och de flesta specialtecken utökas inte.
  • Dubbla citattecken: Variabler och vissa specialtecken inom dubbla citattecken utökas. Innehållet är föremål för variabel substitution och kommandosubstitution.

#!/bin/bash

abcd=Hej
echo '$abcd' # Utdata: $abcd
echo $abcd # Utgång: Hej

10) Hur kan du använda kommandoradsargument i ett skalskript?

Kommandoradsargument är värden som ges till ett skript när det körs. De kan nås i skriptet med hjälp av speciella variabler som , , etc., där representerar det första argumentet, representerar det andra argumentet, och så vidare.

Till exempel: Om vårt skriptnamn i `example.sh`

#!/bin/bash

echo Skriptnamn:

För alla Linux-distributioner är skalskriptet som en trollstav som automatiserar processen, sparar tid för användare och ökar produktiviteten. Denna handledning för ska skript kommer att introducera dig till 25 plus ska skriptexemplen.

Men innan vi går vidare till ämnet skalskript exempel, låt oss förstå skalskript och de faktiska användningsfallen för skalskript.

Vad är Shell Script?

Tja, skalet är en CLI ( kommandoradstolk ), som körs i ett textfönster där användare kan hantera och utföra skalkommandon. Å andra sidan, processen att skriva en uppsättning kommandon som ska köras på ett Linux-system. En fil som innehåller sådana instruktioner kallas ett bash-skript.

Användning av Shell-skript

Nedan följer några vanliga användningsområden för Shell Script:

  • Uppgiftsautomatisering – Den kan användas för att automatisera repetitiva uppgifter som regelbundna säkerhetskopieringar och programvaruinstallationsuppgifter.
  • Anpassning – Man kan använda skalskript för att designa sin kommandoradsmiljö och enkelt utföra sin uppgift enligt behov.
  • Filhantering - Skalskripten kan också användas för att hantera och manipulera filer och kataloger, som att flytta, kopiera, byta namn på eller ta bort filer.

Shell Script Exempel i Linux

1) Vad indikerar shebang (#!) i början av ett skalskript?

De shebang (#!) i början av ett skript indikerar tolken som ska användas för att köra skriptet. Det talar om för systemet vilket skal eller tolk som ska tolka skriptets kommandon.

Till exempel: Anta att vi har ett skript som heter myscript.sh skrivet i Bash-skalet:

shebang

shebang

I det här exemplet:

  • #!/bin/bash i början av skriptet indikerar att skriptet ska tolkas med Bash-skalet.
  • Ekokommandona används för att skriva ut meddelanden till terminalen.

2) Hur kör du ett skalskript från kommandoraden?

För att köra ett skalskript från kommandoraden måste vi följa dessa steg:

  • Se till att skriptfilen har körbara behörigheter med hjälp av chmod kommando :
chmod +x myscript.sh>
  • Kör skriptet med dess filnamn:
./myscript.sh>

Här måste du byta ut myscrtipt.sh med ditt manusnamn.

3) Skriv ett skalskript som skriver ut techcodeview.com till terminalen.

Skapa ett skriptnamn `myscript.sh` (vi använder ` därför att ` editor, du kan välja vilken editor som helst)

vim myscript.sh>

#!/bin/bash
# Detta skript skriver ut techcodeview.com till terminalen
echo techcodeview.com

Skriv namn

Skriv namn

Vi gör vårt skript körbart genom att använda `chmod +x` och kör sedan med `./myscipt.sh` och få vår önskade utdata techcodeview.com.

4) Förklara syftet med echo-kommandot i skalskript.

De eko kommando används för att visa text eller variabler på terminalen. Det används ofta för att skriva ut meddelanden, variabla värden och generera programutdata.

434

eko kommando

I det här exemplet har vi exekverat `echo` på terminal direkt, eftersom det fungerar på samma sätt i skalskriptet.

5) Hur kan du tilldela ett värde till en variabel i ett skalskript?

Variabler tilldelas värden med hjälp av tilldelningsoperatorn =.

Till exempel:

#!/bin/bash
# Tilldela ett värde till en variabel
namn=Jayesh
ålder=21
echo $name $age

Förklaring:

  • Namnvariabeln tilldelas värdet Jayesh.
  • Åldersvariabeln tilldelas värdet 21.
  • echo används för att skriva ut och `$name` `$age` används för att anropa värdet som lagras i variablerna.

435

6) Skriv ett skalskript som tar en användares namn som indata och hälsar dem välkomna.

Skapa ett skriptnamn `example.sh`.

#!/bin/bash
# Fråga användaren om deras namn
echo Vad heter du?
läs namn
# Hälsa användaren
echo Hej, $name! Trevligt att träffas.

Förklaring:

  • #!/bin/bash: Det här är shebang-linjen. Den säger åt systemet att använda Bash-tolken för att köra skriptet.
  • # Fråga användaren om deras namn: Det här är en kommentar. Det ger sammanhang om den kommande koden. Kommentarer ignoreras av tolken.
  • echo Vad heter du?: Echo-kommandot används för att visa texten med dubbla citattecken på terminalen.
  • read name: Read-kommandot väntar på att användaren matar in text och lagrar den i variabelnamnet.
  • echo Hej, $name! Trevligt att träffa dig.: Den här raden använder ekokommandot för att skriva ut ett hälsningsmeddelande som inkluderar värdet på namnvariabeln, som samlades in från användarens indata.

436

7) Hur lägger man till kommentarer till ett skalskript?

Kommentarer i skalskript används för att ge förklaringar eller sammanhang till koden. De ignoreras av tolken och är endast avsedda för människor som läser manuset. Du kan lägga till kommentarer med #-symbolen.

#!/bin/bash
# Det här är en kommentar som förklarar syftet med skriptet
echo gfg

8) Skapa ett skalskript som kontrollerar om en fil finns i den aktuella katalogen.

Här är ett skript som kontrollerar om en fil med namnet example.txt finns i den aktuella katalogen:

#!/bin/bash
file=example.txt
# Kontrollera om filen finns
if [ -e $fil ]; sedan
echo Filen finns: $file
annan
echo Filen hittades inte: $file
vara

Förklaring:

  1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
  2. file=example.txt: Den här raden definierar variabelfilen och tilldelar den värdet example.txt. Du kan ersätta detta med namnet på filen du vill söka efter.
  3. if [ -e $fil ]; then: Den här raden startar en if-sats. Villkoret [ -e $file ] kontrollerar om filen som anges av värdet på filvariabeln existerar. Flaggan -e används för att kontrollera om filen finns.
  4. echo File exists: $file: Om villkoret är sant (dvs. filen existerar), skrivs ett meddelande ut på den här raden som indikerar att filen existerar, tillsammans med filens namn.
  5. else: Om villkoret är falskt (dvs. filen existerar inte), kör skriptet koden under else-grenen.
  6. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades, tillsammans med filens namn.
  7. fi: Denna rad markerar slutet på if-satsen.
Hittar fil

Hittar fil

9) Vad är skillnaden mellan enkla citattecken (') och dubbla citattecken () i skalskript?

Enkla citattecken (') och dubbla citattecken () används för att omsluta strängar i skalskript, men de har olika beteenden:

  • Enstaka citattecken: Allt mellan enstaka citattecken behandlas som en bokstavlig sträng. Variabelnamn och de flesta specialtecken utökas inte.
  • Dubbla citattecken: Variabler och vissa specialtecken inom dubbla citattecken utökas. Innehållet är föremål för variabel substitution och kommandosubstitution.

#!/bin/bash

abcd=Hej
echo '$abcd' # Utdata: $abcd
echo $abcd # Utgång: Hej

10) Hur kan du använda kommandoradsargument i ett skalskript?

Kommandoradsargument är värden som ges till ett skript när det körs. De kan nås i skriptet med hjälp av speciella variabler som $1, $2, etc., där $1 representerar det första argumentet, $2 representerar det andra argumentet, och så vidare.

Till exempel: Om vårt skriptnamn i `example.sh`

#!/bin/bash

echo Skriptnamn: $0
echo Första argumentet: $1
echo Andra argumentet: $2

Om vi ​​kör skriptet med `.example.sh hello_1 hello_2` kommer det att mata ut:

cli argument

cli argument

11) Hur använder du for-slingan för att iterera genom en lista med värden?

Skapa ett skriptnamn `example.sh`.

#!/bin/bash

frukt=(äpplebanan körsbärsdatum)
för frukt i ${frukter[@]}; do
echo Aktuell frukt: $fruit
Gjort

Förklaring:

`fruits=`-raden skapar en array som heter frukter med fyra element: äpple, banan, körsbär och datum.

  • för frukt i ${frukter[@]}; do: Den här raden startar en for-loop. Så här betyder varje del:
  • för frukt: Detta deklarerar en loopvariabel som kallas frukt. I varje iteration av loopen kommer frukt att hålla värdet på det aktuella elementet från fruktmatrisen.
  • ${fruits[@]}: Detta är en array-expansion som tar alla element från frukt-arrayen. ${…}-syntaxen säkerställer att varje element behandlas som ett separat objekt.
  • do: Detta nyckelord markerar början av loopkroppen.
  • echo Current fruit: $fruit: Inuti slingan använder den här raden echo-kommandot för att visa det aktuella värdet för loopvariabeln fruit. Den skriver ut ett meddelande som Aktuell frukt: äpple för varje frukt i arrayen.
  • done: Det här nyckelordet markerar slutet på loopkroppen. Det talar om för skriptet att slingan har avslutats.
för slinga

för slinga

12) Skriv ett skalskript som beräknar summan av heltal från 1 till N med hjälp av en slinga.

Skapa ett skriptnamn `example.sh`.

#!/bin/bash

echo Ange ett nummer (N):
läs N
summa=0
för ((i=l; i<=$N; i++)); do
summa=$((summa + i))
Gjort
echo Summan av heltal från 1 till $N är: $summa

Förklaring:
Skriptet börjar med att be dig ange ett nummer (N) med hjälp av read. Detta nummer avgör hur många gånger slingan körs.

  1. Variabelsumman initieras till 0. Denna variabel kommer att hålla reda på summan av heltal.
  2. For-slingan börjar med for (( i=1; i<=$N; i++ )). Denna loopstruktur används för att upprepa en uppsättning åtgärder ett visst antal gånger, i det här fallet, från 1 till värdet av N.
  3. Inuti slingan händer dessa saker:
    • i=1 sätter loopvariabeln i till 1 i början av varje iteration.
    • Slingvillkoret i<=$N kontrollerar om i fortfarande är mindre än eller lika med det givna talet N.
    • Om villkoret är sant, exekveras loopkroppen.
    • sum=$((sum + i)) beräknar det nya värdet av summan genom att lägga till det nuvarande värdet av i. Detta summerar heltal från 1 till det nuvarande i-värdet.
  4. Efter varje iteration ökar i++ värdet på i med 1.
  5. Slingan fortsätter att köras tills villkoret i<=$N blir falskt (när i blir större än N).
  6. När loopen är klar visar skriptet summan av heltal från 1 till det angivna talet N.

439

13) Skapa ett skript som söker efter ett specifikt ord i en fil och räknar dess förekomster.

Skapa ett skriptnamn `word_count.sh`

#!/bin/bash

echo Ange ordet att söka efter:
läs target_word
echo Ange filnamnet:
läs filnamn
count=$(grep -o -w $target_word $filnamn | wc -l)
echo Ordet '$target_word' visas $count gånger i '$filnamn'.

Förklaring:

  • echo Ange ordet att söka efter:: Denna rad visar ett meddelande som ber användaren att ange ett ord som de vill söka efter i en fil.
  • read target_word: Denna rad läser indata från användaren och lagrar den i en variabel som heter target_word.
  • echo Ange filnamnet:: Denna rad visar ett meddelande som ber användaren att ange namnet på filen de vill söka i.
  • läs filnamn: Denna rad läser indata från användaren och lagrar den i en variabel med namnet filnamn.
  • count=$(grep -o -w $målord $filnamn | wc -l): Den här raden utför skriptets huvudsakliga arbete. Låt oss bryta ner det ytterligare:
    • grep -o -w $target_word $filnamn: Denna del av kommandot söker efter förekomster av target_word i det angivna filnamnet. Alternativen -o och -w säkerställer att endast helordsmatchningar räknas.
    • |: Detta är ett rör som tar utdata från föregående kommando och skickar det som indata till nästa kommando.
    • wc -l: Den här delen av kommandot använder kommandot wc för att räkna antalet rader i inmatningen. Alternativet -l räknar specifikt raderna.
    • Hela kommandot beräknar antalet förekomster av target_word i filen och tilldelar det antalet till variabeln count

441

14) Förklara skillnaderna mellan standardutgång (stdout) och standardfel (stderr).

Huvudskillnaden mellan standardutgång (stdout) och standardfel (stderr) är följande:

  • Standardutgång (stdout): Detta är standardutgångsströmmen dit ett kommandos vanliga utdata går. Det visas på terminalen som standard. Du kan omdirigera den till en fil med>.
  • Standardfel (stderr): Detta är utdataströmmen för felmeddelanden och varningar. Det visas också på terminalen som standard. Du kan omdirigera den till en fil med 2>.

15) Förklara begreppet villkorliga uttalanden i skalskript.

Villkorliga uttalanden i skalskript låter oss fatta beslut och kontrollera flödet av vårt manus baserat på vissa förutsättningar. De gör det möjligt för vårt skript att köra olika uppsättningar av kommandon beroende på om ett visst villkor är sant eller falskt. De primära villkorssatserna i skalskript är if-satsen, elif-satsen (valfritt) och else-satsen (valfritt).

Här är den grundläggande strukturen för ett villkorligt uttalande i skalskript:

if [villkor]; sedan
# Kommandon att köra om villkoret är sant
elif [ another_condition ]; sedan
# Kommandon att köra om another_condition är sant (valfritt)
annan
# Kommandon att köra om inget av villkoren är sant (valfritt)
vara

Förklaring:

  • [ condition ] = Kommando som utvärderar villkoret och returnerar en sann (0) eller falsk (icke-noll) utgångsstatus.
  • then = Det är ett nyckelord som indikerar att kommandona efter det kommer att utföras om villkoret utvärderas till sant.
  • elif = (förkortning av else if) Det är ett avsnitt som låter oss specificera ytterligare villkor att kontrollera.
  • else = det är en sektion som innehåller kommandon som kommer att köras om inget av villkoren är sant.
  • fi = Det är ett nyckelord som markerar slutet på det villkorliga blocket.

16) Hur läser man rader från en fil i ett skalskript?

Till läsa rader från en fil i ett skalskript kan vi använda olika metoder, men ett vanligt tillvägagångssätt är att använda en while-loop i kombination med läskommandot. Så här kan vi göra det:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Kontrollera om filen finns
if [ -e $fil ]; sedan
medan IFS= read -r line; do
echo Line read: $line
# Lägg till din bearbetningslogik här
klar <$fil
annan
echo Filen hittades inte: $file
vara

Förklaring:

  1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
  2. file=/home/jayeshkumar/jayesh.txt: Den här raden definierar variabelfilen och tilldelar den fullständiga sökvägen till filen jayesh.txt i katalogen /home/jayeshkumar. Ändra den här sökvägen så att den matchar den faktiska sökvägen för filen du vill läsa.
  3. if [ -e $fil ]; then: Den här raden startar en if-sats. Den kontrollerar om filen som anges av variabeln $file existerar. Flaggan -e kontrollerar att filen finns.
  4. medan IFS= read -r line; do: Denna rad initierar en while-loop som läser rader från filen.
    • IFS=: IFS (Internal Field Separator) är satt till ett tomt värde för att bevara inledande och efterföljande mellanslag.
    • read -r line: Detta läser den aktuella raden från filen och lagrar den i variabelraden.
  5. echo Line read: $line: Denna rad skriver ut innehållet i raden som lästes från filen. Variabeln $line innehåller den aktuella radens innehåll.
  6. # Lägg till din bearbetningslogik här: Detta är en platshållarkommentar där du kan lägga till din egen logik för att bearbeta varje rad. Du kan till exempel analysera raden, extrahera information eller utföra specifika åtgärder baserat på innehållet.
  7. done <$file: Detta markerar slutet på while-loopen. < $filen omdirigerar innehållet i filen som ska läsas av loopen.
  8. else: Om filen inte finns (villkoret i if-satsen är falskt), exekverar skriptet koden under else-grenen.
  9. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades.
  10. fi: Denna rad markerar slutet på if-satsen.
läsa filen

läsa filen

Här använde vi ` pwd ` kommando för att hämta sökvägen till aktuell katalog.

17) Skriv en funktion i ett skalskript som beräknar fakulteten för ett givet tal.

Här är manusetberäkna faktorvärdetav ett givet nummer.

#!/bin/bash
# Definiera en funktion för att beräkna faktorial
beräkna_faktor() {
num=$1
fakta=1
för ((i=1; i<=tal; i++)); do
fakta=$((faktum * i))
Gjort
echo $fakta
}
# Be användaren att ange ett nummer
echo Ange ett nummer:
läs input_num
# Anropa calculate_factorial-funktionen med inmatningsnumret
factorial_result=$(calculate_fatorial $input_num)
# Visa det ursprungliga resultatet
echo Factorial av $input_num är: $factorial_result

Förklaring:

  1. Skriptet börjar med shebang-raden #!/bin/bash för att specificera tolken.
  2. calculate_fatorial() definieras som en funktion. Det krävs ett argument, num, vilket är talet för vilket faktorvärdet måste beräknas.
  3. Inuti funktionen initieras fakta till 1. Denna variabel lagrar det faktoriella resultatet.
  4. For-slingan itererar från 1 till det givna numret (num). I varje iteration multiplicerar den det aktuella värdet av fakta med loopindexet i.
  5. När slingan är klar innehåller faktavariabeln den beräknade faktorialen.
  6. Skriptet uppmanar användaren att ange ett nummer med läs.
  7. Funktionen calculate_factorial anropas med det av användaren angivna numret, och resultatet lagras i variabeln factorial_result.
  8. Slutligen visar skriptet det beräknade faktoriella resultatet.
Faktoriell

Faktoriell

18) Hur hanterar du signaler som Ctrl+C i ett skalskript?

I ett skalskript kan du hantera signaler som Ctrl+C (även känd som SIGINT) med kommandot trap. Ctrl+C genererar en SIGINT-signal när användaren trycker på den för att avbryta det pågående skriptet eller programmet. Genom att använda trap-kommandot kan du specificera åtgärder som ska vidtas när en viss signal tas emot. Så här hanterar du signaler som Ctrl+C i ett skalskript:

#!/bin/bash
städa() {
echo Skriptet avbröts. Rensar …
# Lägg till dina saneringsåtgärder här
utgång 1
}
# Sätt upp en fälla för att anropa rensningsfunktionen när Ctrl+C (SIGINT) tas emot
fällsanering SIGINT
# Resten av ditt manus
eko kör...
sova 10
eko Avslutad.

Att hantera signaler är viktigt för att göra skript robusta och för att säkerställa att de hanterar oväntade avbrott på ett elegant sätt. Du kan anpassa rensningsfunktionen för att matcha dina specifika behov, som att stänga filer, stoppa processer eller logga information innan skriptet avslutas.

Förklaring:

  1. #!/bin/bash: Denna shebang-rad specificerar tolken som ska användas för att köra skriptet.
  2. cleanup() { … }: Detta definierar en funktion som heter cleanup. Inuti den här funktionen kan du inkludera alla åtgärder som behöver utföras när skriptet avbryts, som att stänga filer, släppa resurser eller utföra andra rensningsuppgifter.
  3. trap cleanup SIGINT: Trappkommandot används för att ställa in en signalhanterare. I det här fallet specificerar den att när SIGINT-signalen (Ctrl+C) tas emot, ska rensningsfunktionen utföras.
  4. echo Running…, sleep 10, echo Finished.: Dessa är bara exempel på kommandon för att simulera exekveringen av ett skript.

446

19) Skapa ett skript som letar efter och tar bort dubbletter i en textfil.

Här är vårt linux-skript där vi tar bort dubbletter från en textfil.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sortera $indatafil | uniq> $output_file
echo Duplicerade rader har tagits bort.

Förklaring:

  1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att skriptet ska tolkas med Bash-skalet.
  2. Variabeln input_file är inställd på namnet på indatafilen som innehåller dubbla rader (ändra detta till ditt faktiska indatafilnamn).
  3. Variabeln output_file är inställd på namnet på utdatafilen där dubbletterna kommer att tas bort (ändra detta till önskat utdatafilnamn).
  4. Skriptet använder sorteringskommandot för att sortera raderna i inmatningsfilen. Sortering av raderna säkerställer att duplicerade rader grupperas tillsammans.
  5. De sorterade raderna skickas sedan genom kommandot uniq, som tar bort på varandra följande dubbletter. Utdata från denna process omdirigeras till utdatafilen.
  6. Efter att dubletterna har tagits bort skrivs ett framgångsmeddelande ut i skriptet.
dubblettlinje borttagning

dubblettlinje borttagning

Här använder vi ` katt ` för att visa texten i textfilen.

20) Skriv ett skript som genererar ett säkert slumpmässigt lösenord.

Här är vårt skript för att skapa ett säkert slumpmässigt lösenord.

#!/bin/bash
# Funktion för att generera ett slumpmässigt lösenord
generera lösenord() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Anropa funktionen och lagra det genererade lösenordet
lösenord=$(generera_lösenord)
echo Genererat lösenord: $password

Notera: Användaren kan därför ändra längden på lösenordet genom att ersätta siffran '12'.

Förklaring:

  1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att det ska tolkas med Bash-skalet.
  2. Generera_lösenord-funktionen är definierad för att generera ett slumpmässigt lösenord. Så här fungerar det:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 bryter de filtrerade slumpmässiga data i rader med bredd 12 tecken vardera.
    • head -n 1 väljer den första raden, vilket ger oss en slumpmässig sekvens av tecken med längden 12.
  3. Lösenordsvariabeln tilldelas resultatet av anrop av funktionen generera_lösenord.
  4. Slutligen visas det genererade lösenordet med hjälp av eko.

448

21) Skriv ett skalskript som beräknar den totala storleken på alla filer i en katalog.

Här är ett skalskript för att beräkna den totala storleken på alla filer i en katalog.

#!/bin/bash
katalog=/sökväg/till/din/katalog
total_size=$(du -csh $katalog | grep totalt | awk '{print $1}')
echo Total storlek på filer i $katalogen: $total_size

Förklaring:

  1. Skriptet börjar med #!/bin/bash shebang, vilket indikerar att det ska tolkas med Bash-skalet.
  2. Katalogvariabeln är inställd på sökvägen till den katalog som du vill beräkna den totala filstorleken för. Ersätt /sökväg/till/din/katalog med den faktiska sökvägen.
  3. Kommandot du används för att uppskatta filutrymmesanvändning. Alternativen som används är:
    • -c: Producera en totalsumma.
    • -s: Visa endast den totala storleken på den angivna katalogen.
    • -h: Utskriftsstorlekar i ett läsbart format (t.ex. KB, MB, GB).
  4. Utdata från du skickas till grep total för att filtrera bort raden som innehåller den totala storleken.
  5. awk '{print $1}' används för att extrahera det första fältet (total storlek) från raden.
  6. Den beräknade totala storleken lagras i variabeln total_size.
  7. Slutligen visar skriptet den totala storleken med hjälp av eko.
Total storlek på filer

Total storlek på filer

Här använde vi ` pwd ` kommando för att se den aktuella katalogsökvägen.

22) Förklara skillnaden mellan if- och elif-satser i skalskript.

Funktion `om` Staiftement `elif` uttalande
Syfte Förklara skillnaden mellan if- och elif-satser i skalskript. Tillhandahåller alternativa villkor för att kontrollera när det initiala om-villkoret är falskt.
användande Används för det ursprungliga skicket. Används efter initialt skick för att kontrollera ytterligare villkor.
antal block Kan bara ha ett om block. Kan ha flera elif-block, men bara ett annat block (valfritt).
Avrättning Kör kodblocket som är associerat med if-satsen om villkoret är sant. Om villkoret är falskt exekveras det andra blocket (om det finns) (valfritt). Kontrollerar varje elif-tillstånd i ordning. Om ett elif-villkor är sant, exekveras motsvarande kodblock och skriptet avslutar hela det villkorliga blocket. Om inget av elif-villkoren är sant, exekveras else-blocket (om det finns).
Kapslade strukturer Kan kapslas i andra if-, elif- eller else-block. Kan inte kapslas i ett annat elif-block, men kan användas i ett if eller else-block.

Låt oss förstå det med ett exempel.

#!/bin/bash
nummer=5
if [ $nummer -gt 10 ]; sedan
echo $number är större än 10
annan
echo $number är inte större än 10
vara
eko ——–
if [ $nummer -gt 10 ]; sedan
echo $number är större än 10
elif [ $number -eq 10 ]; sedan
echo $nummer är lika med 10
annan
echo $number är mindre än 10
vara

Förklaring:

I det här exemplet kontrollerar det första if-blocket om talet är större än 10. Om inte, skrivs ett meddelande ut som indikerar att talet inte är större än 10. Det andra blocket med elif-satser kontrollerar flera villkor sekventiellt tills ett av dem är sant. I det här fallet, eftersom värdet på nummer är 5, blir utdata:

if_elif skillnad

if_elif skillnad

23) Hur använder du en while-loop för att upprepade gånger utföra kommandon?

En while-loop används i skalskript för att upprepade gånger exekvera en uppsättning kommandon så länge som ett angivet villkor är sant. Slingan fortsätter att utföra kommandona tills villkoret blir falskt.

Här är den grundläggande syntaxen för en while-loop:

while [villkor]; do
# Kommandon som ska köras
Gjort

Förklaring:

  1. `while`-loopen börjar med nyckelordet `while` följt av ett villkor inom hakparenteser `[ ]`.
  2. Slingans kropp, som innehåller de kommandon som ska köras, är innesluten av nyckelorden 'do' och 'done'.
  3. Slingan kontrollerar först tillståndet. Om villkoret är sant, exekveras kommandona i loopkroppen. Efter att loopkroppen har körts kontrolleras villkoret igen, och processen upprepas tills villkoret blir falskt.

Exempel: Om vi ​​vill skriva ut nummer från 1 till 5

#!/bin/bash
räknare=1
medan [ $counter -le 5 ]; do
echo Number: $counter
räknare=$((räknare + 1))
Gjort

Förklaring:

  • Räknarvariabeln är inställd på 1.
  • While-slingan kontrollerar om värdet på räknaren är mindre än eller lika med 5. Så länge detta villkor är sant, fortsätter loopen att exekvera.
  • Inuti slingan skrivs det aktuella värdet av räknaren ut med hjälp av eko.
  • Räknaren ökas med 1 med uttrycket $((räknare + 1)).
medan loop

medan loop

24) Skapa ett skalskript som hittar och listar alla tomma filer i en katalog.

Skalskript som du kan använda för att hitta och lista alla tomma filer i en katalog med kommandona `find` och `stat`:

#!/bin/bash
katalog=$1″
if [ -z $katalog ]; sedan
echo Användning: $0
utgång 1
vara

om [ ! -d $katalog ]; sedan
echo Error: '$directory' är inte en giltig katalog.
utgång 1
vara
echo Tomma filer i $katalogen:
hitta $katalog -typ f -tom

Förklaring:

  1. ` #!/bin/bash `: Detta kallas en shebang, och det säger åt operativsystemet att använda Bash-skalet för att tolka och köra skriptet.
  2. ` katalog=$1″ `: Denna rad tilldelar det första kommandoradsargumentet (betecknat med $1) till variabeln ` katalog `.
  3. ` if [ -z $katalog ]; sedan `: Den här raden startar en if-sats som kontrollerar om ` katalog ` variabeln är tom (-z testar för en tom sträng).
  4. ` echo Användning: $0 `: Om katalogen är tom, skriver den här raden ut ett användningsmeddelande, där ` $0 ` representerar skriptets namn.
  5. ` utgång 1 `: Den här raden avslutar skriptet med exitkoden ` 1 `, vilket indikerar ett fel.
  6. ` vara `: Den här raden markerar slutet på ` om ` uttalande.
  7. ` om [ ! -d $katalog ]; sedan `: Detta startar en annan if-sats för att kontrollera om den tillhandahållna katalogen finns (` -d ` testar för en katalog).
  8. ` echo Error: '$directory' är inte en giltig katalog. `: Om den angivna katalogen inte finns, skrivs ett felmeddelande ut på den här raden.
  9. ` utgång 1 `: Avslutar skriptet med exitkoden ` 1 `.
  10. ` vara `: Markerar slutet på den andra ` om` påstående.
  11. ` echo Tomma filer i $katalogen: `: Om allt är giltigt hittills skrivs ett meddelande ut på den här raden som indikerar att skriptet kommer att lista tomma filer i den angivna katalogen.
  12. ` hitta $katalog -typ f -tom `: Den här raden använder ` hitta ` kommando för att söka efter tomma filer (` -tömma `) av typen vanliga filer (` -typ f `) i den angivna katalogen. Den listar sedan dessa tomma filer.
Hitta tomma filer

Hitta tomma filer

Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/

25) Vad är syftet med läskommandot i skalskript?

Läskommandot i skalskriptning låter skriptet be dig om information. Det är som när en dator ställer en fråga till dig och väntar på ditt svar. Detta är användbart för skript som kräver att du skriver något eller när skriptet behöver arbeta med information från filer. Läskommandot hjälper skriptet att stanna och vänta på vad du skriver, och sedan kan det använda den informationen för att göra fler saker i skriptet.

Syntax för läskommandot:

read variable_name>

Exempel : Om vi ​​vill ta namn som en input från användaren för att skriva ut det.

#!/bin/bash
echo Vänligen ange ditt namn:
läsa namn
echo Hej, $name!

453

läs nam

Sammanfattningsvis används läskommandot för att fånga användarindata eller data från filer i skalskript, vilket gör skripten mer interaktiva och mångsidiga.

26) Skriv ett skalskript som konverterar alla filnamn i en katalog till gemener.

Här är ett skalskript som konverterar alla filnamn i en katalog till gemener.

#!/bin/bash
katalog=$1″
if [ -z $katalog ]; sedan
echo Användning: $0
utgång 1
vara

om [ ! -d $katalog ]; sedan

echo Error: '$directory' är inte en giltig katalog.
utgång 1
vara

cd $katalog || utgång 1

för fil i *; do
if [ -f $fil ]; sedan
newname=$(eko $fil | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
vara
Gjort

Förklaring:

  1. #!/bin/bash : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
  2. katalog=$1″ : Den här raden tilldelar det första kommandoradsargumentet till variabelkatalogen.
  3. if [ -z $katalog ]; sedan : Den här raden kontrollerar om katalogvariabeln är tom (inget argument anges när skriptet körs).
  4. echo Användning: $0 : Om katalogen är tom skriver den här raden ut ett användningsmeddelande med skriptets namn ($0).
  5. utgång 1 : Den här raden avslutar skriptet med utgångskoden 1, vilket indikerar att ett fel har inträffat.
  6. f i: Detta markerar slutet på den första if-satsen.
  7. om [ ! -d $katalog ]; sedan : Den här raden kontrollerar om den angivna katalogen inte finns (-d testar för en katalog).
  8. echo Error: '$directory' är inte en giltig katalog. : Om den angivna katalogen inte finns skrivs ett felmeddelande ut på den här raden.
  9. utgång 1 : Avslutar skriptet med utgångskoden 1.
  10. vara : Markerar slutet av den andra if-satsen.
  11. cd $katalog || utgång 1 : Ändrar den aktuella arbetskatalogen till den angivna katalogen. Om katalogändringen misslyckas (t.ex. en icke-existerande katalog), avslutas skriptet med en felkod.
  12. för fil i *; do: jag för fil i *; do: initierar en loop som itererar över alla objekt i den aktuella katalogen (* matchar alla filnamn).
  13. if [ -f $fil ]; sedan : Kontrollerar om det aktuella loopiterationsobjektet är en vanlig fil (-f testar för en vanlig fil).
  14. newname=$(eko $fil | tr 'A-Z' 'a-z') : Konverterar det aktuella filnamnet ($file) till gemener med kommandot tr och lagrar resultatet i variabeln newname.
  15. [ $file != $newname ] && mv $file $newname : Jämför det ursprungliga filnamnet med det nya filnamnet med gemener. Om de är olika byter den namn på filen med kommandot mv.
  16. vara : Markerar slutet på den inre if-satsen.
  17. Gjort : Markerar slutet av slingan.

454

Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/test

27) Hur kan du använda aritmetiska operationer i ett skalskript?

Aritmetiska operationer kan utföras inom ett skalskript med olika inbyggda metoder. Skalet tillhandahåller mekanismer för enkla aritmetiska beräkningar med aritmetisk expansion som:

  1. Aritmetisk expansion ($((…)))
  2. Använder kommandot expr
  3. Använder let Command

Här är vårt Shell-skript som förklarar alla tre metoderna för aritmetiska operationer.

#!/bin/bash
num1=10
num2=5

#Aritmetisk expansion ($((…)))

resultat=$((nummer1 + nummer2))
echo Summa: $result

#Använda kommandot expr

summa=$(expr $num1 + $num2)
echo Summa: $summa

#Använda let Command

låt summa = num1 + num2
echo Summa: $summa

Förklaring:

  1. `#!/bin/bash` : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
  2. `num1=10` och ` num2=5` : Dessa rader tilldelar värdena 10 och 5 till variablerna ` nummer1 ` och ` nummer2 `, respektive.
  3. `#Aritmetisk expansion ($((...)))` : Detta är en kommentar som indikerar början av avsnittet som visar aritmetisk expansion.
  4. `resultat=$((tal1 + nummer2))` : Den här raden använder aritmetisk expansion för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` resultat ` variabel.
  5. `echo Summa: $resultat` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` resultat ` variabel.
  6. `#Använder kommandot expr` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` expr ` kommando för aritmetiska operationer.
  7. `summa=$(expr $num1 + $num2)` : Den här raden använder ` expr ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` belopp ` variabel. Observera att ` expr ` kommando kräver mellanslag runt operatörerna.
  8. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
  9. `#Använda let Command` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` låta ` kommando för aritmetiska operationer.
  10. 'låt summa = num1 + num2″'. : Den här raden använder ` låta ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och tilldelar resultatet till ` belopp ` variabel. Den ` låta ` kommando kräver inte mellanslag runt operatorerna.
  11. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
aritmetisk

aritmetisk

28) Skapa ett skript som kontrollerar om en nätverksvärd är nåbar.

Här är ett enkelt skalskript som använder kommandot ping för att kontrollera om en nätverksvärd är tillgänglig:

#!/bin/bash
värd=$1″
if [ -z $värd ]; sedan
echo Användning: $0
utgång 1
vara
ping -c 4 $host

om [$? -eq 0]; sedan
echo $host är tillgänglig.
annan
echo $host är inte tillgänglig.
vara

Förklaring:

  1. Den tar ett värdnamn eller IP-adress som argument och kontrollerar om argumentet tillhandahålls.
  2. Om inget argument tillhandahålls, visar det ett användningsmeddelande och avslutas.
  3. Den använder kommandot ping med alternativet -c 4 för att skicka fyra ICMP-ekoförfrågningar till den angivna värden.
  4. Efter att ping-kommandot körts kontrollerar det utgångsstatusen ($?). Om utgångsstatusen är 0 betyder det att värden är nåbar och skriptet skriver ut ett framgångsmeddelande. Annars skrivs ett felmeddelande ut.

456

Notera : Vi måste ange ett värdnamn som ett argument när vi kör skriptet. Här har vi använt google.com

29) Skriv ett skalskript för att hitta det bästa elementet i en array:

Här är ett skalskript för att hitta det bästa elementet i en array.

#!/bin/bash
# Deklarera en array
array=(3 56 24 89 67)

# Initiera en variabel för att lagra maxvärdet, börja med det första elementet

max=${array[0]}

# Iterera genom arrayen

för num i ${array[@]}; do

# Jämför varje element med nuvarande maximum

if ((antal> max)); sedan
max=$antal
vara
Gjort

# Skriv ut maxvärdet

echo Det maximala elementet i arrayen är: $max

Förklaring:

  1. ` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.
  2. ` array=(3 56 24 89 67) `: Arrayen deklareras och initieras med värden.
  3. ` max=${array[0]} `: `max` initieras med det första elementet i arrayen.
  4. ` för num i ${array[@]}; do `: En `for` loop används för att iterera genom elementen i arrayen.
  5. ` if ((antal> max)); sedan `: En `if`-sats kontrollerar om det aktuella elementet `num` är större än det nuvarande maximala `max`.
  6. ` max=$num`: Om`num ` är större än `max`, `max` uppdateras med värdet num.
  7. ` Gjort `: `För`-slingan är stängd.
  8. ` echo Det maximala elementet i arrayen är: $max `: Slutligen skriver skriptet ut det maximala värdet som finns i arrayen.
461

största antal

30) Skriv ett skript för att beräkna summan av element i en matris.

#!/bin/bash

# Deklarera en array

array=(1 65 22 19 94)

# Initiera en variabel för att lagra summan

summa=0

# Iterera genom arrayen och lägg till varje element till summan

för num i ${array[@]}; do
am=$((am + am))
Gjort

# Skriv ut summan

echo Summan av element i arrayen är: $summa

Förklaring:

` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.

` array=(1 65 22 19 94) `: Arrayen deklareras och initieras med värden.

` summa=0 `:` belopp ` initieras till noll för att hålla summan av element.

` för num i ${array[@]}; do `: A ` för ` loop används för att iterera genom elementen i arrayen.

` am=$((am + am)) `: Inuti slingan, varje element ` på ett ` läggs till i ` belopp ` variabel.

` Gjort `: Den ` för `-slingan är stängd.

`echo Summan av element i arrayen är: $summa`: Slutligen skriver skriptet ut summan av alla element i arrayen.

462

Summan av element

Lär dig mer om Shell-skript

Slutsats

Vi alla nördar vet att skalskript är mycket användbart för att öka arbetsproduktiviteten och samtidigt spara tid. Så, i den här artikeln har vi täckt 30 mycket användbara och mest luriga skalskriptexempel . Vi hoppas att den här kompletta guiden om skalskriptexempel hjälper dig att förstå allt om skalskripten.




echo Första argumentet:
echo Andra argumentet:

Om vi ​​kör skriptet med `.example.sh hello_1 hello_2` kommer det att mata ut:

cli argument

cli argument

11) Hur använder du for-slingan för att iterera genom en lista med värden?

Skapa ett skriptnamn `example.sh`.

#!/bin/bash

frukt=(äpplebanan körsbärsdatum)
för frukt i ${frukter[@]}; do
echo Aktuell frukt: $fruit
Gjort

Förklaring:

`fruits=`-raden skapar en array som heter frukter med fyra element: äpple, banan, körsbär och datum.

  • för frukt i ${frukter[@]}; do: Den här raden startar en for-loop. Så här betyder varje del:
  • för frukt: Detta deklarerar en loopvariabel som kallas frukt. I varje iteration av loopen kommer frukt att hålla värdet på det aktuella elementet från fruktmatrisen.
  • ${fruits[@]}: Detta är en array-expansion som tar alla element från frukt-arrayen. ${…}-syntaxen säkerställer att varje element behandlas som ett separat objekt.
  • do: Detta nyckelord markerar början av loopkroppen.
  • echo Current fruit: $fruit: Inuti slingan använder den här raden echo-kommandot för att visa det aktuella värdet för loopvariabeln fruit. Den skriver ut ett meddelande som Aktuell frukt: äpple för varje frukt i arrayen.
  • done: Det här nyckelordet markerar slutet på loopkroppen. Det talar om för skriptet att slingan har avslutats.
för slinga

för slinga

12) Skriv ett skalskript som beräknar summan av heltal från 1 till N med hjälp av en slinga.

Skapa ett skriptnamn `example.sh`.

#!/bin/bash

vända strängen i java

echo Ange ett nummer (N):
läs N
summa=0
för ((i=l; i<=$N; i++)); do
summa=$((summa + i))
Gjort
echo Summan av heltal från 1 till $N är: $summa

Förklaring:
Skriptet börjar med att be dig ange ett nummer (N) med hjälp av read. Detta nummer avgör hur många gånger slingan körs.

  1. Variabelsumman initieras till 0. Denna variabel kommer att hålla reda på summan av heltal.
  2. For-slingan börjar med for (( i=1; i<=$N; i++ )). Denna loopstruktur används för att upprepa en uppsättning åtgärder ett visst antal gånger, i det här fallet, från 1 till värdet av N.
  3. Inuti slingan händer dessa saker:
    • i=1 sätter loopvariabeln i till 1 i början av varje iteration.
    • Slingvillkoret i<=$N kontrollerar om i fortfarande är mindre än eller lika med det givna talet N.
    • Om villkoret är sant, exekveras loopkroppen.
    • sum=$((sum + i)) beräknar det nya värdet av summan genom att lägga till det nuvarande värdet av i. Detta summerar heltal från 1 till det nuvarande i-värdet.
  4. Efter varje iteration ökar i++ värdet på i med 1.
  5. Slingan fortsätter att köras tills villkoret i<=$N blir falskt (när i blir större än N).
  6. När loopen är klar visar skriptet summan av heltal från 1 till det angivna talet N.

439

13) Skapa ett skript som söker efter ett specifikt ord i en fil och räknar dess förekomster.

Skapa ett skriptnamn `word_count.sh`

#!/bin/bash

echo Ange ordet att söka efter:
läs target_word
echo Ange filnamnet:
läs filnamn
count=$(grep -o -w $target_word $filnamn | wc -l)
echo Ordet '$target_word' visas $count gånger i '$filnamn'.

Förklaring:

  • echo Ange ordet att söka efter:: Denna rad visar ett meddelande som ber användaren att ange ett ord som de vill söka efter i en fil.
  • read target_word: Denna rad läser indata från användaren och lagrar den i en variabel som heter target_word.
  • echo Ange filnamnet:: Denna rad visar ett meddelande som ber användaren att ange namnet på filen de vill söka i.
  • läs filnamn: Denna rad läser indata från användaren och lagrar den i en variabel med namnet filnamn.
  • count=$(grep -o -w $målord $filnamn | wc -l): Den här raden utför skriptets huvudsakliga arbete. Låt oss bryta ner det ytterligare:
    • grep -o -w $target_word $filnamn: Denna del av kommandot söker efter förekomster av target_word i det angivna filnamnet. Alternativen -o och -w säkerställer att endast helordsmatchningar räknas.
    • |: Detta är ett rör som tar utdata från föregående kommando och skickar det som indata till nästa kommando.
    • wc -l: Den här delen av kommandot använder kommandot wc för att räkna antalet rader i inmatningen. Alternativet -l räknar specifikt raderna.
    • Hela kommandot beräknar antalet förekomster av target_word i filen och tilldelar det antalet till variabeln count

441

14) Förklara skillnaderna mellan standardutgång (stdout) och standardfel (stderr).

Huvudskillnaden mellan standardutgång (stdout) och standardfel (stderr) är följande:

  • Standardutgång (stdout): Detta är standardutgångsströmmen dit ett kommandos vanliga utdata går. Det visas på terminalen som standard. Du kan omdirigera den till en fil med>.
  • Standardfel (stderr): Detta är utdataströmmen för felmeddelanden och varningar. Det visas också på terminalen som standard. Du kan omdirigera den till en fil med 2>.

15) Förklara begreppet villkorliga uttalanden i skalskript.

Villkorliga uttalanden i skalskript låter oss fatta beslut och kontrollera flödet av vårt manus baserat på vissa förutsättningar. De gör det möjligt för vårt skript att köra olika uppsättningar av kommandon beroende på om ett visst villkor är sant eller falskt. De primära villkorssatserna i skalskript är if-satsen, elif-satsen (valfritt) och else-satsen (valfritt).

Här är den grundläggande strukturen för ett villkorligt uttalande i skalskript:

if [villkor]; sedan
# Kommandon att köra om villkoret är sant
elif [ another_condition ]; sedan
# Kommandon att köra om another_condition är sant (valfritt)
annan
# Kommandon att köra om inget av villkoren är sant (valfritt)
vara

Förklaring:

  • [ condition ] = Kommando som utvärderar villkoret och returnerar en sann (0) eller falsk (icke-noll) utgångsstatus.
  • then = Det är ett nyckelord som indikerar att kommandona efter det kommer att utföras om villkoret utvärderas till sant.
  • elif = (förkortning av else if) Det är ett avsnitt som låter oss specificera ytterligare villkor att kontrollera.
  • else = det är en sektion som innehåller kommandon som kommer att köras om inget av villkoren är sant.
  • fi = Det är ett nyckelord som markerar slutet på det villkorliga blocket.

16) Hur läser man rader från en fil i ett skalskript?

Till läsa rader från en fil i ett skalskript kan vi använda olika metoder, men ett vanligt tillvägagångssätt är att använda en while-loop i kombination med läskommandot. Så här kan vi göra det:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Kontrollera om filen finns
if [ -e $fil ]; sedan
medan IFS= read -r line; do
echo Line read: $line
# Lägg till din bearbetningslogik här
klar <$fil
annan
echo Filen hittades inte: $file
vara

Förklaring:

  1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
  2. file=/home/jayeshkumar/jayesh.txt: Den här raden definierar variabelfilen och tilldelar den fullständiga sökvägen till filen jayesh.txt i katalogen /home/jayeshkumar. Ändra den här sökvägen så att den matchar den faktiska sökvägen för filen du vill läsa.
  3. if [ -e $fil ]; then: Den här raden startar en if-sats. Den kontrollerar om filen som anges av variabeln $file existerar. Flaggan -e kontrollerar att filen finns.
  4. medan IFS= read -r line; do: Denna rad initierar en while-loop som läser rader från filen.
    • IFS=: IFS (Internal Field Separator) är satt till ett tomt värde för att bevara inledande och efterföljande mellanslag.
    • read -r line: Detta läser den aktuella raden från filen och lagrar den i variabelraden.
  5. echo Line read: $line: Denna rad skriver ut innehållet i raden som lästes från filen. Variabeln $line innehåller den aktuella radens innehåll.
  6. # Lägg till din bearbetningslogik här: Detta är en platshållarkommentar där du kan lägga till din egen logik för att bearbeta varje rad. Du kan till exempel analysera raden, extrahera information eller utföra specifika åtgärder baserat på innehållet.
  7. done <$file: Detta markerar slutet på while-loopen. < $filen omdirigerar innehållet i filen som ska läsas av loopen.
  8. else: Om filen inte finns (villkoret i if-satsen är falskt), exekverar skriptet koden under else-grenen.
  9. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades.
  10. fi: Denna rad markerar slutet på if-satsen.
läsa filen

läsa filen

Här använde vi ` pwd ` kommando för att hämta sökvägen till aktuell katalog.

17) Skriv en funktion i ett skalskript som beräknar fakulteten för ett givet tal.

Här är manusetberäkna faktorvärdetav ett givet nummer.

#!/bin/bash
# Definiera en funktion för att beräkna faktorial
beräkna_faktor() {
num=
fakta=1
för ((i=1; i<=tal; i++)); do
fakta=$((faktum * i))
Gjort
echo $fakta
}
# Be användaren att ange ett nummer
echo Ange ett nummer:
läs input_num
# Anropa calculate_factorial-funktionen med inmatningsnumret
factorial_result=$(calculate_fatorial $input_num)
# Visa det ursprungliga resultatet
echo Factorial av $input_num är: $factorial_result

Förklaring:

  1. Skriptet börjar med shebang-raden #!/bin/bash för att specificera tolken.
  2. calculate_fatorial() definieras som en funktion. Det krävs ett argument, num, vilket är talet för vilket faktorvärdet måste beräknas.
  3. Inuti funktionen initieras fakta till 1. Denna variabel lagrar det faktoriella resultatet.
  4. For-slingan itererar från 1 till det givna numret (num). I varje iteration multiplicerar den det aktuella värdet av fakta med loopindexet i.
  5. När slingan är klar innehåller faktavariabeln den beräknade faktorialen.
  6. Skriptet uppmanar användaren att ange ett nummer med läs.
  7. Funktionen calculate_factorial anropas med det av användaren angivna numret, och resultatet lagras i variabeln factorial_result.
  8. Slutligen visar skriptet det beräknade faktoriella resultatet.
Faktoriell

Faktoriell

18) Hur hanterar du signaler som Ctrl+C i ett skalskript?

I ett skalskript kan du hantera signaler som Ctrl+C (även känd som SIGINT) med kommandot trap. Ctrl+C genererar en SIGINT-signal när användaren trycker på den för att avbryta det pågående skriptet eller programmet. Genom att använda trap-kommandot kan du specificera åtgärder som ska vidtas när en viss signal tas emot. Så här hanterar du signaler som Ctrl+C i ett skalskript:

#!/bin/bash
städa() {
echo Skriptet avbröts. Rensar …
# Lägg till dina saneringsåtgärder här
utgång 1
}
# Sätt upp en fälla för att anropa rensningsfunktionen när Ctrl+C (SIGINT) tas emot
fällsanering SIGINT
# Resten av ditt manus
eko kör...
sova 10
eko Avslutad.

Att hantera signaler är viktigt för att göra skript robusta och för att säkerställa att de hanterar oväntade avbrott på ett elegant sätt. Du kan anpassa rensningsfunktionen för att matcha dina specifika behov, som att stänga filer, stoppa processer eller logga information innan skriptet avslutas.

Förklaring:

  1. #!/bin/bash: Denna shebang-rad specificerar tolken som ska användas för att köra skriptet.
  2. cleanup() { … }: Detta definierar en funktion som heter cleanup. Inuti den här funktionen kan du inkludera alla åtgärder som behöver utföras när skriptet avbryts, som att stänga filer, släppa resurser eller utföra andra rensningsuppgifter.
  3. trap cleanup SIGINT: Trappkommandot används för att ställa in en signalhanterare. I det här fallet specificerar den att när SIGINT-signalen (Ctrl+C) tas emot, ska rensningsfunktionen utföras.
  4. echo Running…, sleep 10, echo Finished.: Dessa är bara exempel på kommandon för att simulera exekveringen av ett skript.

446

19) Skapa ett skript som letar efter och tar bort dubbletter i en textfil.

Här är vårt linux-skript där vi tar bort dubbletter från en textfil.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sortera $indatafil | uniq> $output_file
echo Duplicerade rader har tagits bort.

Förklaring:

  1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att skriptet ska tolkas med Bash-skalet.
  2. Variabeln input_file är inställd på namnet på indatafilen som innehåller dubbla rader (ändra detta till ditt faktiska indatafilnamn).
  3. Variabeln output_file är inställd på namnet på utdatafilen där dubbletterna kommer att tas bort (ändra detta till önskat utdatafilnamn).
  4. Skriptet använder sorteringskommandot för att sortera raderna i inmatningsfilen. Sortering av raderna säkerställer att duplicerade rader grupperas tillsammans.
  5. De sorterade raderna skickas sedan genom kommandot uniq, som tar bort på varandra följande dubbletter. Utdata från denna process omdirigeras till utdatafilen.
  6. Efter att dubletterna har tagits bort skrivs ett framgångsmeddelande ut i skriptet.
dubblettlinje borttagning

dubblettlinje borttagning

Här använder vi ` katt ` för att visa texten i textfilen.

20) Skriv ett skript som genererar ett säkert slumpmässigt lösenord.

Här är vårt skript för att skapa ett säkert slumpmässigt lösenord.

#!/bin/bash
# Funktion för att generera ett slumpmässigt lösenord
generera lösenord() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Anropa funktionen och lagra det genererade lösenordet
lösenord=$(generera_lösenord)
echo Genererat lösenord: $password

Notera: Användaren kan därför ändra längden på lösenordet genom att ersätta siffran '12'.

Förklaring:

  1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att det ska tolkas med Bash-skalet.
  2. Generera_lösenord-funktionen är definierad för att generera ett slumpmässigt lösenord. Så här fungerar det:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 bryter de filtrerade slumpmässiga data i rader med bredd 12 tecken vardera.
    • head -n 1 väljer den första raden, vilket ger oss en slumpmässig sekvens av tecken med längden 12.
  3. Lösenordsvariabeln tilldelas resultatet av anrop av funktionen generera_lösenord.
  4. Slutligen visas det genererade lösenordet med hjälp av eko.

448

21) Skriv ett skalskript som beräknar den totala storleken på alla filer i en katalog.

Här är ett skalskript för att beräkna den totala storleken på alla filer i en katalog.

#!/bin/bash
katalog=/sökväg/till/din/katalog
total_size=$(du -csh $katalog | grep totalt | awk '{print }')
echo Total storlek på filer i $katalogen: $total_size

Förklaring:

  1. Skriptet börjar med #!/bin/bash shebang, vilket indikerar att det ska tolkas med Bash-skalet.
  2. Katalogvariabeln är inställd på sökvägen till den katalog som du vill beräkna den totala filstorleken för. Ersätt /sökväg/till/din/katalog med den faktiska sökvägen.
  3. Kommandot du används för att uppskatta filutrymmesanvändning. Alternativen som används är:
    • -c: Producera en totalsumma.
    • -s: Visa endast den totala storleken på den angivna katalogen.
    • -h: Utskriftsstorlekar i ett läsbart format (t.ex. KB, MB, GB).
  4. Utdata från du skickas till grep total för att filtrera bort raden som innehåller den totala storleken.
  5. awk '{print }' används för att extrahera det första fältet (total storlek) från raden.
  6. Den beräknade totala storleken lagras i variabeln total_size.
  7. Slutligen visar skriptet den totala storleken med hjälp av eko.
Total storlek på filer

Total storlek på filer

Här använde vi ` pwd ` kommando för att se den aktuella katalogsökvägen.

22) Förklara skillnaden mellan if- och elif-satser i skalskript.

Funktion `om` Staiftement `elif` uttalande
Syfte Förklara skillnaden mellan if- och elif-satser i skalskript. Tillhandahåller alternativa villkor för att kontrollera när det initiala om-villkoret är falskt.
användande Används för det ursprungliga skicket. Används efter initialt skick för att kontrollera ytterligare villkor.
antal block Kan bara ha ett om block. Kan ha flera elif-block, men bara ett annat block (valfritt).
Avrättning Kör kodblocket som är associerat med if-satsen om villkoret är sant. Om villkoret är falskt exekveras det andra blocket (om det finns) (valfritt). Kontrollerar varje elif-tillstånd i ordning. Om ett elif-villkor är sant, exekveras motsvarande kodblock och skriptet avslutar hela det villkorliga blocket. Om inget av elif-villkoren är sant, exekveras else-blocket (om det finns).
Kapslade strukturer Kan kapslas i andra if-, elif- eller else-block. Kan inte kapslas i ett annat elif-block, men kan användas i ett if eller else-block.

Låt oss förstå det med ett exempel.

#!/bin/bash
nummer=5
if [ $nummer -gt 10 ]; sedan
echo $number är större än 10
annan
echo $number är inte större än 10
vara
eko ——–
if [ $nummer -gt 10 ]; sedan
echo $number är större än 10
elif [ $number -eq 10 ]; sedan
echo $nummer är lika med 10
annan
echo $number är mindre än 10
vara

Förklaring:

I det här exemplet kontrollerar det första if-blocket om talet är större än 10. Om inte, skrivs ett meddelande ut som indikerar att talet inte är större än 10. Det andra blocket med elif-satser kontrollerar flera villkor sekventiellt tills ett av dem är sant. I det här fallet, eftersom värdet på nummer är 5, blir utdata:

if_elif skillnad

if_elif skillnad

23) Hur använder du en while-loop för att upprepade gånger utföra kommandon?

En while-loop används i skalskript för att upprepade gånger exekvera en uppsättning kommandon så länge som ett angivet villkor är sant. Slingan fortsätter att utföra kommandona tills villkoret blir falskt.

Här är den grundläggande syntaxen för en while-loop:

while [villkor]; do
# Kommandon som ska köras
Gjort

Förklaring:

  1. `while`-loopen börjar med nyckelordet `while` följt av ett villkor inom hakparenteser `[ ]`.
  2. Slingans kropp, som innehåller de kommandon som ska köras, är innesluten av nyckelorden 'do' och 'done'.
  3. Slingan kontrollerar först tillståndet. Om villkoret är sant, exekveras kommandona i loopkroppen. Efter att loopkroppen har körts kontrolleras villkoret igen, och processen upprepas tills villkoret blir falskt.

Exempel: Om vi ​​vill skriva ut nummer från 1 till 5

#!/bin/bash
räknare=1
medan [ $counter -le 5 ]; do
echo Number: $counter
räknare=$((räknare + 1))
Gjort

Förklaring:

  • Räknarvariabeln är inställd på 1.
  • While-slingan kontrollerar om värdet på räknaren är mindre än eller lika med 5. Så länge detta villkor är sant, fortsätter loopen att exekvera.
  • Inuti slingan skrivs det aktuella värdet av räknaren ut med hjälp av eko.
  • Räknaren ökas med 1 med uttrycket $((räknare + 1)).
medan loop

medan loop

24) Skapa ett skalskript som hittar och listar alla tomma filer i en katalog.

Skalskript som du kan använda för att hitta och lista alla tomma filer i en katalog med kommandona `find` och `stat`:

#!/bin/bash
katalog=″
if [ -z $katalog ]; sedan
echo Användning:

För alla Linux-distributioner är skalskriptet som en trollstav som automatiserar processen, sparar tid för användare och ökar produktiviteten. Denna handledning för ska skript kommer att introducera dig till 25 plus ska skriptexemplen.

Men innan vi går vidare till ämnet skalskript exempel, låt oss förstå skalskript och de faktiska användningsfallen för skalskript.

Vad är Shell Script?

Tja, skalet är en CLI ( kommandoradstolk ), som körs i ett textfönster där användare kan hantera och utföra skalkommandon. Å andra sidan, processen att skriva en uppsättning kommandon som ska köras på ett Linux-system. En fil som innehåller sådana instruktioner kallas ett bash-skript.

Användning av Shell-skript

Nedan följer några vanliga användningsområden för Shell Script:

  • Uppgiftsautomatisering – Den kan användas för att automatisera repetitiva uppgifter som regelbundna säkerhetskopieringar och programvaruinstallationsuppgifter.
  • Anpassning – Man kan använda skalskript för att designa sin kommandoradsmiljö och enkelt utföra sin uppgift enligt behov.
  • Filhantering - Skalskripten kan också användas för att hantera och manipulera filer och kataloger, som att flytta, kopiera, byta namn på eller ta bort filer.

Shell Script Exempel i Linux

1) Vad indikerar shebang (#!) i början av ett skalskript?

De shebang (#!) i början av ett skript indikerar tolken som ska användas för att köra skriptet. Det talar om för systemet vilket skal eller tolk som ska tolka skriptets kommandon.

Till exempel: Anta att vi har ett skript som heter myscript.sh skrivet i Bash-skalet:

shebang

shebang

I det här exemplet:

  • #!/bin/bash i början av skriptet indikerar att skriptet ska tolkas med Bash-skalet.
  • Ekokommandona används för att skriva ut meddelanden till terminalen.

2) Hur kör du ett skalskript från kommandoraden?

För att köra ett skalskript från kommandoraden måste vi följa dessa steg:

  • Se till att skriptfilen har körbara behörigheter med hjälp av chmod kommando :
chmod +x myscript.sh>
  • Kör skriptet med dess filnamn:
./myscript.sh>

Här måste du byta ut myscrtipt.sh med ditt manusnamn.

3) Skriv ett skalskript som skriver ut techcodeview.com till terminalen.

Skapa ett skriptnamn `myscript.sh` (vi använder ` därför att ` editor, du kan välja vilken editor som helst)

vim myscript.sh>

#!/bin/bash
# Detta skript skriver ut techcodeview.com till terminalen
echo techcodeview.com

Skriv namn

Skriv namn

Vi gör vårt skript körbart genom att använda `chmod +x` och kör sedan med `./myscipt.sh` och få vår önskade utdata techcodeview.com.

4) Förklara syftet med echo-kommandot i skalskript.

De eko kommando används för att visa text eller variabler på terminalen. Det används ofta för att skriva ut meddelanden, variabla värden och generera programutdata.

434

eko kommando

I det här exemplet har vi exekverat `echo` på terminal direkt, eftersom det fungerar på samma sätt i skalskriptet.

5) Hur kan du tilldela ett värde till en variabel i ett skalskript?

Variabler tilldelas värden med hjälp av tilldelningsoperatorn =.

Till exempel:

#!/bin/bash
# Tilldela ett värde till en variabel
namn=Jayesh
ålder=21
echo $name $age

Förklaring:

  • Namnvariabeln tilldelas värdet Jayesh.
  • Åldersvariabeln tilldelas värdet 21.
  • echo används för att skriva ut och `$name` `$age` används för att anropa värdet som lagras i variablerna.

435

6) Skriv ett skalskript som tar en användares namn som indata och hälsar dem välkomna.

Skapa ett skriptnamn `example.sh`.

#!/bin/bash
# Fråga användaren om deras namn
echo Vad heter du?
läs namn
# Hälsa användaren
echo Hej, $name! Trevligt att träffas.

Förklaring:

  • #!/bin/bash: Det här är shebang-linjen. Den säger åt systemet att använda Bash-tolken för att köra skriptet.
  • # Fråga användaren om deras namn: Det här är en kommentar. Det ger sammanhang om den kommande koden. Kommentarer ignoreras av tolken.
  • echo Vad heter du?: Echo-kommandot används för att visa texten med dubbla citattecken på terminalen.
  • read name: Read-kommandot väntar på att användaren matar in text och lagrar den i variabelnamnet.
  • echo Hej, $name! Trevligt att träffa dig.: Den här raden använder ekokommandot för att skriva ut ett hälsningsmeddelande som inkluderar värdet på namnvariabeln, som samlades in från användarens indata.

436

7) Hur lägger man till kommentarer till ett skalskript?

Kommentarer i skalskript används för att ge förklaringar eller sammanhang till koden. De ignoreras av tolken och är endast avsedda för människor som läser manuset. Du kan lägga till kommentarer med #-symbolen.

#!/bin/bash
# Det här är en kommentar som förklarar syftet med skriptet
echo gfg

8) Skapa ett skalskript som kontrollerar om en fil finns i den aktuella katalogen.

Här är ett skript som kontrollerar om en fil med namnet example.txt finns i den aktuella katalogen:

#!/bin/bash
file=example.txt
# Kontrollera om filen finns
if [ -e $fil ]; sedan
echo Filen finns: $file
annan
echo Filen hittades inte: $file
vara

Förklaring:

  1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
  2. file=example.txt: Den här raden definierar variabelfilen och tilldelar den värdet example.txt. Du kan ersätta detta med namnet på filen du vill söka efter.
  3. if [ -e $fil ]; then: Den här raden startar en if-sats. Villkoret [ -e $file ] kontrollerar om filen som anges av värdet på filvariabeln existerar. Flaggan -e används för att kontrollera om filen finns.
  4. echo File exists: $file: Om villkoret är sant (dvs. filen existerar), skrivs ett meddelande ut på den här raden som indikerar att filen existerar, tillsammans med filens namn.
  5. else: Om villkoret är falskt (dvs. filen existerar inte), kör skriptet koden under else-grenen.
  6. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades, tillsammans med filens namn.
  7. fi: Denna rad markerar slutet på if-satsen.
Hittar fil

Hittar fil

9) Vad är skillnaden mellan enkla citattecken (') och dubbla citattecken () i skalskript?

Enkla citattecken (') och dubbla citattecken () används för att omsluta strängar i skalskript, men de har olika beteenden:

  • Enstaka citattecken: Allt mellan enstaka citattecken behandlas som en bokstavlig sträng. Variabelnamn och de flesta specialtecken utökas inte.
  • Dubbla citattecken: Variabler och vissa specialtecken inom dubbla citattecken utökas. Innehållet är föremål för variabel substitution och kommandosubstitution.

#!/bin/bash

abcd=Hej
echo '$abcd' # Utdata: $abcd
echo $abcd # Utgång: Hej

10) Hur kan du använda kommandoradsargument i ett skalskript?

Kommandoradsargument är värden som ges till ett skript när det körs. De kan nås i skriptet med hjälp av speciella variabler som $1, $2, etc., där $1 representerar det första argumentet, $2 representerar det andra argumentet, och så vidare.

Till exempel: Om vårt skriptnamn i `example.sh`

#!/bin/bash

echo Skriptnamn: $0
echo Första argumentet: $1
echo Andra argumentet: $2

Om vi ​​kör skriptet med `.example.sh hello_1 hello_2` kommer det att mata ut:

cli argument

cli argument

11) Hur använder du for-slingan för att iterera genom en lista med värden?

Skapa ett skriptnamn `example.sh`.

#!/bin/bash

frukt=(äpplebanan körsbärsdatum)
för frukt i ${frukter[@]}; do
echo Aktuell frukt: $fruit
Gjort

Förklaring:

`fruits=`-raden skapar en array som heter frukter med fyra element: äpple, banan, körsbär och datum.

  • för frukt i ${frukter[@]}; do: Den här raden startar en for-loop. Så här betyder varje del:
  • för frukt: Detta deklarerar en loopvariabel som kallas frukt. I varje iteration av loopen kommer frukt att hålla värdet på det aktuella elementet från fruktmatrisen.
  • ${fruits[@]}: Detta är en array-expansion som tar alla element från frukt-arrayen. ${…}-syntaxen säkerställer att varje element behandlas som ett separat objekt.
  • do: Detta nyckelord markerar början av loopkroppen.
  • echo Current fruit: $fruit: Inuti slingan använder den här raden echo-kommandot för att visa det aktuella värdet för loopvariabeln fruit. Den skriver ut ett meddelande som Aktuell frukt: äpple för varje frukt i arrayen.
  • done: Det här nyckelordet markerar slutet på loopkroppen. Det talar om för skriptet att slingan har avslutats.
för slinga

för slinga

12) Skriv ett skalskript som beräknar summan av heltal från 1 till N med hjälp av en slinga.

Skapa ett skriptnamn `example.sh`.

#!/bin/bash

echo Ange ett nummer (N):
läs N
summa=0
för ((i=l; i<=$N; i++)); do
summa=$((summa + i))
Gjort
echo Summan av heltal från 1 till $N är: $summa

Förklaring:
Skriptet börjar med att be dig ange ett nummer (N) med hjälp av read. Detta nummer avgör hur många gånger slingan körs.

  1. Variabelsumman initieras till 0. Denna variabel kommer att hålla reda på summan av heltal.
  2. For-slingan börjar med for (( i=1; i<=$N; i++ )). Denna loopstruktur används för att upprepa en uppsättning åtgärder ett visst antal gånger, i det här fallet, från 1 till värdet av N.
  3. Inuti slingan händer dessa saker:
    • i=1 sätter loopvariabeln i till 1 i början av varje iteration.
    • Slingvillkoret i<=$N kontrollerar om i fortfarande är mindre än eller lika med det givna talet N.
    • Om villkoret är sant, exekveras loopkroppen.
    • sum=$((sum + i)) beräknar det nya värdet av summan genom att lägga till det nuvarande värdet av i. Detta summerar heltal från 1 till det nuvarande i-värdet.
  4. Efter varje iteration ökar i++ värdet på i med 1.
  5. Slingan fortsätter att köras tills villkoret i<=$N blir falskt (när i blir större än N).
  6. När loopen är klar visar skriptet summan av heltal från 1 till det angivna talet N.

439

13) Skapa ett skript som söker efter ett specifikt ord i en fil och räknar dess förekomster.

Skapa ett skriptnamn `word_count.sh`

#!/bin/bash

echo Ange ordet att söka efter:
läs target_word
echo Ange filnamnet:
läs filnamn
count=$(grep -o -w $target_word $filnamn | wc -l)
echo Ordet '$target_word' visas $count gånger i '$filnamn'.

Förklaring:

  • echo Ange ordet att söka efter:: Denna rad visar ett meddelande som ber användaren att ange ett ord som de vill söka efter i en fil.
  • read target_word: Denna rad läser indata från användaren och lagrar den i en variabel som heter target_word.
  • echo Ange filnamnet:: Denna rad visar ett meddelande som ber användaren att ange namnet på filen de vill söka i.
  • läs filnamn: Denna rad läser indata från användaren och lagrar den i en variabel med namnet filnamn.
  • count=$(grep -o -w $målord $filnamn | wc -l): Den här raden utför skriptets huvudsakliga arbete. Låt oss bryta ner det ytterligare:
    • grep -o -w $target_word $filnamn: Denna del av kommandot söker efter förekomster av target_word i det angivna filnamnet. Alternativen -o och -w säkerställer att endast helordsmatchningar räknas.
    • |: Detta är ett rör som tar utdata från föregående kommando och skickar det som indata till nästa kommando.
    • wc -l: Den här delen av kommandot använder kommandot wc för att räkna antalet rader i inmatningen. Alternativet -l räknar specifikt raderna.
    • Hela kommandot beräknar antalet förekomster av target_word i filen och tilldelar det antalet till variabeln count

441

14) Förklara skillnaderna mellan standardutgång (stdout) och standardfel (stderr).

Huvudskillnaden mellan standardutgång (stdout) och standardfel (stderr) är följande:

  • Standardutgång (stdout): Detta är standardutgångsströmmen dit ett kommandos vanliga utdata går. Det visas på terminalen som standard. Du kan omdirigera den till en fil med>.
  • Standardfel (stderr): Detta är utdataströmmen för felmeddelanden och varningar. Det visas också på terminalen som standard. Du kan omdirigera den till en fil med 2>.

15) Förklara begreppet villkorliga uttalanden i skalskript.

Villkorliga uttalanden i skalskript låter oss fatta beslut och kontrollera flödet av vårt manus baserat på vissa förutsättningar. De gör det möjligt för vårt skript att köra olika uppsättningar av kommandon beroende på om ett visst villkor är sant eller falskt. De primära villkorssatserna i skalskript är if-satsen, elif-satsen (valfritt) och else-satsen (valfritt).

Här är den grundläggande strukturen för ett villkorligt uttalande i skalskript:

if [villkor]; sedan
# Kommandon att köra om villkoret är sant
elif [ another_condition ]; sedan
# Kommandon att köra om another_condition är sant (valfritt)
annan
# Kommandon att köra om inget av villkoren är sant (valfritt)
vara

Förklaring:

  • [ condition ] = Kommando som utvärderar villkoret och returnerar en sann (0) eller falsk (icke-noll) utgångsstatus.
  • then = Det är ett nyckelord som indikerar att kommandona efter det kommer att utföras om villkoret utvärderas till sant.
  • elif = (förkortning av else if) Det är ett avsnitt som låter oss specificera ytterligare villkor att kontrollera.
  • else = det är en sektion som innehåller kommandon som kommer att köras om inget av villkoren är sant.
  • fi = Det är ett nyckelord som markerar slutet på det villkorliga blocket.

16) Hur läser man rader från en fil i ett skalskript?

Till läsa rader från en fil i ett skalskript kan vi använda olika metoder, men ett vanligt tillvägagångssätt är att använda en while-loop i kombination med läskommandot. Så här kan vi göra det:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Kontrollera om filen finns
if [ -e $fil ]; sedan
medan IFS= read -r line; do
echo Line read: $line
# Lägg till din bearbetningslogik här
klar <$fil
annan
echo Filen hittades inte: $file
vara

Förklaring:

  1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
  2. file=/home/jayeshkumar/jayesh.txt: Den här raden definierar variabelfilen och tilldelar den fullständiga sökvägen till filen jayesh.txt i katalogen /home/jayeshkumar. Ändra den här sökvägen så att den matchar den faktiska sökvägen för filen du vill läsa.
  3. if [ -e $fil ]; then: Den här raden startar en if-sats. Den kontrollerar om filen som anges av variabeln $file existerar. Flaggan -e kontrollerar att filen finns.
  4. medan IFS= read -r line; do: Denna rad initierar en while-loop som läser rader från filen.
    • IFS=: IFS (Internal Field Separator) är satt till ett tomt värde för att bevara inledande och efterföljande mellanslag.
    • read -r line: Detta läser den aktuella raden från filen och lagrar den i variabelraden.
  5. echo Line read: $line: Denna rad skriver ut innehållet i raden som lästes från filen. Variabeln $line innehåller den aktuella radens innehåll.
  6. # Lägg till din bearbetningslogik här: Detta är en platshållarkommentar där du kan lägga till din egen logik för att bearbeta varje rad. Du kan till exempel analysera raden, extrahera information eller utföra specifika åtgärder baserat på innehållet.
  7. done <$file: Detta markerar slutet på while-loopen. < $filen omdirigerar innehållet i filen som ska läsas av loopen.
  8. else: Om filen inte finns (villkoret i if-satsen är falskt), exekverar skriptet koden under else-grenen.
  9. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades.
  10. fi: Denna rad markerar slutet på if-satsen.
läsa filen

läsa filen

Här använde vi ` pwd ` kommando för att hämta sökvägen till aktuell katalog.

17) Skriv en funktion i ett skalskript som beräknar fakulteten för ett givet tal.

Här är manusetberäkna faktorvärdetav ett givet nummer.

#!/bin/bash
# Definiera en funktion för att beräkna faktorial
beräkna_faktor() {
num=$1
fakta=1
för ((i=1; i<=tal; i++)); do
fakta=$((faktum * i))
Gjort
echo $fakta
}
# Be användaren att ange ett nummer
echo Ange ett nummer:
läs input_num
# Anropa calculate_factorial-funktionen med inmatningsnumret
factorial_result=$(calculate_fatorial $input_num)
# Visa det ursprungliga resultatet
echo Factorial av $input_num är: $factorial_result

Förklaring:

  1. Skriptet börjar med shebang-raden #!/bin/bash för att specificera tolken.
  2. calculate_fatorial() definieras som en funktion. Det krävs ett argument, num, vilket är talet för vilket faktorvärdet måste beräknas.
  3. Inuti funktionen initieras fakta till 1. Denna variabel lagrar det faktoriella resultatet.
  4. For-slingan itererar från 1 till det givna numret (num). I varje iteration multiplicerar den det aktuella värdet av fakta med loopindexet i.
  5. När slingan är klar innehåller faktavariabeln den beräknade faktorialen.
  6. Skriptet uppmanar användaren att ange ett nummer med läs.
  7. Funktionen calculate_factorial anropas med det av användaren angivna numret, och resultatet lagras i variabeln factorial_result.
  8. Slutligen visar skriptet det beräknade faktoriella resultatet.
Faktoriell

Faktoriell

18) Hur hanterar du signaler som Ctrl+C i ett skalskript?

I ett skalskript kan du hantera signaler som Ctrl+C (även känd som SIGINT) med kommandot trap. Ctrl+C genererar en SIGINT-signal när användaren trycker på den för att avbryta det pågående skriptet eller programmet. Genom att använda trap-kommandot kan du specificera åtgärder som ska vidtas när en viss signal tas emot. Så här hanterar du signaler som Ctrl+C i ett skalskript:

#!/bin/bash
städa() {
echo Skriptet avbröts. Rensar …
# Lägg till dina saneringsåtgärder här
utgång 1
}
# Sätt upp en fälla för att anropa rensningsfunktionen när Ctrl+C (SIGINT) tas emot
fällsanering SIGINT
# Resten av ditt manus
eko kör...
sova 10
eko Avslutad.

Att hantera signaler är viktigt för att göra skript robusta och för att säkerställa att de hanterar oväntade avbrott på ett elegant sätt. Du kan anpassa rensningsfunktionen för att matcha dina specifika behov, som att stänga filer, stoppa processer eller logga information innan skriptet avslutas.

Förklaring:

  1. #!/bin/bash: Denna shebang-rad specificerar tolken som ska användas för att köra skriptet.
  2. cleanup() { … }: Detta definierar en funktion som heter cleanup. Inuti den här funktionen kan du inkludera alla åtgärder som behöver utföras när skriptet avbryts, som att stänga filer, släppa resurser eller utföra andra rensningsuppgifter.
  3. trap cleanup SIGINT: Trappkommandot används för att ställa in en signalhanterare. I det här fallet specificerar den att när SIGINT-signalen (Ctrl+C) tas emot, ska rensningsfunktionen utföras.
  4. echo Running…, sleep 10, echo Finished.: Dessa är bara exempel på kommandon för att simulera exekveringen av ett skript.

446

19) Skapa ett skript som letar efter och tar bort dubbletter i en textfil.

Här är vårt linux-skript där vi tar bort dubbletter från en textfil.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sortera $indatafil | uniq> $output_file
echo Duplicerade rader har tagits bort.

Förklaring:

  1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att skriptet ska tolkas med Bash-skalet.
  2. Variabeln input_file är inställd på namnet på indatafilen som innehåller dubbla rader (ändra detta till ditt faktiska indatafilnamn).
  3. Variabeln output_file är inställd på namnet på utdatafilen där dubbletterna kommer att tas bort (ändra detta till önskat utdatafilnamn).
  4. Skriptet använder sorteringskommandot för att sortera raderna i inmatningsfilen. Sortering av raderna säkerställer att duplicerade rader grupperas tillsammans.
  5. De sorterade raderna skickas sedan genom kommandot uniq, som tar bort på varandra följande dubbletter. Utdata från denna process omdirigeras till utdatafilen.
  6. Efter att dubletterna har tagits bort skrivs ett framgångsmeddelande ut i skriptet.
dubblettlinje borttagning

dubblettlinje borttagning

Här använder vi ` katt ` för att visa texten i textfilen.

20) Skriv ett skript som genererar ett säkert slumpmässigt lösenord.

Här är vårt skript för att skapa ett säkert slumpmässigt lösenord.

#!/bin/bash
# Funktion för att generera ett slumpmässigt lösenord
generera lösenord() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Anropa funktionen och lagra det genererade lösenordet
lösenord=$(generera_lösenord)
echo Genererat lösenord: $password

Notera: Användaren kan därför ändra längden på lösenordet genom att ersätta siffran '12'.

Förklaring:

  1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att det ska tolkas med Bash-skalet.
  2. Generera_lösenord-funktionen är definierad för att generera ett slumpmässigt lösenord. Så här fungerar det:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 bryter de filtrerade slumpmässiga data i rader med bredd 12 tecken vardera.
    • head -n 1 väljer den första raden, vilket ger oss en slumpmässig sekvens av tecken med längden 12.
  3. Lösenordsvariabeln tilldelas resultatet av anrop av funktionen generera_lösenord.
  4. Slutligen visas det genererade lösenordet med hjälp av eko.

448

21) Skriv ett skalskript som beräknar den totala storleken på alla filer i en katalog.

Här är ett skalskript för att beräkna den totala storleken på alla filer i en katalog.

#!/bin/bash
katalog=/sökväg/till/din/katalog
total_size=$(du -csh $katalog | grep totalt | awk '{print $1}')
echo Total storlek på filer i $katalogen: $total_size

Förklaring:

  1. Skriptet börjar med #!/bin/bash shebang, vilket indikerar att det ska tolkas med Bash-skalet.
  2. Katalogvariabeln är inställd på sökvägen till den katalog som du vill beräkna den totala filstorleken för. Ersätt /sökväg/till/din/katalog med den faktiska sökvägen.
  3. Kommandot du används för att uppskatta filutrymmesanvändning. Alternativen som används är:
    • -c: Producera en totalsumma.
    • -s: Visa endast den totala storleken på den angivna katalogen.
    • -h: Utskriftsstorlekar i ett läsbart format (t.ex. KB, MB, GB).
  4. Utdata från du skickas till grep total för att filtrera bort raden som innehåller den totala storleken.
  5. awk '{print $1}' används för att extrahera det första fältet (total storlek) från raden.
  6. Den beräknade totala storleken lagras i variabeln total_size.
  7. Slutligen visar skriptet den totala storleken med hjälp av eko.
Total storlek på filer

Total storlek på filer

Här använde vi ` pwd ` kommando för att se den aktuella katalogsökvägen.

22) Förklara skillnaden mellan if- och elif-satser i skalskript.

Funktion `om` Staiftement `elif` uttalande
Syfte Förklara skillnaden mellan if- och elif-satser i skalskript. Tillhandahåller alternativa villkor för att kontrollera när det initiala om-villkoret är falskt.
användande Används för det ursprungliga skicket. Används efter initialt skick för att kontrollera ytterligare villkor.
antal block Kan bara ha ett om block. Kan ha flera elif-block, men bara ett annat block (valfritt).
Avrättning Kör kodblocket som är associerat med if-satsen om villkoret är sant. Om villkoret är falskt exekveras det andra blocket (om det finns) (valfritt). Kontrollerar varje elif-tillstånd i ordning. Om ett elif-villkor är sant, exekveras motsvarande kodblock och skriptet avslutar hela det villkorliga blocket. Om inget av elif-villkoren är sant, exekveras else-blocket (om det finns).
Kapslade strukturer Kan kapslas i andra if-, elif- eller else-block. Kan inte kapslas i ett annat elif-block, men kan användas i ett if eller else-block.

Låt oss förstå det med ett exempel.

#!/bin/bash
nummer=5
if [ $nummer -gt 10 ]; sedan
echo $number är större än 10
annan
echo $number är inte större än 10
vara
eko ——–
if [ $nummer -gt 10 ]; sedan
echo $number är större än 10
elif [ $number -eq 10 ]; sedan
echo $nummer är lika med 10
annan
echo $number är mindre än 10
vara

Förklaring:

I det här exemplet kontrollerar det första if-blocket om talet är större än 10. Om inte, skrivs ett meddelande ut som indikerar att talet inte är större än 10. Det andra blocket med elif-satser kontrollerar flera villkor sekventiellt tills ett av dem är sant. I det här fallet, eftersom värdet på nummer är 5, blir utdata:

if_elif skillnad

if_elif skillnad

23) Hur använder du en while-loop för att upprepade gånger utföra kommandon?

En while-loop används i skalskript för att upprepade gånger exekvera en uppsättning kommandon så länge som ett angivet villkor är sant. Slingan fortsätter att utföra kommandona tills villkoret blir falskt.

Här är den grundläggande syntaxen för en while-loop:

while [villkor]; do
# Kommandon som ska köras
Gjort

Förklaring:

  1. `while`-loopen börjar med nyckelordet `while` följt av ett villkor inom hakparenteser `[ ]`.
  2. Slingans kropp, som innehåller de kommandon som ska köras, är innesluten av nyckelorden 'do' och 'done'.
  3. Slingan kontrollerar först tillståndet. Om villkoret är sant, exekveras kommandona i loopkroppen. Efter att loopkroppen har körts kontrolleras villkoret igen, och processen upprepas tills villkoret blir falskt.

Exempel: Om vi ​​vill skriva ut nummer från 1 till 5

#!/bin/bash
räknare=1
medan [ $counter -le 5 ]; do
echo Number: $counter
räknare=$((räknare + 1))
Gjort

Förklaring:

  • Räknarvariabeln är inställd på 1.
  • While-slingan kontrollerar om värdet på räknaren är mindre än eller lika med 5. Så länge detta villkor är sant, fortsätter loopen att exekvera.
  • Inuti slingan skrivs det aktuella värdet av räknaren ut med hjälp av eko.
  • Räknaren ökas med 1 med uttrycket $((räknare + 1)).
medan loop

medan loop

24) Skapa ett skalskript som hittar och listar alla tomma filer i en katalog.

Skalskript som du kan använda för att hitta och lista alla tomma filer i en katalog med kommandona `find` och `stat`:

#!/bin/bash
katalog=$1″
if [ -z $katalog ]; sedan
echo Användning: $0
utgång 1
vara

om [ ! -d $katalog ]; sedan
echo Error: '$directory' är inte en giltig katalog.
utgång 1
vara
echo Tomma filer i $katalogen:
hitta $katalog -typ f -tom

Förklaring:

  1. ` #!/bin/bash `: Detta kallas en shebang, och det säger åt operativsystemet att använda Bash-skalet för att tolka och köra skriptet.
  2. ` katalog=$1″ `: Denna rad tilldelar det första kommandoradsargumentet (betecknat med $1) till variabeln ` katalog `.
  3. ` if [ -z $katalog ]; sedan `: Den här raden startar en if-sats som kontrollerar om ` katalog ` variabeln är tom (-z testar för en tom sträng).
  4. ` echo Användning: $0 `: Om katalogen är tom, skriver den här raden ut ett användningsmeddelande, där ` $0 ` representerar skriptets namn.
  5. ` utgång 1 `: Den här raden avslutar skriptet med exitkoden ` 1 `, vilket indikerar ett fel.
  6. ` vara `: Den här raden markerar slutet på ` om ` uttalande.
  7. ` om [ ! -d $katalog ]; sedan `: Detta startar en annan if-sats för att kontrollera om den tillhandahållna katalogen finns (` -d ` testar för en katalog).
  8. ` echo Error: '$directory' är inte en giltig katalog. `: Om den angivna katalogen inte finns, skrivs ett felmeddelande ut på den här raden.
  9. ` utgång 1 `: Avslutar skriptet med exitkoden ` 1 `.
  10. ` vara `: Markerar slutet på den andra ` om` påstående.
  11. ` echo Tomma filer i $katalogen: `: Om allt är giltigt hittills skrivs ett meddelande ut på den här raden som indikerar att skriptet kommer att lista tomma filer i den angivna katalogen.
  12. ` hitta $katalog -typ f -tom `: Den här raden använder ` hitta ` kommando för att söka efter tomma filer (` -tömma `) av typen vanliga filer (` -typ f `) i den angivna katalogen. Den listar sedan dessa tomma filer.
Hitta tomma filer

Hitta tomma filer

Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/

25) Vad är syftet med läskommandot i skalskript?

Läskommandot i skalskriptning låter skriptet be dig om information. Det är som när en dator ställer en fråga till dig och väntar på ditt svar. Detta är användbart för skript som kräver att du skriver något eller när skriptet behöver arbeta med information från filer. Läskommandot hjälper skriptet att stanna och vänta på vad du skriver, och sedan kan det använda den informationen för att göra fler saker i skriptet.

Syntax för läskommandot:

read variable_name>

Exempel : Om vi ​​vill ta namn som en input från användaren för att skriva ut det.

#!/bin/bash
echo Vänligen ange ditt namn:
läsa namn
echo Hej, $name!

453

läs nam

Sammanfattningsvis används läskommandot för att fånga användarindata eller data från filer i skalskript, vilket gör skripten mer interaktiva och mångsidiga.

26) Skriv ett skalskript som konverterar alla filnamn i en katalog till gemener.

Här är ett skalskript som konverterar alla filnamn i en katalog till gemener.

#!/bin/bash
katalog=$1″
if [ -z $katalog ]; sedan
echo Användning: $0
utgång 1
vara

om [ ! -d $katalog ]; sedan

echo Error: '$directory' är inte en giltig katalog.
utgång 1
vara

cd $katalog || utgång 1

för fil i *; do
if [ -f $fil ]; sedan
newname=$(eko $fil | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
vara
Gjort

Förklaring:

  1. #!/bin/bash : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
  2. katalog=$1″ : Den här raden tilldelar det första kommandoradsargumentet till variabelkatalogen.
  3. if [ -z $katalog ]; sedan : Den här raden kontrollerar om katalogvariabeln är tom (inget argument anges när skriptet körs).
  4. echo Användning: $0 : Om katalogen är tom skriver den här raden ut ett användningsmeddelande med skriptets namn ($0).
  5. utgång 1 : Den här raden avslutar skriptet med utgångskoden 1, vilket indikerar att ett fel har inträffat.
  6. f i: Detta markerar slutet på den första if-satsen.
  7. om [ ! -d $katalog ]; sedan : Den här raden kontrollerar om den angivna katalogen inte finns (-d testar för en katalog).
  8. echo Error: '$directory' är inte en giltig katalog. : Om den angivna katalogen inte finns skrivs ett felmeddelande ut på den här raden.
  9. utgång 1 : Avslutar skriptet med utgångskoden 1.
  10. vara : Markerar slutet av den andra if-satsen.
  11. cd $katalog || utgång 1 : Ändrar den aktuella arbetskatalogen till den angivna katalogen. Om katalogändringen misslyckas (t.ex. en icke-existerande katalog), avslutas skriptet med en felkod.
  12. för fil i *; do: jag för fil i *; do: initierar en loop som itererar över alla objekt i den aktuella katalogen (* matchar alla filnamn).
  13. if [ -f $fil ]; sedan : Kontrollerar om det aktuella loopiterationsobjektet är en vanlig fil (-f testar för en vanlig fil).
  14. newname=$(eko $fil | tr 'A-Z' 'a-z') : Konverterar det aktuella filnamnet ($file) till gemener med kommandot tr och lagrar resultatet i variabeln newname.
  15. [ $file != $newname ] && mv $file $newname : Jämför det ursprungliga filnamnet med det nya filnamnet med gemener. Om de är olika byter den namn på filen med kommandot mv.
  16. vara : Markerar slutet på den inre if-satsen.
  17. Gjort : Markerar slutet av slingan.

454

Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/test

27) Hur kan du använda aritmetiska operationer i ett skalskript?

Aritmetiska operationer kan utföras inom ett skalskript med olika inbyggda metoder. Skalet tillhandahåller mekanismer för enkla aritmetiska beräkningar med aritmetisk expansion som:

  1. Aritmetisk expansion ($((…)))
  2. Använder kommandot expr
  3. Använder let Command

Här är vårt Shell-skript som förklarar alla tre metoderna för aritmetiska operationer.

#!/bin/bash
num1=10
num2=5

#Aritmetisk expansion ($((…)))

resultat=$((nummer1 + nummer2))
echo Summa: $result

#Använda kommandot expr

summa=$(expr $num1 + $num2)
echo Summa: $summa

#Använda let Command

låt summa = num1 + num2
echo Summa: $summa

Förklaring:

  1. `#!/bin/bash` : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
  2. `num1=10` och ` num2=5` : Dessa rader tilldelar värdena 10 och 5 till variablerna ` nummer1 ` och ` nummer2 `, respektive.
  3. `#Aritmetisk expansion ($((...)))` : Detta är en kommentar som indikerar början av avsnittet som visar aritmetisk expansion.
  4. `resultat=$((tal1 + nummer2))` : Den här raden använder aritmetisk expansion för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` resultat ` variabel.
  5. `echo Summa: $resultat` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` resultat ` variabel.
  6. `#Använder kommandot expr` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` expr ` kommando för aritmetiska operationer.
  7. `summa=$(expr $num1 + $num2)` : Den här raden använder ` expr ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` belopp ` variabel. Observera att ` expr ` kommando kräver mellanslag runt operatörerna.
  8. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
  9. `#Använda let Command` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` låta ` kommando för aritmetiska operationer.
  10. 'låt summa = num1 + num2″'. : Den här raden använder ` låta ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och tilldelar resultatet till ` belopp ` variabel. Den ` låta ` kommando kräver inte mellanslag runt operatorerna.
  11. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
aritmetisk

aritmetisk

28) Skapa ett skript som kontrollerar om en nätverksvärd är nåbar.

Här är ett enkelt skalskript som använder kommandot ping för att kontrollera om en nätverksvärd är tillgänglig:

#!/bin/bash
värd=$1″
if [ -z $värd ]; sedan
echo Användning: $0
utgång 1
vara
ping -c 4 $host

om [$? -eq 0]; sedan
echo $host är tillgänglig.
annan
echo $host är inte tillgänglig.
vara

Förklaring:

  1. Den tar ett värdnamn eller IP-adress som argument och kontrollerar om argumentet tillhandahålls.
  2. Om inget argument tillhandahålls, visar det ett användningsmeddelande och avslutas.
  3. Den använder kommandot ping med alternativet -c 4 för att skicka fyra ICMP-ekoförfrågningar till den angivna värden.
  4. Efter att ping-kommandot körts kontrollerar det utgångsstatusen ($?). Om utgångsstatusen är 0 betyder det att värden är nåbar och skriptet skriver ut ett framgångsmeddelande. Annars skrivs ett felmeddelande ut.

456

Notera : Vi måste ange ett värdnamn som ett argument när vi kör skriptet. Här har vi använt google.com

29) Skriv ett skalskript för att hitta det bästa elementet i en array:

Här är ett skalskript för att hitta det bästa elementet i en array.

#!/bin/bash
# Deklarera en array
array=(3 56 24 89 67)

# Initiera en variabel för att lagra maxvärdet, börja med det första elementet

max=${array[0]}

# Iterera genom arrayen

för num i ${array[@]}; do

# Jämför varje element med nuvarande maximum

if ((antal> max)); sedan
max=$antal
vara
Gjort

# Skriv ut maxvärdet

echo Det maximala elementet i arrayen är: $max

Förklaring:

  1. ` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.
  2. ` array=(3 56 24 89 67) `: Arrayen deklareras och initieras med värden.
  3. ` max=${array[0]} `: `max` initieras med det första elementet i arrayen.
  4. ` för num i ${array[@]}; do `: En `for` loop används för att iterera genom elementen i arrayen.
  5. ` if ((antal> max)); sedan `: En `if`-sats kontrollerar om det aktuella elementet `num` är större än det nuvarande maximala `max`.
  6. ` max=$num`: Om`num ` är större än `max`, `max` uppdateras med värdet num.
  7. ` Gjort `: `För`-slingan är stängd.
  8. ` echo Det maximala elementet i arrayen är: $max `: Slutligen skriver skriptet ut det maximala värdet som finns i arrayen.
461

största antal

30) Skriv ett skript för att beräkna summan av element i en matris.

#!/bin/bash

# Deklarera en array

array=(1 65 22 19 94)

# Initiera en variabel för att lagra summan

summa=0

# Iterera genom arrayen och lägg till varje element till summan

för num i ${array[@]}; do
am=$((am + am))
Gjort

# Skriv ut summan

echo Summan av element i arrayen är: $summa

Förklaring:

` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.

` array=(1 65 22 19 94) `: Arrayen deklareras och initieras med värden.

` summa=0 `:` belopp ` initieras till noll för att hålla summan av element.

` för num i ${array[@]}; do `: A ` för ` loop används för att iterera genom elementen i arrayen.

` am=$((am + am)) `: Inuti slingan, varje element ` på ett ` läggs till i ` belopp ` variabel.

` Gjort `: Den ` för `-slingan är stängd.

`echo Summan av element i arrayen är: $summa`: Slutligen skriver skriptet ut summan av alla element i arrayen.

462

Summan av element

Lär dig mer om Shell-skript

Slutsats

Vi alla nördar vet att skalskript är mycket användbart för att öka arbetsproduktiviteten och samtidigt spara tid. Så, i den här artikeln har vi täckt 30 mycket användbara och mest luriga skalskriptexempel . Vi hoppas att den här kompletta guiden om skalskriptexempel hjälper dig att förstå allt om skalskripten.




utgång 1
vara

om [ ! -d $katalog ]; sedan
echo Error: '$directory' är inte en giltig katalog.
utgång 1
vara
echo Tomma filer i $katalogen:
hitta $katalog -typ f -tom

Förklaring:

  1. ` #!/bin/bash `: Detta kallas en shebang, och det säger åt operativsystemet att använda Bash-skalet för att tolka och köra skriptet.
  2. ` katalog=″ `: Denna rad tilldelar det första kommandoradsargumentet (betecknat med ) till variabeln ` katalog `.
  3. ` if [ -z $katalog ]; sedan `: Den här raden startar en if-sats som kontrollerar om ` katalog ` variabeln är tom (-z testar för en tom sträng).
  4. ` echo Användning:

    För alla Linux-distributioner är skalskriptet som en trollstav som automatiserar processen, sparar tid för användare och ökar produktiviteten. Denna handledning för ska skript kommer att introducera dig till 25 plus ska skriptexemplen.

    Men innan vi går vidare till ämnet skalskript exempel, låt oss förstå skalskript och de faktiska användningsfallen för skalskript.

    Vad är Shell Script?

    Tja, skalet är en CLI ( kommandoradstolk ), som körs i ett textfönster där användare kan hantera och utföra skalkommandon. Å andra sidan, processen att skriva en uppsättning kommandon som ska köras på ett Linux-system. En fil som innehåller sådana instruktioner kallas ett bash-skript.

    Användning av Shell-skript

    Nedan följer några vanliga användningsområden för Shell Script:

    • Uppgiftsautomatisering – Den kan användas för att automatisera repetitiva uppgifter som regelbundna säkerhetskopieringar och programvaruinstallationsuppgifter.
    • Anpassning – Man kan använda skalskript för att designa sin kommandoradsmiljö och enkelt utföra sin uppgift enligt behov.
    • Filhantering - Skalskripten kan också användas för att hantera och manipulera filer och kataloger, som att flytta, kopiera, byta namn på eller ta bort filer.

    Shell Script Exempel i Linux

    1) Vad indikerar shebang (#!) i början av ett skalskript?

    De shebang (#!) i början av ett skript indikerar tolken som ska användas för att köra skriptet. Det talar om för systemet vilket skal eller tolk som ska tolka skriptets kommandon.

    Till exempel: Anta att vi har ett skript som heter myscript.sh skrivet i Bash-skalet:

    shebang

    shebang

    I det här exemplet:

    • #!/bin/bash i början av skriptet indikerar att skriptet ska tolkas med Bash-skalet.
    • Ekokommandona används för att skriva ut meddelanden till terminalen.

    2) Hur kör du ett skalskript från kommandoraden?

    För att köra ett skalskript från kommandoraden måste vi följa dessa steg:

    • Se till att skriptfilen har körbara behörigheter med hjälp av chmod kommando :
    chmod +x myscript.sh>
    • Kör skriptet med dess filnamn:
    ./myscript.sh>

    Här måste du byta ut myscrtipt.sh med ditt manusnamn.

    3) Skriv ett skalskript som skriver ut techcodeview.com till terminalen.

    Skapa ett skriptnamn `myscript.sh` (vi använder ` därför att ` editor, du kan välja vilken editor som helst)

    vim myscript.sh>

    #!/bin/bash
    # Detta skript skriver ut techcodeview.com till terminalen
    echo techcodeview.com

    Skriv namn

    Skriv namn

    Vi gör vårt skript körbart genom att använda `chmod +x` och kör sedan med `./myscipt.sh` och få vår önskade utdata techcodeview.com.

    4) Förklara syftet med echo-kommandot i skalskript.

    De eko kommando används för att visa text eller variabler på terminalen. Det används ofta för att skriva ut meddelanden, variabla värden och generera programutdata.

    434

    eko kommando

    I det här exemplet har vi exekverat `echo` på terminal direkt, eftersom det fungerar på samma sätt i skalskriptet.

    5) Hur kan du tilldela ett värde till en variabel i ett skalskript?

    Variabler tilldelas värden med hjälp av tilldelningsoperatorn =.

    Till exempel:

    #!/bin/bash
    # Tilldela ett värde till en variabel
    namn=Jayesh
    ålder=21
    echo $name $age

    Förklaring:

    • Namnvariabeln tilldelas värdet Jayesh.
    • Åldersvariabeln tilldelas värdet 21.
    • echo används för att skriva ut och `$name` `$age` används för att anropa värdet som lagras i variablerna.

    435

    6) Skriv ett skalskript som tar en användares namn som indata och hälsar dem välkomna.

    Skapa ett skriptnamn `example.sh`.

    #!/bin/bash
    # Fråga användaren om deras namn
    echo Vad heter du?
    läs namn
    # Hälsa användaren
    echo Hej, $name! Trevligt att träffas.

    Förklaring:

    • #!/bin/bash: Det här är shebang-linjen. Den säger åt systemet att använda Bash-tolken för att köra skriptet.
    • # Fråga användaren om deras namn: Det här är en kommentar. Det ger sammanhang om den kommande koden. Kommentarer ignoreras av tolken.
    • echo Vad heter du?: Echo-kommandot används för att visa texten med dubbla citattecken på terminalen.
    • read name: Read-kommandot väntar på att användaren matar in text och lagrar den i variabelnamnet.
    • echo Hej, $name! Trevligt att träffa dig.: Den här raden använder ekokommandot för att skriva ut ett hälsningsmeddelande som inkluderar värdet på namnvariabeln, som samlades in från användarens indata.

    436

    7) Hur lägger man till kommentarer till ett skalskript?

    Kommentarer i skalskript används för att ge förklaringar eller sammanhang till koden. De ignoreras av tolken och är endast avsedda för människor som läser manuset. Du kan lägga till kommentarer med #-symbolen.

    #!/bin/bash
    # Det här är en kommentar som förklarar syftet med skriptet
    echo gfg

    8) Skapa ett skalskript som kontrollerar om en fil finns i den aktuella katalogen.

    Här är ett skript som kontrollerar om en fil med namnet example.txt finns i den aktuella katalogen:

    #!/bin/bash
    file=example.txt
    # Kontrollera om filen finns
    if [ -e $fil ]; sedan
    echo Filen finns: $file
    annan
    echo Filen hittades inte: $file
    vara

    Förklaring:

    1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
    2. file=example.txt: Den här raden definierar variabelfilen och tilldelar den värdet example.txt. Du kan ersätta detta med namnet på filen du vill söka efter.
    3. if [ -e $fil ]; then: Den här raden startar en if-sats. Villkoret [ -e $file ] kontrollerar om filen som anges av värdet på filvariabeln existerar. Flaggan -e används för att kontrollera om filen finns.
    4. echo File exists: $file: Om villkoret är sant (dvs. filen existerar), skrivs ett meddelande ut på den här raden som indikerar att filen existerar, tillsammans med filens namn.
    5. else: Om villkoret är falskt (dvs. filen existerar inte), kör skriptet koden under else-grenen.
    6. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades, tillsammans med filens namn.
    7. fi: Denna rad markerar slutet på if-satsen.
    Hittar fil

    Hittar fil

    9) Vad är skillnaden mellan enkla citattecken (') och dubbla citattecken () i skalskript?

    Enkla citattecken (') och dubbla citattecken () används för att omsluta strängar i skalskript, men de har olika beteenden:

    • Enstaka citattecken: Allt mellan enstaka citattecken behandlas som en bokstavlig sträng. Variabelnamn och de flesta specialtecken utökas inte.
    • Dubbla citattecken: Variabler och vissa specialtecken inom dubbla citattecken utökas. Innehållet är föremål för variabel substitution och kommandosubstitution.

    #!/bin/bash

    abcd=Hej
    echo '$abcd' # Utdata: $abcd
    echo $abcd # Utgång: Hej

    10) Hur kan du använda kommandoradsargument i ett skalskript?

    Kommandoradsargument är värden som ges till ett skript när det körs. De kan nås i skriptet med hjälp av speciella variabler som $1, $2, etc., där $1 representerar det första argumentet, $2 representerar det andra argumentet, och så vidare.

    Till exempel: Om vårt skriptnamn i `example.sh`

    #!/bin/bash

    echo Skriptnamn: $0
    echo Första argumentet: $1
    echo Andra argumentet: $2

    Om vi ​​kör skriptet med `.example.sh hello_1 hello_2` kommer det att mata ut:

    cli argument

    cli argument

    11) Hur använder du for-slingan för att iterera genom en lista med värden?

    Skapa ett skriptnamn `example.sh`.

    #!/bin/bash

    frukt=(äpplebanan körsbärsdatum)
    för frukt i ${frukter[@]}; do
    echo Aktuell frukt: $fruit
    Gjort

    Förklaring:

    `fruits=`-raden skapar en array som heter frukter med fyra element: äpple, banan, körsbär och datum.

    • för frukt i ${frukter[@]}; do: Den här raden startar en for-loop. Så här betyder varje del:
    • för frukt: Detta deklarerar en loopvariabel som kallas frukt. I varje iteration av loopen kommer frukt att hålla värdet på det aktuella elementet från fruktmatrisen.
    • ${fruits[@]}: Detta är en array-expansion som tar alla element från frukt-arrayen. ${…}-syntaxen säkerställer att varje element behandlas som ett separat objekt.
    • do: Detta nyckelord markerar början av loopkroppen.
    • echo Current fruit: $fruit: Inuti slingan använder den här raden echo-kommandot för att visa det aktuella värdet för loopvariabeln fruit. Den skriver ut ett meddelande som Aktuell frukt: äpple för varje frukt i arrayen.
    • done: Det här nyckelordet markerar slutet på loopkroppen. Det talar om för skriptet att slingan har avslutats.
    för slinga

    för slinga

    12) Skriv ett skalskript som beräknar summan av heltal från 1 till N med hjälp av en slinga.

    Skapa ett skriptnamn `example.sh`.

    #!/bin/bash

    echo Ange ett nummer (N):
    läs N
    summa=0
    för ((i=l; i<=$N; i++)); do
    summa=$((summa + i))
    Gjort
    echo Summan av heltal från 1 till $N är: $summa

    Förklaring:
    Skriptet börjar med att be dig ange ett nummer (N) med hjälp av read. Detta nummer avgör hur många gånger slingan körs.

    1. Variabelsumman initieras till 0. Denna variabel kommer att hålla reda på summan av heltal.
    2. For-slingan börjar med for (( i=1; i<=$N; i++ )). Denna loopstruktur används för att upprepa en uppsättning åtgärder ett visst antal gånger, i det här fallet, från 1 till värdet av N.
    3. Inuti slingan händer dessa saker:
      • i=1 sätter loopvariabeln i till 1 i början av varje iteration.
      • Slingvillkoret i<=$N kontrollerar om i fortfarande är mindre än eller lika med det givna talet N.
      • Om villkoret är sant, exekveras loopkroppen.
      • sum=$((sum + i)) beräknar det nya värdet av summan genom att lägga till det nuvarande värdet av i. Detta summerar heltal från 1 till det nuvarande i-värdet.
    4. Efter varje iteration ökar i++ värdet på i med 1.
    5. Slingan fortsätter att köras tills villkoret i<=$N blir falskt (när i blir större än N).
    6. När loopen är klar visar skriptet summan av heltal från 1 till det angivna talet N.

    439

    13) Skapa ett skript som söker efter ett specifikt ord i en fil och räknar dess förekomster.

    Skapa ett skriptnamn `word_count.sh`

    #!/bin/bash

    echo Ange ordet att söka efter:
    läs target_word
    echo Ange filnamnet:
    läs filnamn
    count=$(grep -o -w $target_word $filnamn | wc -l)
    echo Ordet '$target_word' visas $count gånger i '$filnamn'.

    Förklaring:

    • echo Ange ordet att söka efter:: Denna rad visar ett meddelande som ber användaren att ange ett ord som de vill söka efter i en fil.
    • read target_word: Denna rad läser indata från användaren och lagrar den i en variabel som heter target_word.
    • echo Ange filnamnet:: Denna rad visar ett meddelande som ber användaren att ange namnet på filen de vill söka i.
    • läs filnamn: Denna rad läser indata från användaren och lagrar den i en variabel med namnet filnamn.
    • count=$(grep -o -w $målord $filnamn | wc -l): Den här raden utför skriptets huvudsakliga arbete. Låt oss bryta ner det ytterligare:
      • grep -o -w $target_word $filnamn: Denna del av kommandot söker efter förekomster av target_word i det angivna filnamnet. Alternativen -o och -w säkerställer att endast helordsmatchningar räknas.
      • |: Detta är ett rör som tar utdata från föregående kommando och skickar det som indata till nästa kommando.
      • wc -l: Den här delen av kommandot använder kommandot wc för att räkna antalet rader i inmatningen. Alternativet -l räknar specifikt raderna.
      • Hela kommandot beräknar antalet förekomster av target_word i filen och tilldelar det antalet till variabeln count

    441

    14) Förklara skillnaderna mellan standardutgång (stdout) och standardfel (stderr).

    Huvudskillnaden mellan standardutgång (stdout) och standardfel (stderr) är följande:

    • Standardutgång (stdout): Detta är standardutgångsströmmen dit ett kommandos vanliga utdata går. Det visas på terminalen som standard. Du kan omdirigera den till en fil med>.
    • Standardfel (stderr): Detta är utdataströmmen för felmeddelanden och varningar. Det visas också på terminalen som standard. Du kan omdirigera den till en fil med 2>.

    15) Förklara begreppet villkorliga uttalanden i skalskript.

    Villkorliga uttalanden i skalskript låter oss fatta beslut och kontrollera flödet av vårt manus baserat på vissa förutsättningar. De gör det möjligt för vårt skript att köra olika uppsättningar av kommandon beroende på om ett visst villkor är sant eller falskt. De primära villkorssatserna i skalskript är if-satsen, elif-satsen (valfritt) och else-satsen (valfritt).

    Här är den grundläggande strukturen för ett villkorligt uttalande i skalskript:

    if [villkor]; sedan
    # Kommandon att köra om villkoret är sant
    elif [ another_condition ]; sedan
    # Kommandon att köra om another_condition är sant (valfritt)
    annan
    # Kommandon att köra om inget av villkoren är sant (valfritt)
    vara

    Förklaring:

    • [ condition ] = Kommando som utvärderar villkoret och returnerar en sann (0) eller falsk (icke-noll) utgångsstatus.
    • then = Det är ett nyckelord som indikerar att kommandona efter det kommer att utföras om villkoret utvärderas till sant.
    • elif = (förkortning av else if) Det är ett avsnitt som låter oss specificera ytterligare villkor att kontrollera.
    • else = det är en sektion som innehåller kommandon som kommer att köras om inget av villkoren är sant.
    • fi = Det är ett nyckelord som markerar slutet på det villkorliga blocket.

    16) Hur läser man rader från en fil i ett skalskript?

    Till läsa rader från en fil i ett skalskript kan vi använda olika metoder, men ett vanligt tillvägagångssätt är att använda en while-loop i kombination med läskommandot. Så här kan vi göra det:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Kontrollera om filen finns
    if [ -e $fil ]; sedan
    medan IFS= read -r line; do
    echo Line read: $line
    # Lägg till din bearbetningslogik här
    klar <$fil
    annan
    echo Filen hittades inte: $file
    vara

    Förklaring:

    1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
    2. file=/home/jayeshkumar/jayesh.txt: Den här raden definierar variabelfilen och tilldelar den fullständiga sökvägen till filen jayesh.txt i katalogen /home/jayeshkumar. Ändra den här sökvägen så att den matchar den faktiska sökvägen för filen du vill läsa.
    3. if [ -e $fil ]; then: Den här raden startar en if-sats. Den kontrollerar om filen som anges av variabeln $file existerar. Flaggan -e kontrollerar att filen finns.
    4. medan IFS= read -r line; do: Denna rad initierar en while-loop som läser rader från filen.
      • IFS=: IFS (Internal Field Separator) är satt till ett tomt värde för att bevara inledande och efterföljande mellanslag.
      • read -r line: Detta läser den aktuella raden från filen och lagrar den i variabelraden.
    5. echo Line read: $line: Denna rad skriver ut innehållet i raden som lästes från filen. Variabeln $line innehåller den aktuella radens innehåll.
    6. # Lägg till din bearbetningslogik här: Detta är en platshållarkommentar där du kan lägga till din egen logik för att bearbeta varje rad. Du kan till exempel analysera raden, extrahera information eller utföra specifika åtgärder baserat på innehållet.
    7. done <$file: Detta markerar slutet på while-loopen. < $filen omdirigerar innehållet i filen som ska läsas av loopen.
    8. else: Om filen inte finns (villkoret i if-satsen är falskt), exekverar skriptet koden under else-grenen.
    9. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades.
    10. fi: Denna rad markerar slutet på if-satsen.
    läsa filen

    läsa filen

    Här använde vi ` pwd ` kommando för att hämta sökvägen till aktuell katalog.

    17) Skriv en funktion i ett skalskript som beräknar fakulteten för ett givet tal.

    Här är manusetberäkna faktorvärdetav ett givet nummer.

    #!/bin/bash
    # Definiera en funktion för att beräkna faktorial
    beräkna_faktor() {
    num=$1
    fakta=1
    för ((i=1; i<=tal; i++)); do
    fakta=$((faktum * i))
    Gjort
    echo $fakta
    }
    # Be användaren att ange ett nummer
    echo Ange ett nummer:
    läs input_num
    # Anropa calculate_factorial-funktionen med inmatningsnumret
    factorial_result=$(calculate_fatorial $input_num)
    # Visa det ursprungliga resultatet
    echo Factorial av $input_num är: $factorial_result

    Förklaring:

    1. Skriptet börjar med shebang-raden #!/bin/bash för att specificera tolken.
    2. calculate_fatorial() definieras som en funktion. Det krävs ett argument, num, vilket är talet för vilket faktorvärdet måste beräknas.
    3. Inuti funktionen initieras fakta till 1. Denna variabel lagrar det faktoriella resultatet.
    4. For-slingan itererar från 1 till det givna numret (num). I varje iteration multiplicerar den det aktuella värdet av fakta med loopindexet i.
    5. När slingan är klar innehåller faktavariabeln den beräknade faktorialen.
    6. Skriptet uppmanar användaren att ange ett nummer med läs.
    7. Funktionen calculate_factorial anropas med det av användaren angivna numret, och resultatet lagras i variabeln factorial_result.
    8. Slutligen visar skriptet det beräknade faktoriella resultatet.
    Faktoriell

    Faktoriell

    18) Hur hanterar du signaler som Ctrl+C i ett skalskript?

    I ett skalskript kan du hantera signaler som Ctrl+C (även känd som SIGINT) med kommandot trap. Ctrl+C genererar en SIGINT-signal när användaren trycker på den för att avbryta det pågående skriptet eller programmet. Genom att använda trap-kommandot kan du specificera åtgärder som ska vidtas när en viss signal tas emot. Så här hanterar du signaler som Ctrl+C i ett skalskript:

    #!/bin/bash
    städa() {
    echo Skriptet avbröts. Rensar …
    # Lägg till dina saneringsåtgärder här
    utgång 1
    }
    # Sätt upp en fälla för att anropa rensningsfunktionen när Ctrl+C (SIGINT) tas emot
    fällsanering SIGINT
    # Resten av ditt manus
    eko kör...
    sova 10
    eko Avslutad.

    Att hantera signaler är viktigt för att göra skript robusta och för att säkerställa att de hanterar oväntade avbrott på ett elegant sätt. Du kan anpassa rensningsfunktionen för att matcha dina specifika behov, som att stänga filer, stoppa processer eller logga information innan skriptet avslutas.

    Förklaring:

    1. #!/bin/bash: Denna shebang-rad specificerar tolken som ska användas för att köra skriptet.
    2. cleanup() { … }: Detta definierar en funktion som heter cleanup. Inuti den här funktionen kan du inkludera alla åtgärder som behöver utföras när skriptet avbryts, som att stänga filer, släppa resurser eller utföra andra rensningsuppgifter.
    3. trap cleanup SIGINT: Trappkommandot används för att ställa in en signalhanterare. I det här fallet specificerar den att när SIGINT-signalen (Ctrl+C) tas emot, ska rensningsfunktionen utföras.
    4. echo Running…, sleep 10, echo Finished.: Dessa är bara exempel på kommandon för att simulera exekveringen av ett skript.

    446

    19) Skapa ett skript som letar efter och tar bort dubbletter i en textfil.

    Här är vårt linux-skript där vi tar bort dubbletter från en textfil.

    #!/bin/bash
    input_file=input.txt
    output_file=output.txt
    sortera $indatafil | uniq> $output_file
    echo Duplicerade rader har tagits bort.

    Förklaring:

    1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att skriptet ska tolkas med Bash-skalet.
    2. Variabeln input_file är inställd på namnet på indatafilen som innehåller dubbla rader (ändra detta till ditt faktiska indatafilnamn).
    3. Variabeln output_file är inställd på namnet på utdatafilen där dubbletterna kommer att tas bort (ändra detta till önskat utdatafilnamn).
    4. Skriptet använder sorteringskommandot för att sortera raderna i inmatningsfilen. Sortering av raderna säkerställer att duplicerade rader grupperas tillsammans.
    5. De sorterade raderna skickas sedan genom kommandot uniq, som tar bort på varandra följande dubbletter. Utdata från denna process omdirigeras till utdatafilen.
    6. Efter att dubletterna har tagits bort skrivs ett framgångsmeddelande ut i skriptet.
    dubblettlinje borttagning

    dubblettlinje borttagning

    Här använder vi ` katt ` för att visa texten i textfilen.

    20) Skriv ett skript som genererar ett säkert slumpmässigt lösenord.

    Här är vårt skript för att skapa ett säkert slumpmässigt lösenord.

    #!/bin/bash
    # Funktion för att generera ett slumpmässigt lösenord
    generera lösenord() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Anropa funktionen och lagra det genererade lösenordet
    lösenord=$(generera_lösenord)
    echo Genererat lösenord: $password

    Notera: Användaren kan därför ändra längden på lösenordet genom att ersätta siffran '12'.

    Förklaring:

    1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att det ska tolkas med Bash-skalet.
    2. Generera_lösenord-funktionen är definierad för att generera ett slumpmässigt lösenord. Så här fungerar det:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 bryter de filtrerade slumpmässiga data i rader med bredd 12 tecken vardera.
      • head -n 1 väljer den första raden, vilket ger oss en slumpmässig sekvens av tecken med längden 12.
    3. Lösenordsvariabeln tilldelas resultatet av anrop av funktionen generera_lösenord.
    4. Slutligen visas det genererade lösenordet med hjälp av eko.

    448

    21) Skriv ett skalskript som beräknar den totala storleken på alla filer i en katalog.

    Här är ett skalskript för att beräkna den totala storleken på alla filer i en katalog.

    #!/bin/bash
    katalog=/sökväg/till/din/katalog
    total_size=$(du -csh $katalog | grep totalt | awk '{print $1}')
    echo Total storlek på filer i $katalogen: $total_size

    Förklaring:

    1. Skriptet börjar med #!/bin/bash shebang, vilket indikerar att det ska tolkas med Bash-skalet.
    2. Katalogvariabeln är inställd på sökvägen till den katalog som du vill beräkna den totala filstorleken för. Ersätt /sökväg/till/din/katalog med den faktiska sökvägen.
    3. Kommandot du används för att uppskatta filutrymmesanvändning. Alternativen som används är:
      • -c: Producera en totalsumma.
      • -s: Visa endast den totala storleken på den angivna katalogen.
      • -h: Utskriftsstorlekar i ett läsbart format (t.ex. KB, MB, GB).
    4. Utdata från du skickas till grep total för att filtrera bort raden som innehåller den totala storleken.
    5. awk '{print $1}' används för att extrahera det första fältet (total storlek) från raden.
    6. Den beräknade totala storleken lagras i variabeln total_size.
    7. Slutligen visar skriptet den totala storleken med hjälp av eko.
    Total storlek på filer

    Total storlek på filer

    Här använde vi ` pwd ` kommando för att se den aktuella katalogsökvägen.

    22) Förklara skillnaden mellan if- och elif-satser i skalskript.

    Funktion `om` Staiftement `elif` uttalande
    Syfte Förklara skillnaden mellan if- och elif-satser i skalskript. Tillhandahåller alternativa villkor för att kontrollera när det initiala om-villkoret är falskt.
    användande Används för det ursprungliga skicket. Används efter initialt skick för att kontrollera ytterligare villkor.
    antal block Kan bara ha ett om block. Kan ha flera elif-block, men bara ett annat block (valfritt).
    Avrättning Kör kodblocket som är associerat med if-satsen om villkoret är sant. Om villkoret är falskt exekveras det andra blocket (om det finns) (valfritt). Kontrollerar varje elif-tillstånd i ordning. Om ett elif-villkor är sant, exekveras motsvarande kodblock och skriptet avslutar hela det villkorliga blocket. Om inget av elif-villkoren är sant, exekveras else-blocket (om det finns).
    Kapslade strukturer Kan kapslas i andra if-, elif- eller else-block. Kan inte kapslas i ett annat elif-block, men kan användas i ett if eller else-block.

    Låt oss förstå det med ett exempel.

    #!/bin/bash
    nummer=5
    if [ $nummer -gt 10 ]; sedan
    echo $number är större än 10
    annan
    echo $number är inte större än 10
    vara
    eko ——–
    if [ $nummer -gt 10 ]; sedan
    echo $number är större än 10
    elif [ $number -eq 10 ]; sedan
    echo $nummer är lika med 10
    annan
    echo $number är mindre än 10
    vara

    Förklaring:

    I det här exemplet kontrollerar det första if-blocket om talet är större än 10. Om inte, skrivs ett meddelande ut som indikerar att talet inte är större än 10. Det andra blocket med elif-satser kontrollerar flera villkor sekventiellt tills ett av dem är sant. I det här fallet, eftersom värdet på nummer är 5, blir utdata:

    if_elif skillnad

    if_elif skillnad

    23) Hur använder du en while-loop för att upprepade gånger utföra kommandon?

    En while-loop används i skalskript för att upprepade gånger exekvera en uppsättning kommandon så länge som ett angivet villkor är sant. Slingan fortsätter att utföra kommandona tills villkoret blir falskt.

    Här är den grundläggande syntaxen för en while-loop:

    while [villkor]; do
    # Kommandon som ska köras
    Gjort

    Förklaring:

    1. `while`-loopen börjar med nyckelordet `while` följt av ett villkor inom hakparenteser `[ ]`.
    2. Slingans kropp, som innehåller de kommandon som ska köras, är innesluten av nyckelorden 'do' och 'done'.
    3. Slingan kontrollerar först tillståndet. Om villkoret är sant, exekveras kommandona i loopkroppen. Efter att loopkroppen har körts kontrolleras villkoret igen, och processen upprepas tills villkoret blir falskt.

    Exempel: Om vi ​​vill skriva ut nummer från 1 till 5

    #!/bin/bash
    räknare=1
    medan [ $counter -le 5 ]; do
    echo Number: $counter
    räknare=$((räknare + 1))
    Gjort

    Förklaring:

    • Räknarvariabeln är inställd på 1.
    • While-slingan kontrollerar om värdet på räknaren är mindre än eller lika med 5. Så länge detta villkor är sant, fortsätter loopen att exekvera.
    • Inuti slingan skrivs det aktuella värdet av räknaren ut med hjälp av eko.
    • Räknaren ökas med 1 med uttrycket $((räknare + 1)).
    medan loop

    medan loop

    24) Skapa ett skalskript som hittar och listar alla tomma filer i en katalog.

    Skalskript som du kan använda för att hitta och lista alla tomma filer i en katalog med kommandona `find` och `stat`:

    #!/bin/bash
    katalog=$1″
    if [ -z $katalog ]; sedan
    echo Användning: $0
    utgång 1
    vara

    om [ ! -d $katalog ]; sedan
    echo Error: '$directory' är inte en giltig katalog.
    utgång 1
    vara
    echo Tomma filer i $katalogen:
    hitta $katalog -typ f -tom

    Förklaring:

    1. ` #!/bin/bash `: Detta kallas en shebang, och det säger åt operativsystemet att använda Bash-skalet för att tolka och köra skriptet.
    2. ` katalog=$1″ `: Denna rad tilldelar det första kommandoradsargumentet (betecknat med $1) till variabeln ` katalog `.
    3. ` if [ -z $katalog ]; sedan `: Den här raden startar en if-sats som kontrollerar om ` katalog ` variabeln är tom (-z testar för en tom sträng).
    4. ` echo Användning: $0 `: Om katalogen är tom, skriver den här raden ut ett användningsmeddelande, där ` $0 ` representerar skriptets namn.
    5. ` utgång 1 `: Den här raden avslutar skriptet med exitkoden ` 1 `, vilket indikerar ett fel.
    6. ` vara `: Den här raden markerar slutet på ` om ` uttalande.
    7. ` om [ ! -d $katalog ]; sedan `: Detta startar en annan if-sats för att kontrollera om den tillhandahållna katalogen finns (` -d ` testar för en katalog).
    8. ` echo Error: '$directory' är inte en giltig katalog. `: Om den angivna katalogen inte finns, skrivs ett felmeddelande ut på den här raden.
    9. ` utgång 1 `: Avslutar skriptet med exitkoden ` 1 `.
    10. ` vara `: Markerar slutet på den andra ` om` påstående.
    11. ` echo Tomma filer i $katalogen: `: Om allt är giltigt hittills skrivs ett meddelande ut på den här raden som indikerar att skriptet kommer att lista tomma filer i den angivna katalogen.
    12. ` hitta $katalog -typ f -tom `: Den här raden använder ` hitta ` kommando för att söka efter tomma filer (` -tömma `) av typen vanliga filer (` -typ f `) i den angivna katalogen. Den listar sedan dessa tomma filer.
    Hitta tomma filer

    Hitta tomma filer

    Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/

    25) Vad är syftet med läskommandot i skalskript?

    Läskommandot i skalskriptning låter skriptet be dig om information. Det är som när en dator ställer en fråga till dig och väntar på ditt svar. Detta är användbart för skript som kräver att du skriver något eller när skriptet behöver arbeta med information från filer. Läskommandot hjälper skriptet att stanna och vänta på vad du skriver, och sedan kan det använda den informationen för att göra fler saker i skriptet.

    Syntax för läskommandot:

    read variable_name>

    Exempel : Om vi ​​vill ta namn som en input från användaren för att skriva ut det.

    #!/bin/bash
    echo Vänligen ange ditt namn:
    läsa namn
    echo Hej, $name!

    453

    läs nam

    Sammanfattningsvis används läskommandot för att fånga användarindata eller data från filer i skalskript, vilket gör skripten mer interaktiva och mångsidiga.

    26) Skriv ett skalskript som konverterar alla filnamn i en katalog till gemener.

    Här är ett skalskript som konverterar alla filnamn i en katalog till gemener.

    #!/bin/bash
    katalog=$1″
    if [ -z $katalog ]; sedan
    echo Användning: $0
    utgång 1
    vara

    om [ ! -d $katalog ]; sedan

    echo Error: '$directory' är inte en giltig katalog.
    utgång 1
    vara

    cd $katalog || utgång 1

    för fil i *; do
    if [ -f $fil ]; sedan
    newname=$(eko $fil | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    vara
    Gjort

    Förklaring:

    1. #!/bin/bash : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
    2. katalog=$1″ : Den här raden tilldelar det första kommandoradsargumentet till variabelkatalogen.
    3. if [ -z $katalog ]; sedan : Den här raden kontrollerar om katalogvariabeln är tom (inget argument anges när skriptet körs).
    4. echo Användning: $0 : Om katalogen är tom skriver den här raden ut ett användningsmeddelande med skriptets namn ($0).
    5. utgång 1 : Den här raden avslutar skriptet med utgångskoden 1, vilket indikerar att ett fel har inträffat.
    6. f i: Detta markerar slutet på den första if-satsen.
    7. om [ ! -d $katalog ]; sedan : Den här raden kontrollerar om den angivna katalogen inte finns (-d testar för en katalog).
    8. echo Error: '$directory' är inte en giltig katalog. : Om den angivna katalogen inte finns skrivs ett felmeddelande ut på den här raden.
    9. utgång 1 : Avslutar skriptet med utgångskoden 1.
    10. vara : Markerar slutet av den andra if-satsen.
    11. cd $katalog || utgång 1 : Ändrar den aktuella arbetskatalogen till den angivna katalogen. Om katalogändringen misslyckas (t.ex. en icke-existerande katalog), avslutas skriptet med en felkod.
    12. för fil i *; do: jag för fil i *; do: initierar en loop som itererar över alla objekt i den aktuella katalogen (* matchar alla filnamn).
    13. if [ -f $fil ]; sedan : Kontrollerar om det aktuella loopiterationsobjektet är en vanlig fil (-f testar för en vanlig fil).
    14. newname=$(eko $fil | tr 'A-Z' 'a-z') : Konverterar det aktuella filnamnet ($file) till gemener med kommandot tr och lagrar resultatet i variabeln newname.
    15. [ $file != $newname ] && mv $file $newname : Jämför det ursprungliga filnamnet med det nya filnamnet med gemener. Om de är olika byter den namn på filen med kommandot mv.
    16. vara : Markerar slutet på den inre if-satsen.
    17. Gjort : Markerar slutet av slingan.

    454

    Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/test

    27) Hur kan du använda aritmetiska operationer i ett skalskript?

    Aritmetiska operationer kan utföras inom ett skalskript med olika inbyggda metoder. Skalet tillhandahåller mekanismer för enkla aritmetiska beräkningar med aritmetisk expansion som:

    1. Aritmetisk expansion ($((…)))
    2. Använder kommandot expr
    3. Använder let Command

    Här är vårt Shell-skript som förklarar alla tre metoderna för aritmetiska operationer.

    #!/bin/bash
    num1=10
    num2=5

    #Aritmetisk expansion ($((…)))

    resultat=$((nummer1 + nummer2))
    echo Summa: $result

    #Använda kommandot expr

    summa=$(expr $num1 + $num2)
    echo Summa: $summa

    #Använda let Command

    låt summa = num1 + num2
    echo Summa: $summa

    Förklaring:

    1. `#!/bin/bash` : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
    2. `num1=10` och ` num2=5` : Dessa rader tilldelar värdena 10 och 5 till variablerna ` nummer1 ` och ` nummer2 `, respektive.
    3. `#Aritmetisk expansion ($((...)))` : Detta är en kommentar som indikerar början av avsnittet som visar aritmetisk expansion.
    4. `resultat=$((tal1 + nummer2))` : Den här raden använder aritmetisk expansion för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` resultat ` variabel.
    5. `echo Summa: $resultat` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` resultat ` variabel.
    6. `#Använder kommandot expr` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` expr ` kommando för aritmetiska operationer.
    7. `summa=$(expr $num1 + $num2)` : Den här raden använder ` expr ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` belopp ` variabel. Observera att ` expr ` kommando kräver mellanslag runt operatörerna.
    8. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
    9. `#Använda let Command` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` låta ` kommando för aritmetiska operationer.
    10. 'låt summa = num1 + num2″'. : Den här raden använder ` låta ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och tilldelar resultatet till ` belopp ` variabel. Den ` låta ` kommando kräver inte mellanslag runt operatorerna.
    11. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
    aritmetisk

    aritmetisk

    28) Skapa ett skript som kontrollerar om en nätverksvärd är nåbar.

    Här är ett enkelt skalskript som använder kommandot ping för att kontrollera om en nätverksvärd är tillgänglig:

    #!/bin/bash
    värd=$1″
    if [ -z $värd ]; sedan
    echo Användning: $0
    utgång 1
    vara
    ping -c 4 $host

    om [$? -eq 0]; sedan
    echo $host är tillgänglig.
    annan
    echo $host är inte tillgänglig.
    vara

    Förklaring:

    1. Den tar ett värdnamn eller IP-adress som argument och kontrollerar om argumentet tillhandahålls.
    2. Om inget argument tillhandahålls, visar det ett användningsmeddelande och avslutas.
    3. Den använder kommandot ping med alternativet -c 4 för att skicka fyra ICMP-ekoförfrågningar till den angivna värden.
    4. Efter att ping-kommandot körts kontrollerar det utgångsstatusen ($?). Om utgångsstatusen är 0 betyder det att värden är nåbar och skriptet skriver ut ett framgångsmeddelande. Annars skrivs ett felmeddelande ut.

    456

    Notera : Vi måste ange ett värdnamn som ett argument när vi kör skriptet. Här har vi använt google.com

    29) Skriv ett skalskript för att hitta det bästa elementet i en array:

    Här är ett skalskript för att hitta det bästa elementet i en array.

    #!/bin/bash
    # Deklarera en array
    array=(3 56 24 89 67)

    # Initiera en variabel för att lagra maxvärdet, börja med det första elementet

    max=${array[0]}

    # Iterera genom arrayen

    för num i ${array[@]}; do

    # Jämför varje element med nuvarande maximum

    if ((antal> max)); sedan
    max=$antal
    vara
    Gjort

    # Skriv ut maxvärdet

    echo Det maximala elementet i arrayen är: $max

    Förklaring:

    1. ` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.
    2. ` array=(3 56 24 89 67) `: Arrayen deklareras och initieras med värden.
    3. ` max=${array[0]} `: `max` initieras med det första elementet i arrayen.
    4. ` för num i ${array[@]}; do `: En `for` loop används för att iterera genom elementen i arrayen.
    5. ` if ((antal> max)); sedan `: En `if`-sats kontrollerar om det aktuella elementet `num` är större än det nuvarande maximala `max`.
    6. ` max=$num`: Om`num ` är större än `max`, `max` uppdateras med värdet num.
    7. ` Gjort `: `För`-slingan är stängd.
    8. ` echo Det maximala elementet i arrayen är: $max `: Slutligen skriver skriptet ut det maximala värdet som finns i arrayen.
    461

    största antal

    30) Skriv ett skript för att beräkna summan av element i en matris.

    #!/bin/bash

    # Deklarera en array

    array=(1 65 22 19 94)

    # Initiera en variabel för att lagra summan

    summa=0

    # Iterera genom arrayen och lägg till varje element till summan

    för num i ${array[@]}; do
    am=$((am + am))
    Gjort

    # Skriv ut summan

    echo Summan av element i arrayen är: $summa

    Förklaring:

    ` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.

    ` array=(1 65 22 19 94) `: Arrayen deklareras och initieras med värden.

    ` summa=0 `:` belopp ` initieras till noll för att hålla summan av element.

    ` för num i ${array[@]}; do `: A ` för ` loop används för att iterera genom elementen i arrayen.

    ` am=$((am + am)) `: Inuti slingan, varje element ` på ett ` läggs till i ` belopp ` variabel.

    ` Gjort `: Den ` för `-slingan är stängd.

    `echo Summan av element i arrayen är: $summa`: Slutligen skriver skriptet ut summan av alla element i arrayen.

    462

    Summan av element

    Lär dig mer om Shell-skript

    Slutsats

    Vi alla nördar vet att skalskript är mycket användbart för att öka arbetsproduktiviteten och samtidigt spara tid. Så, i den här artikeln har vi täckt 30 mycket användbara och mest luriga skalskriptexempel . Vi hoppas att den här kompletta guiden om skalskriptexempel hjälper dig att förstå allt om skalskripten.



    `: Om katalogen är tom, skriver den här raden ut ett användningsmeddelande, där `

    För alla Linux-distributioner är skalskriptet som en trollstav som automatiserar processen, sparar tid för användare och ökar produktiviteten. Denna handledning för ska skript kommer att introducera dig till 25 plus ska skriptexemplen.

    Men innan vi går vidare till ämnet skalskript exempel, låt oss förstå skalskript och de faktiska användningsfallen för skalskript.

    Vad är Shell Script?

    Tja, skalet är en CLI ( kommandoradstolk ), som körs i ett textfönster där användare kan hantera och utföra skalkommandon. Å andra sidan, processen att skriva en uppsättning kommandon som ska köras på ett Linux-system. En fil som innehåller sådana instruktioner kallas ett bash-skript.

    Användning av Shell-skript

    Nedan följer några vanliga användningsområden för Shell Script:

    • Uppgiftsautomatisering – Den kan användas för att automatisera repetitiva uppgifter som regelbundna säkerhetskopieringar och programvaruinstallationsuppgifter.
    • Anpassning – Man kan använda skalskript för att designa sin kommandoradsmiljö och enkelt utföra sin uppgift enligt behov.
    • Filhantering - Skalskripten kan också användas för att hantera och manipulera filer och kataloger, som att flytta, kopiera, byta namn på eller ta bort filer.

    Shell Script Exempel i Linux

    1) Vad indikerar shebang (#!) i början av ett skalskript?

    De shebang (#!) i början av ett skript indikerar tolken som ska användas för att köra skriptet. Det talar om för systemet vilket skal eller tolk som ska tolka skriptets kommandon.

    Till exempel: Anta att vi har ett skript som heter myscript.sh skrivet i Bash-skalet:

    shebang

    shebang

    I det här exemplet:

    • #!/bin/bash i början av skriptet indikerar att skriptet ska tolkas med Bash-skalet.
    • Ekokommandona används för att skriva ut meddelanden till terminalen.

    2) Hur kör du ett skalskript från kommandoraden?

    För att köra ett skalskript från kommandoraden måste vi följa dessa steg:

    • Se till att skriptfilen har körbara behörigheter med hjälp av chmod kommando :
    chmod +x myscript.sh>
    • Kör skriptet med dess filnamn:
    ./myscript.sh>

    Här måste du byta ut myscrtipt.sh med ditt manusnamn.

    3) Skriv ett skalskript som skriver ut techcodeview.com till terminalen.

    Skapa ett skriptnamn `myscript.sh` (vi använder ` därför att ` editor, du kan välja vilken editor som helst)

    vim myscript.sh>

    #!/bin/bash
    # Detta skript skriver ut techcodeview.com till terminalen
    echo techcodeview.com

    Skriv namn

    Skriv namn

    Vi gör vårt skript körbart genom att använda `chmod +x` och kör sedan med `./myscipt.sh` och få vår önskade utdata techcodeview.com.

    4) Förklara syftet med echo-kommandot i skalskript.

    De eko kommando används för att visa text eller variabler på terminalen. Det används ofta för att skriva ut meddelanden, variabla värden och generera programutdata.

    434

    eko kommando

    I det här exemplet har vi exekverat `echo` på terminal direkt, eftersom det fungerar på samma sätt i skalskriptet.

    5) Hur kan du tilldela ett värde till en variabel i ett skalskript?

    Variabler tilldelas värden med hjälp av tilldelningsoperatorn =.

    Till exempel:

    #!/bin/bash
    # Tilldela ett värde till en variabel
    namn=Jayesh
    ålder=21
    echo $name $age

    Förklaring:

    • Namnvariabeln tilldelas värdet Jayesh.
    • Åldersvariabeln tilldelas värdet 21.
    • echo används för att skriva ut och `$name` `$age` används för att anropa värdet som lagras i variablerna.

    435

    6) Skriv ett skalskript som tar en användares namn som indata och hälsar dem välkomna.

    Skapa ett skriptnamn `example.sh`.

    #!/bin/bash
    # Fråga användaren om deras namn
    echo Vad heter du?
    läs namn
    # Hälsa användaren
    echo Hej, $name! Trevligt att träffas.

    Förklaring:

    • #!/bin/bash: Det här är shebang-linjen. Den säger åt systemet att använda Bash-tolken för att köra skriptet.
    • # Fråga användaren om deras namn: Det här är en kommentar. Det ger sammanhang om den kommande koden. Kommentarer ignoreras av tolken.
    • echo Vad heter du?: Echo-kommandot används för att visa texten med dubbla citattecken på terminalen.
    • read name: Read-kommandot väntar på att användaren matar in text och lagrar den i variabelnamnet.
    • echo Hej, $name! Trevligt att träffa dig.: Den här raden använder ekokommandot för att skriva ut ett hälsningsmeddelande som inkluderar värdet på namnvariabeln, som samlades in från användarens indata.

    436

    7) Hur lägger man till kommentarer till ett skalskript?

    Kommentarer i skalskript används för att ge förklaringar eller sammanhang till koden. De ignoreras av tolken och är endast avsedda för människor som läser manuset. Du kan lägga till kommentarer med #-symbolen.

    #!/bin/bash
    # Det här är en kommentar som förklarar syftet med skriptet
    echo gfg

    8) Skapa ett skalskript som kontrollerar om en fil finns i den aktuella katalogen.

    Här är ett skript som kontrollerar om en fil med namnet example.txt finns i den aktuella katalogen:

    #!/bin/bash
    file=example.txt
    # Kontrollera om filen finns
    if [ -e $fil ]; sedan
    echo Filen finns: $file
    annan
    echo Filen hittades inte: $file
    vara

    Förklaring:

    1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
    2. file=example.txt: Den här raden definierar variabelfilen och tilldelar den värdet example.txt. Du kan ersätta detta med namnet på filen du vill söka efter.
    3. if [ -e $fil ]; then: Den här raden startar en if-sats. Villkoret [ -e $file ] kontrollerar om filen som anges av värdet på filvariabeln existerar. Flaggan -e används för att kontrollera om filen finns.
    4. echo File exists: $file: Om villkoret är sant (dvs. filen existerar), skrivs ett meddelande ut på den här raden som indikerar att filen existerar, tillsammans med filens namn.
    5. else: Om villkoret är falskt (dvs. filen existerar inte), kör skriptet koden under else-grenen.
    6. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades, tillsammans med filens namn.
    7. fi: Denna rad markerar slutet på if-satsen.
    Hittar fil

    Hittar fil

    9) Vad är skillnaden mellan enkla citattecken (') och dubbla citattecken () i skalskript?

    Enkla citattecken (') och dubbla citattecken () används för att omsluta strängar i skalskript, men de har olika beteenden:

    • Enstaka citattecken: Allt mellan enstaka citattecken behandlas som en bokstavlig sträng. Variabelnamn och de flesta specialtecken utökas inte.
    • Dubbla citattecken: Variabler och vissa specialtecken inom dubbla citattecken utökas. Innehållet är föremål för variabel substitution och kommandosubstitution.

    #!/bin/bash

    abcd=Hej
    echo '$abcd' # Utdata: $abcd
    echo $abcd # Utgång: Hej

    10) Hur kan du använda kommandoradsargument i ett skalskript?

    Kommandoradsargument är värden som ges till ett skript när det körs. De kan nås i skriptet med hjälp av speciella variabler som $1, $2, etc., där $1 representerar det första argumentet, $2 representerar det andra argumentet, och så vidare.

    Till exempel: Om vårt skriptnamn i `example.sh`

    #!/bin/bash

    echo Skriptnamn: $0
    echo Första argumentet: $1
    echo Andra argumentet: $2

    Om vi ​​kör skriptet med `.example.sh hello_1 hello_2` kommer det att mata ut:

    cli argument

    cli argument

    11) Hur använder du for-slingan för att iterera genom en lista med värden?

    Skapa ett skriptnamn `example.sh`.

    #!/bin/bash

    frukt=(äpplebanan körsbärsdatum)
    för frukt i ${frukter[@]}; do
    echo Aktuell frukt: $fruit
    Gjort

    Förklaring:

    `fruits=`-raden skapar en array som heter frukter med fyra element: äpple, banan, körsbär och datum.

    • för frukt i ${frukter[@]}; do: Den här raden startar en for-loop. Så här betyder varje del:
    • för frukt: Detta deklarerar en loopvariabel som kallas frukt. I varje iteration av loopen kommer frukt att hålla värdet på det aktuella elementet från fruktmatrisen.
    • ${fruits[@]}: Detta är en array-expansion som tar alla element från frukt-arrayen. ${…}-syntaxen säkerställer att varje element behandlas som ett separat objekt.
    • do: Detta nyckelord markerar början av loopkroppen.
    • echo Current fruit: $fruit: Inuti slingan använder den här raden echo-kommandot för att visa det aktuella värdet för loopvariabeln fruit. Den skriver ut ett meddelande som Aktuell frukt: äpple för varje frukt i arrayen.
    • done: Det här nyckelordet markerar slutet på loopkroppen. Det talar om för skriptet att slingan har avslutats.
    för slinga

    för slinga

    12) Skriv ett skalskript som beräknar summan av heltal från 1 till N med hjälp av en slinga.

    Skapa ett skriptnamn `example.sh`.

    #!/bin/bash

    echo Ange ett nummer (N):
    läs N
    summa=0
    för ((i=l; i<=$N; i++)); do
    summa=$((summa + i))
    Gjort
    echo Summan av heltal från 1 till $N är: $summa

    Förklaring:
    Skriptet börjar med att be dig ange ett nummer (N) med hjälp av read. Detta nummer avgör hur många gånger slingan körs.

    1. Variabelsumman initieras till 0. Denna variabel kommer att hålla reda på summan av heltal.
    2. For-slingan börjar med for (( i=1; i<=$N; i++ )). Denna loopstruktur används för att upprepa en uppsättning åtgärder ett visst antal gånger, i det här fallet, från 1 till värdet av N.
    3. Inuti slingan händer dessa saker:
      • i=1 sätter loopvariabeln i till 1 i början av varje iteration.
      • Slingvillkoret i<=$N kontrollerar om i fortfarande är mindre än eller lika med det givna talet N.
      • Om villkoret är sant, exekveras loopkroppen.
      • sum=$((sum + i)) beräknar det nya värdet av summan genom att lägga till det nuvarande värdet av i. Detta summerar heltal från 1 till det nuvarande i-värdet.
    4. Efter varje iteration ökar i++ värdet på i med 1.
    5. Slingan fortsätter att köras tills villkoret i<=$N blir falskt (när i blir större än N).
    6. När loopen är klar visar skriptet summan av heltal från 1 till det angivna talet N.

    439

    13) Skapa ett skript som söker efter ett specifikt ord i en fil och räknar dess förekomster.

    Skapa ett skriptnamn `word_count.sh`

    #!/bin/bash

    echo Ange ordet att söka efter:
    läs target_word
    echo Ange filnamnet:
    läs filnamn
    count=$(grep -o -w $target_word $filnamn | wc -l)
    echo Ordet '$target_word' visas $count gånger i '$filnamn'.

    Förklaring:

    • echo Ange ordet att söka efter:: Denna rad visar ett meddelande som ber användaren att ange ett ord som de vill söka efter i en fil.
    • read target_word: Denna rad läser indata från användaren och lagrar den i en variabel som heter target_word.
    • echo Ange filnamnet:: Denna rad visar ett meddelande som ber användaren att ange namnet på filen de vill söka i.
    • läs filnamn: Denna rad läser indata från användaren och lagrar den i en variabel med namnet filnamn.
    • count=$(grep -o -w $målord $filnamn | wc -l): Den här raden utför skriptets huvudsakliga arbete. Låt oss bryta ner det ytterligare:
      • grep -o -w $target_word $filnamn: Denna del av kommandot söker efter förekomster av target_word i det angivna filnamnet. Alternativen -o och -w säkerställer att endast helordsmatchningar räknas.
      • |: Detta är ett rör som tar utdata från föregående kommando och skickar det som indata till nästa kommando.
      • wc -l: Den här delen av kommandot använder kommandot wc för att räkna antalet rader i inmatningen. Alternativet -l räknar specifikt raderna.
      • Hela kommandot beräknar antalet förekomster av target_word i filen och tilldelar det antalet till variabeln count

    441

    14) Förklara skillnaderna mellan standardutgång (stdout) och standardfel (stderr).

    Huvudskillnaden mellan standardutgång (stdout) och standardfel (stderr) är följande:

    • Standardutgång (stdout): Detta är standardutgångsströmmen dit ett kommandos vanliga utdata går. Det visas på terminalen som standard. Du kan omdirigera den till en fil med>.
    • Standardfel (stderr): Detta är utdataströmmen för felmeddelanden och varningar. Det visas också på terminalen som standard. Du kan omdirigera den till en fil med 2>.

    15) Förklara begreppet villkorliga uttalanden i skalskript.

    Villkorliga uttalanden i skalskript låter oss fatta beslut och kontrollera flödet av vårt manus baserat på vissa förutsättningar. De gör det möjligt för vårt skript att köra olika uppsättningar av kommandon beroende på om ett visst villkor är sant eller falskt. De primära villkorssatserna i skalskript är if-satsen, elif-satsen (valfritt) och else-satsen (valfritt).

    Här är den grundläggande strukturen för ett villkorligt uttalande i skalskript:

    if [villkor]; sedan
    # Kommandon att köra om villkoret är sant
    elif [ another_condition ]; sedan
    # Kommandon att köra om another_condition är sant (valfritt)
    annan
    # Kommandon att köra om inget av villkoren är sant (valfritt)
    vara

    Förklaring:

    • [ condition ] = Kommando som utvärderar villkoret och returnerar en sann (0) eller falsk (icke-noll) utgångsstatus.
    • then = Det är ett nyckelord som indikerar att kommandona efter det kommer att utföras om villkoret utvärderas till sant.
    • elif = (förkortning av else if) Det är ett avsnitt som låter oss specificera ytterligare villkor att kontrollera.
    • else = det är en sektion som innehåller kommandon som kommer att köras om inget av villkoren är sant.
    • fi = Det är ett nyckelord som markerar slutet på det villkorliga blocket.

    16) Hur läser man rader från en fil i ett skalskript?

    Till läsa rader från en fil i ett skalskript kan vi använda olika metoder, men ett vanligt tillvägagångssätt är att använda en while-loop i kombination med läskommandot. Så här kan vi göra det:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Kontrollera om filen finns
    if [ -e $fil ]; sedan
    medan IFS= read -r line; do
    echo Line read: $line
    # Lägg till din bearbetningslogik här
    klar <$fil
    annan
    echo Filen hittades inte: $file
    vara

    Förklaring:

    1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
    2. file=/home/jayeshkumar/jayesh.txt: Den här raden definierar variabelfilen och tilldelar den fullständiga sökvägen till filen jayesh.txt i katalogen /home/jayeshkumar. Ändra den här sökvägen så att den matchar den faktiska sökvägen för filen du vill läsa.
    3. if [ -e $fil ]; then: Den här raden startar en if-sats. Den kontrollerar om filen som anges av variabeln $file existerar. Flaggan -e kontrollerar att filen finns.
    4. medan IFS= read -r line; do: Denna rad initierar en while-loop som läser rader från filen.
      • IFS=: IFS (Internal Field Separator) är satt till ett tomt värde för att bevara inledande och efterföljande mellanslag.
      • read -r line: Detta läser den aktuella raden från filen och lagrar den i variabelraden.
    5. echo Line read: $line: Denna rad skriver ut innehållet i raden som lästes från filen. Variabeln $line innehåller den aktuella radens innehåll.
    6. # Lägg till din bearbetningslogik här: Detta är en platshållarkommentar där du kan lägga till din egen logik för att bearbeta varje rad. Du kan till exempel analysera raden, extrahera information eller utföra specifika åtgärder baserat på innehållet.
    7. done <$file: Detta markerar slutet på while-loopen. < $filen omdirigerar innehållet i filen som ska läsas av loopen.
    8. else: Om filen inte finns (villkoret i if-satsen är falskt), exekverar skriptet koden under else-grenen.
    9. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades.
    10. fi: Denna rad markerar slutet på if-satsen.
    läsa filen

    läsa filen

    Här använde vi ` pwd ` kommando för att hämta sökvägen till aktuell katalog.

    17) Skriv en funktion i ett skalskript som beräknar fakulteten för ett givet tal.

    Här är manusetberäkna faktorvärdetav ett givet nummer.

    #!/bin/bash
    # Definiera en funktion för att beräkna faktorial
    beräkna_faktor() {
    num=$1
    fakta=1
    för ((i=1; i<=tal; i++)); do
    fakta=$((faktum * i))
    Gjort
    echo $fakta
    }
    # Be användaren att ange ett nummer
    echo Ange ett nummer:
    läs input_num
    # Anropa calculate_factorial-funktionen med inmatningsnumret
    factorial_result=$(calculate_fatorial $input_num)
    # Visa det ursprungliga resultatet
    echo Factorial av $input_num är: $factorial_result

    Förklaring:

    1. Skriptet börjar med shebang-raden #!/bin/bash för att specificera tolken.
    2. calculate_fatorial() definieras som en funktion. Det krävs ett argument, num, vilket är talet för vilket faktorvärdet måste beräknas.
    3. Inuti funktionen initieras fakta till 1. Denna variabel lagrar det faktoriella resultatet.
    4. For-slingan itererar från 1 till det givna numret (num). I varje iteration multiplicerar den det aktuella värdet av fakta med loopindexet i.
    5. När slingan är klar innehåller faktavariabeln den beräknade faktorialen.
    6. Skriptet uppmanar användaren att ange ett nummer med läs.
    7. Funktionen calculate_factorial anropas med det av användaren angivna numret, och resultatet lagras i variabeln factorial_result.
    8. Slutligen visar skriptet det beräknade faktoriella resultatet.
    Faktoriell

    Faktoriell

    18) Hur hanterar du signaler som Ctrl+C i ett skalskript?

    I ett skalskript kan du hantera signaler som Ctrl+C (även känd som SIGINT) med kommandot trap. Ctrl+C genererar en SIGINT-signal när användaren trycker på den för att avbryta det pågående skriptet eller programmet. Genom att använda trap-kommandot kan du specificera åtgärder som ska vidtas när en viss signal tas emot. Så här hanterar du signaler som Ctrl+C i ett skalskript:

    #!/bin/bash
    städa() {
    echo Skriptet avbröts. Rensar …
    # Lägg till dina saneringsåtgärder här
    utgång 1
    }
    # Sätt upp en fälla för att anropa rensningsfunktionen när Ctrl+C (SIGINT) tas emot
    fällsanering SIGINT
    # Resten av ditt manus
    eko kör...
    sova 10
    eko Avslutad.

    Att hantera signaler är viktigt för att göra skript robusta och för att säkerställa att de hanterar oväntade avbrott på ett elegant sätt. Du kan anpassa rensningsfunktionen för att matcha dina specifika behov, som att stänga filer, stoppa processer eller logga information innan skriptet avslutas.

    Förklaring:

    1. #!/bin/bash: Denna shebang-rad specificerar tolken som ska användas för att köra skriptet.
    2. cleanup() { … }: Detta definierar en funktion som heter cleanup. Inuti den här funktionen kan du inkludera alla åtgärder som behöver utföras när skriptet avbryts, som att stänga filer, släppa resurser eller utföra andra rensningsuppgifter.
    3. trap cleanup SIGINT: Trappkommandot används för att ställa in en signalhanterare. I det här fallet specificerar den att när SIGINT-signalen (Ctrl+C) tas emot, ska rensningsfunktionen utföras.
    4. echo Running…, sleep 10, echo Finished.: Dessa är bara exempel på kommandon för att simulera exekveringen av ett skript.

    446

    19) Skapa ett skript som letar efter och tar bort dubbletter i en textfil.

    Här är vårt linux-skript där vi tar bort dubbletter från en textfil.

    #!/bin/bash
    input_file=input.txt
    output_file=output.txt
    sortera $indatafil | uniq> $output_file
    echo Duplicerade rader har tagits bort.

    Förklaring:

    1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att skriptet ska tolkas med Bash-skalet.
    2. Variabeln input_file är inställd på namnet på indatafilen som innehåller dubbla rader (ändra detta till ditt faktiska indatafilnamn).
    3. Variabeln output_file är inställd på namnet på utdatafilen där dubbletterna kommer att tas bort (ändra detta till önskat utdatafilnamn).
    4. Skriptet använder sorteringskommandot för att sortera raderna i inmatningsfilen. Sortering av raderna säkerställer att duplicerade rader grupperas tillsammans.
    5. De sorterade raderna skickas sedan genom kommandot uniq, som tar bort på varandra följande dubbletter. Utdata från denna process omdirigeras till utdatafilen.
    6. Efter att dubletterna har tagits bort skrivs ett framgångsmeddelande ut i skriptet.
    dubblettlinje borttagning

    dubblettlinje borttagning

    Här använder vi ` katt ` för att visa texten i textfilen.

    20) Skriv ett skript som genererar ett säkert slumpmässigt lösenord.

    Här är vårt skript för att skapa ett säkert slumpmässigt lösenord.

    #!/bin/bash
    # Funktion för att generera ett slumpmässigt lösenord
    generera lösenord() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Anropa funktionen och lagra det genererade lösenordet
    lösenord=$(generera_lösenord)
    echo Genererat lösenord: $password

    Notera: Användaren kan därför ändra längden på lösenordet genom att ersätta siffran '12'.

    Förklaring:

    1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att det ska tolkas med Bash-skalet.
    2. Generera_lösenord-funktionen är definierad för att generera ett slumpmässigt lösenord. Så här fungerar det:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 bryter de filtrerade slumpmässiga data i rader med bredd 12 tecken vardera.
      • head -n 1 väljer den första raden, vilket ger oss en slumpmässig sekvens av tecken med längden 12.
    3. Lösenordsvariabeln tilldelas resultatet av anrop av funktionen generera_lösenord.
    4. Slutligen visas det genererade lösenordet med hjälp av eko.

    448

    21) Skriv ett skalskript som beräknar den totala storleken på alla filer i en katalog.

    Här är ett skalskript för att beräkna den totala storleken på alla filer i en katalog.

    #!/bin/bash
    katalog=/sökväg/till/din/katalog
    total_size=$(du -csh $katalog | grep totalt | awk '{print $1}')
    echo Total storlek på filer i $katalogen: $total_size

    Förklaring:

    1. Skriptet börjar med #!/bin/bash shebang, vilket indikerar att det ska tolkas med Bash-skalet.
    2. Katalogvariabeln är inställd på sökvägen till den katalog som du vill beräkna den totala filstorleken för. Ersätt /sökväg/till/din/katalog med den faktiska sökvägen.
    3. Kommandot du används för att uppskatta filutrymmesanvändning. Alternativen som används är:
      • -c: Producera en totalsumma.
      • -s: Visa endast den totala storleken på den angivna katalogen.
      • -h: Utskriftsstorlekar i ett läsbart format (t.ex. KB, MB, GB).
    4. Utdata från du skickas till grep total för att filtrera bort raden som innehåller den totala storleken.
    5. awk '{print $1}' används för att extrahera det första fältet (total storlek) från raden.
    6. Den beräknade totala storleken lagras i variabeln total_size.
    7. Slutligen visar skriptet den totala storleken med hjälp av eko.
    Total storlek på filer

    Total storlek på filer

    Här använde vi ` pwd ` kommando för att se den aktuella katalogsökvägen.

    22) Förklara skillnaden mellan if- och elif-satser i skalskript.

    Funktion `om` Staiftement `elif` uttalande
    Syfte Förklara skillnaden mellan if- och elif-satser i skalskript. Tillhandahåller alternativa villkor för att kontrollera när det initiala om-villkoret är falskt.
    användande Används för det ursprungliga skicket. Används efter initialt skick för att kontrollera ytterligare villkor.
    antal block Kan bara ha ett om block. Kan ha flera elif-block, men bara ett annat block (valfritt).
    Avrättning Kör kodblocket som är associerat med if-satsen om villkoret är sant. Om villkoret är falskt exekveras det andra blocket (om det finns) (valfritt). Kontrollerar varje elif-tillstånd i ordning. Om ett elif-villkor är sant, exekveras motsvarande kodblock och skriptet avslutar hela det villkorliga blocket. Om inget av elif-villkoren är sant, exekveras else-blocket (om det finns).
    Kapslade strukturer Kan kapslas i andra if-, elif- eller else-block. Kan inte kapslas i ett annat elif-block, men kan användas i ett if eller else-block.

    Låt oss förstå det med ett exempel.

    #!/bin/bash
    nummer=5
    if [ $nummer -gt 10 ]; sedan
    echo $number är större än 10
    annan
    echo $number är inte större än 10
    vara
    eko ——–
    if [ $nummer -gt 10 ]; sedan
    echo $number är större än 10
    elif [ $number -eq 10 ]; sedan
    echo $nummer är lika med 10
    annan
    echo $number är mindre än 10
    vara

    Förklaring:

    I det här exemplet kontrollerar det första if-blocket om talet är större än 10. Om inte, skrivs ett meddelande ut som indikerar att talet inte är större än 10. Det andra blocket med elif-satser kontrollerar flera villkor sekventiellt tills ett av dem är sant. I det här fallet, eftersom värdet på nummer är 5, blir utdata:

    if_elif skillnad

    if_elif skillnad

    23) Hur använder du en while-loop för att upprepade gånger utföra kommandon?

    En while-loop används i skalskript för att upprepade gånger exekvera en uppsättning kommandon så länge som ett angivet villkor är sant. Slingan fortsätter att utföra kommandona tills villkoret blir falskt.

    Här är den grundläggande syntaxen för en while-loop:

    while [villkor]; do
    # Kommandon som ska köras
    Gjort

    Förklaring:

    1. `while`-loopen börjar med nyckelordet `while` följt av ett villkor inom hakparenteser `[ ]`.
    2. Slingans kropp, som innehåller de kommandon som ska köras, är innesluten av nyckelorden 'do' och 'done'.
    3. Slingan kontrollerar först tillståndet. Om villkoret är sant, exekveras kommandona i loopkroppen. Efter att loopkroppen har körts kontrolleras villkoret igen, och processen upprepas tills villkoret blir falskt.

    Exempel: Om vi ​​vill skriva ut nummer från 1 till 5

    #!/bin/bash
    räknare=1
    medan [ $counter -le 5 ]; do
    echo Number: $counter
    räknare=$((räknare + 1))
    Gjort

    Förklaring:

    • Räknarvariabeln är inställd på 1.
    • While-slingan kontrollerar om värdet på räknaren är mindre än eller lika med 5. Så länge detta villkor är sant, fortsätter loopen att exekvera.
    • Inuti slingan skrivs det aktuella värdet av räknaren ut med hjälp av eko.
    • Räknaren ökas med 1 med uttrycket $((räknare + 1)).
    medan loop

    medan loop

    24) Skapa ett skalskript som hittar och listar alla tomma filer i en katalog.

    Skalskript som du kan använda för att hitta och lista alla tomma filer i en katalog med kommandona `find` och `stat`:

    #!/bin/bash
    katalog=$1″
    if [ -z $katalog ]; sedan
    echo Användning: $0
    utgång 1
    vara

    om [ ! -d $katalog ]; sedan
    echo Error: '$directory' är inte en giltig katalog.
    utgång 1
    vara
    echo Tomma filer i $katalogen:
    hitta $katalog -typ f -tom

    Förklaring:

    1. ` #!/bin/bash `: Detta kallas en shebang, och det säger åt operativsystemet att använda Bash-skalet för att tolka och köra skriptet.
    2. ` katalog=$1″ `: Denna rad tilldelar det första kommandoradsargumentet (betecknat med $1) till variabeln ` katalog `.
    3. ` if [ -z $katalog ]; sedan `: Den här raden startar en if-sats som kontrollerar om ` katalog ` variabeln är tom (-z testar för en tom sträng).
    4. ` echo Användning: $0 `: Om katalogen är tom, skriver den här raden ut ett användningsmeddelande, där ` $0 ` representerar skriptets namn.
    5. ` utgång 1 `: Den här raden avslutar skriptet med exitkoden ` 1 `, vilket indikerar ett fel.
    6. ` vara `: Den här raden markerar slutet på ` om ` uttalande.
    7. ` om [ ! -d $katalog ]; sedan `: Detta startar en annan if-sats för att kontrollera om den tillhandahållna katalogen finns (` -d ` testar för en katalog).
    8. ` echo Error: '$directory' är inte en giltig katalog. `: Om den angivna katalogen inte finns, skrivs ett felmeddelande ut på den här raden.
    9. ` utgång 1 `: Avslutar skriptet med exitkoden ` 1 `.
    10. ` vara `: Markerar slutet på den andra ` om` påstående.
    11. ` echo Tomma filer i $katalogen: `: Om allt är giltigt hittills skrivs ett meddelande ut på den här raden som indikerar att skriptet kommer att lista tomma filer i den angivna katalogen.
    12. ` hitta $katalog -typ f -tom `: Den här raden använder ` hitta ` kommando för att söka efter tomma filer (` -tömma `) av typen vanliga filer (` -typ f `) i den angivna katalogen. Den listar sedan dessa tomma filer.
    Hitta tomma filer

    Hitta tomma filer

    Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/

    25) Vad är syftet med läskommandot i skalskript?

    Läskommandot i skalskriptning låter skriptet be dig om information. Det är som när en dator ställer en fråga till dig och väntar på ditt svar. Detta är användbart för skript som kräver att du skriver något eller när skriptet behöver arbeta med information från filer. Läskommandot hjälper skriptet att stanna och vänta på vad du skriver, och sedan kan det använda den informationen för att göra fler saker i skriptet.

    Syntax för läskommandot:

    read variable_name>

    Exempel : Om vi ​​vill ta namn som en input från användaren för att skriva ut det.

    #!/bin/bash
    echo Vänligen ange ditt namn:
    läsa namn
    echo Hej, $name!

    453

    läs nam

    Sammanfattningsvis används läskommandot för att fånga användarindata eller data från filer i skalskript, vilket gör skripten mer interaktiva och mångsidiga.

    26) Skriv ett skalskript som konverterar alla filnamn i en katalog till gemener.

    Här är ett skalskript som konverterar alla filnamn i en katalog till gemener.

    #!/bin/bash
    katalog=$1″
    if [ -z $katalog ]; sedan
    echo Användning: $0
    utgång 1
    vara

    om [ ! -d $katalog ]; sedan

    echo Error: '$directory' är inte en giltig katalog.
    utgång 1
    vara

    cd $katalog || utgång 1

    för fil i *; do
    if [ -f $fil ]; sedan
    newname=$(eko $fil | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    vara
    Gjort

    Förklaring:

    1. #!/bin/bash : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
    2. katalog=$1″ : Den här raden tilldelar det första kommandoradsargumentet till variabelkatalogen.
    3. if [ -z $katalog ]; sedan : Den här raden kontrollerar om katalogvariabeln är tom (inget argument anges när skriptet körs).
    4. echo Användning: $0 : Om katalogen är tom skriver den här raden ut ett användningsmeddelande med skriptets namn ($0).
    5. utgång 1 : Den här raden avslutar skriptet med utgångskoden 1, vilket indikerar att ett fel har inträffat.
    6. f i: Detta markerar slutet på den första if-satsen.
    7. om [ ! -d $katalog ]; sedan : Den här raden kontrollerar om den angivna katalogen inte finns (-d testar för en katalog).
    8. echo Error: '$directory' är inte en giltig katalog. : Om den angivna katalogen inte finns skrivs ett felmeddelande ut på den här raden.
    9. utgång 1 : Avslutar skriptet med utgångskoden 1.
    10. vara : Markerar slutet av den andra if-satsen.
    11. cd $katalog || utgång 1 : Ändrar den aktuella arbetskatalogen till den angivna katalogen. Om katalogändringen misslyckas (t.ex. en icke-existerande katalog), avslutas skriptet med en felkod.
    12. för fil i *; do: jag för fil i *; do: initierar en loop som itererar över alla objekt i den aktuella katalogen (* matchar alla filnamn).
    13. if [ -f $fil ]; sedan : Kontrollerar om det aktuella loopiterationsobjektet är en vanlig fil (-f testar för en vanlig fil).
    14. newname=$(eko $fil | tr 'A-Z' 'a-z') : Konverterar det aktuella filnamnet ($file) till gemener med kommandot tr och lagrar resultatet i variabeln newname.
    15. [ $file != $newname ] && mv $file $newname : Jämför det ursprungliga filnamnet med det nya filnamnet med gemener. Om de är olika byter den namn på filen med kommandot mv.
    16. vara : Markerar slutet på den inre if-satsen.
    17. Gjort : Markerar slutet av slingan.

    454

    Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/test

    27) Hur kan du använda aritmetiska operationer i ett skalskript?

    Aritmetiska operationer kan utföras inom ett skalskript med olika inbyggda metoder. Skalet tillhandahåller mekanismer för enkla aritmetiska beräkningar med aritmetisk expansion som:

    1. Aritmetisk expansion ($((…)))
    2. Använder kommandot expr
    3. Använder let Command

    Här är vårt Shell-skript som förklarar alla tre metoderna för aritmetiska operationer.

    #!/bin/bash
    num1=10
    num2=5

    #Aritmetisk expansion ($((…)))

    resultat=$((nummer1 + nummer2))
    echo Summa: $result

    #Använda kommandot expr

    summa=$(expr $num1 + $num2)
    echo Summa: $summa

    #Använda let Command

    låt summa = num1 + num2
    echo Summa: $summa

    Förklaring:

    1. `#!/bin/bash` : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
    2. `num1=10` och ` num2=5` : Dessa rader tilldelar värdena 10 och 5 till variablerna ` nummer1 ` och ` nummer2 `, respektive.
    3. `#Aritmetisk expansion ($((...)))` : Detta är en kommentar som indikerar början av avsnittet som visar aritmetisk expansion.
    4. `resultat=$((tal1 + nummer2))` : Den här raden använder aritmetisk expansion för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` resultat ` variabel.
    5. `echo Summa: $resultat` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` resultat ` variabel.
    6. `#Använder kommandot expr` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` expr ` kommando för aritmetiska operationer.
    7. `summa=$(expr $num1 + $num2)` : Den här raden använder ` expr ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` belopp ` variabel. Observera att ` expr ` kommando kräver mellanslag runt operatörerna.
    8. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
    9. `#Använda let Command` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` låta ` kommando för aritmetiska operationer.
    10. 'låt summa = num1 + num2″'. : Den här raden använder ` låta ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och tilldelar resultatet till ` belopp ` variabel. Den ` låta ` kommando kräver inte mellanslag runt operatorerna.
    11. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
    aritmetisk

    aritmetisk

    28) Skapa ett skript som kontrollerar om en nätverksvärd är nåbar.

    Här är ett enkelt skalskript som använder kommandot ping för att kontrollera om en nätverksvärd är tillgänglig:

    #!/bin/bash
    värd=$1″
    if [ -z $värd ]; sedan
    echo Användning: $0
    utgång 1
    vara
    ping -c 4 $host

    om [$? -eq 0]; sedan
    echo $host är tillgänglig.
    annan
    echo $host är inte tillgänglig.
    vara

    Förklaring:

    1. Den tar ett värdnamn eller IP-adress som argument och kontrollerar om argumentet tillhandahålls.
    2. Om inget argument tillhandahålls, visar det ett användningsmeddelande och avslutas.
    3. Den använder kommandot ping med alternativet -c 4 för att skicka fyra ICMP-ekoförfrågningar till den angivna värden.
    4. Efter att ping-kommandot körts kontrollerar det utgångsstatusen ($?). Om utgångsstatusen är 0 betyder det att värden är nåbar och skriptet skriver ut ett framgångsmeddelande. Annars skrivs ett felmeddelande ut.

    456

    Notera : Vi måste ange ett värdnamn som ett argument när vi kör skriptet. Här har vi använt google.com

    29) Skriv ett skalskript för att hitta det bästa elementet i en array:

    Här är ett skalskript för att hitta det bästa elementet i en array.

    #!/bin/bash
    # Deklarera en array
    array=(3 56 24 89 67)

    # Initiera en variabel för att lagra maxvärdet, börja med det första elementet

    max=${array[0]}

    # Iterera genom arrayen

    för num i ${array[@]}; do

    # Jämför varje element med nuvarande maximum

    if ((antal> max)); sedan
    max=$antal
    vara
    Gjort

    # Skriv ut maxvärdet

    echo Det maximala elementet i arrayen är: $max

    Förklaring:

    1. ` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.
    2. ` array=(3 56 24 89 67) `: Arrayen deklareras och initieras med värden.
    3. ` max=${array[0]} `: `max` initieras med det första elementet i arrayen.
    4. ` för num i ${array[@]}; do `: En `for` loop används för att iterera genom elementen i arrayen.
    5. ` if ((antal> max)); sedan `: En `if`-sats kontrollerar om det aktuella elementet `num` är större än det nuvarande maximala `max`.
    6. ` max=$num`: Om`num ` är större än `max`, `max` uppdateras med värdet num.
    7. ` Gjort `: `För`-slingan är stängd.
    8. ` echo Det maximala elementet i arrayen är: $max `: Slutligen skriver skriptet ut det maximala värdet som finns i arrayen.
    461

    största antal

    30) Skriv ett skript för att beräkna summan av element i en matris.

    #!/bin/bash

    # Deklarera en array

    array=(1 65 22 19 94)

    # Initiera en variabel för att lagra summan

    summa=0

    # Iterera genom arrayen och lägg till varje element till summan

    för num i ${array[@]}; do
    am=$((am + am))
    Gjort

    # Skriv ut summan

    echo Summan av element i arrayen är: $summa

    Förklaring:

    ` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.

    ` array=(1 65 22 19 94) `: Arrayen deklareras och initieras med värden.

    ` summa=0 `:` belopp ` initieras till noll för att hålla summan av element.

    ` för num i ${array[@]}; do `: A ` för ` loop används för att iterera genom elementen i arrayen.

    ` am=$((am + am)) `: Inuti slingan, varje element ` på ett ` läggs till i ` belopp ` variabel.

    ` Gjort `: Den ` för `-slingan är stängd.

    `echo Summan av element i arrayen är: $summa`: Slutligen skriver skriptet ut summan av alla element i arrayen.

    462

    Summan av element

    Lär dig mer om Shell-skript

    Slutsats

    Vi alla nördar vet att skalskript är mycket användbart för att öka arbetsproduktiviteten och samtidigt spara tid. Så, i den här artikeln har vi täckt 30 mycket användbara och mest luriga skalskriptexempel . Vi hoppas att den här kompletta guiden om skalskriptexempel hjälper dig att förstå allt om skalskripten.



    ` representerar skriptets namn.
  5. ` utgång 1 `: Den här raden avslutar skriptet med exitkoden ` 1 `, vilket indikerar ett fel.
  6. ` vara `: Den här raden markerar slutet på ` om ` uttalande.
  7. ` om [ ! -d $katalog ]; sedan `: Detta startar en annan if-sats för att kontrollera om den tillhandahållna katalogen finns (` -d ` testar för en katalog).
  8. ` echo Error: '$directory' är inte en giltig katalog. `: Om den angivna katalogen inte finns, skrivs ett felmeddelande ut på den här raden.
  9. ` utgång 1 `: Avslutar skriptet med exitkoden ` 1 `.
  10. ` vara `: Markerar slutet på den andra ` om` påstående.
  11. ` echo Tomma filer i $katalogen: `: Om allt är giltigt hittills skrivs ett meddelande ut på den här raden som indikerar att skriptet kommer att lista tomma filer i den angivna katalogen.
  12. ` hitta $katalog -typ f -tom `: Den här raden använder ` hitta ` kommando för att söka efter tomma filer (` -tömma `) av typen vanliga filer (` -typ f `) i den angivna katalogen. Den listar sedan dessa tomma filer.
Hitta tomma filer

Hitta tomma filer

Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/

25) Vad är syftet med läskommandot i skalskript?

Läskommandot i skalskriptning låter skriptet be dig om information. Det är som när en dator ställer en fråga till dig och väntar på ditt svar. Detta är användbart för skript som kräver att du skriver något eller när skriptet behöver arbeta med information från filer. Läskommandot hjälper skriptet att stanna och vänta på vad du skriver, och sedan kan det använda den informationen för att göra fler saker i skriptet.

Syntax för läskommandot:

read variable_name>

Exempel : Om vi ​​vill ta namn som en input från användaren för att skriva ut det.

#!/bin/bash
echo Vänligen ange ditt namn:
läsa namn
echo Hej, $name!

453

läs nam

Sammanfattningsvis används läskommandot för att fånga användarindata eller data från filer i skalskript, vilket gör skripten mer interaktiva och mångsidiga.

26) Skriv ett skalskript som konverterar alla filnamn i en katalog till gemener.

Här är ett skalskript som konverterar alla filnamn i en katalog till gemener.

#!/bin/bash
katalog=″
if [ -z $katalog ]; sedan
echo Användning:

För alla Linux-distributioner är skalskriptet som en trollstav som automatiserar processen, sparar tid för användare och ökar produktiviteten. Denna handledning för ska skript kommer att introducera dig till 25 plus ska skriptexemplen.

Men innan vi går vidare till ämnet skalskript exempel, låt oss förstå skalskript och de faktiska användningsfallen för skalskript.

Vad är Shell Script?

Tja, skalet är en CLI ( kommandoradstolk ), som körs i ett textfönster där användare kan hantera och utföra skalkommandon. Å andra sidan, processen att skriva en uppsättning kommandon som ska köras på ett Linux-system. En fil som innehåller sådana instruktioner kallas ett bash-skript.

Användning av Shell-skript

Nedan följer några vanliga användningsområden för Shell Script:

  • Uppgiftsautomatisering – Den kan användas för att automatisera repetitiva uppgifter som regelbundna säkerhetskopieringar och programvaruinstallationsuppgifter.
  • Anpassning – Man kan använda skalskript för att designa sin kommandoradsmiljö och enkelt utföra sin uppgift enligt behov.
  • Filhantering - Skalskripten kan också användas för att hantera och manipulera filer och kataloger, som att flytta, kopiera, byta namn på eller ta bort filer.

Shell Script Exempel i Linux

1) Vad indikerar shebang (#!) i början av ett skalskript?

De shebang (#!) i början av ett skript indikerar tolken som ska användas för att köra skriptet. Det talar om för systemet vilket skal eller tolk som ska tolka skriptets kommandon.

Till exempel: Anta att vi har ett skript som heter myscript.sh skrivet i Bash-skalet:

shebang

shebang

I det här exemplet:

  • #!/bin/bash i början av skriptet indikerar att skriptet ska tolkas med Bash-skalet.
  • Ekokommandona används för att skriva ut meddelanden till terminalen.

2) Hur kör du ett skalskript från kommandoraden?

För att köra ett skalskript från kommandoraden måste vi följa dessa steg:

  • Se till att skriptfilen har körbara behörigheter med hjälp av chmod kommando :
chmod +x myscript.sh>
  • Kör skriptet med dess filnamn:
./myscript.sh>

Här måste du byta ut myscrtipt.sh med ditt manusnamn.

3) Skriv ett skalskript som skriver ut techcodeview.com till terminalen.

Skapa ett skriptnamn `myscript.sh` (vi använder ` därför att ` editor, du kan välja vilken editor som helst)

vim myscript.sh>

#!/bin/bash
# Detta skript skriver ut techcodeview.com till terminalen
echo techcodeview.com

Skriv namn

Skriv namn

Vi gör vårt skript körbart genom att använda `chmod +x` och kör sedan med `./myscipt.sh` och få vår önskade utdata techcodeview.com.

4) Förklara syftet med echo-kommandot i skalskript.

De eko kommando används för att visa text eller variabler på terminalen. Det används ofta för att skriva ut meddelanden, variabla värden och generera programutdata.

434

eko kommando

I det här exemplet har vi exekverat `echo` på terminal direkt, eftersom det fungerar på samma sätt i skalskriptet.

5) Hur kan du tilldela ett värde till en variabel i ett skalskript?

Variabler tilldelas värden med hjälp av tilldelningsoperatorn =.

Till exempel:

#!/bin/bash
# Tilldela ett värde till en variabel
namn=Jayesh
ålder=21
echo $name $age

Förklaring:

  • Namnvariabeln tilldelas värdet Jayesh.
  • Åldersvariabeln tilldelas värdet 21.
  • echo används för att skriva ut och `$name` `$age` används för att anropa värdet som lagras i variablerna.

435

6) Skriv ett skalskript som tar en användares namn som indata och hälsar dem välkomna.

Skapa ett skriptnamn `example.sh`.

#!/bin/bash
# Fråga användaren om deras namn
echo Vad heter du?
läs namn
# Hälsa användaren
echo Hej, $name! Trevligt att träffas.

Förklaring:

  • #!/bin/bash: Det här är shebang-linjen. Den säger åt systemet att använda Bash-tolken för att köra skriptet.
  • # Fråga användaren om deras namn: Det här är en kommentar. Det ger sammanhang om den kommande koden. Kommentarer ignoreras av tolken.
  • echo Vad heter du?: Echo-kommandot används för att visa texten med dubbla citattecken på terminalen.
  • read name: Read-kommandot väntar på att användaren matar in text och lagrar den i variabelnamnet.
  • echo Hej, $name! Trevligt att träffa dig.: Den här raden använder ekokommandot för att skriva ut ett hälsningsmeddelande som inkluderar värdet på namnvariabeln, som samlades in från användarens indata.

436

7) Hur lägger man till kommentarer till ett skalskript?

Kommentarer i skalskript används för att ge förklaringar eller sammanhang till koden. De ignoreras av tolken och är endast avsedda för människor som läser manuset. Du kan lägga till kommentarer med #-symbolen.

#!/bin/bash
# Det här är en kommentar som förklarar syftet med skriptet
echo gfg

8) Skapa ett skalskript som kontrollerar om en fil finns i den aktuella katalogen.

Här är ett skript som kontrollerar om en fil med namnet example.txt finns i den aktuella katalogen:

#!/bin/bash
file=example.txt
# Kontrollera om filen finns
if [ -e $fil ]; sedan
echo Filen finns: $file
annan
echo Filen hittades inte: $file
vara

Förklaring:

  1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
  2. file=example.txt: Den här raden definierar variabelfilen och tilldelar den värdet example.txt. Du kan ersätta detta med namnet på filen du vill söka efter.
  3. if [ -e $fil ]; then: Den här raden startar en if-sats. Villkoret [ -e $file ] kontrollerar om filen som anges av värdet på filvariabeln existerar. Flaggan -e används för att kontrollera om filen finns.
  4. echo File exists: $file: Om villkoret är sant (dvs. filen existerar), skrivs ett meddelande ut på den här raden som indikerar att filen existerar, tillsammans med filens namn.
  5. else: Om villkoret är falskt (dvs. filen existerar inte), kör skriptet koden under else-grenen.
  6. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades, tillsammans med filens namn.
  7. fi: Denna rad markerar slutet på if-satsen.
Hittar fil

Hittar fil

9) Vad är skillnaden mellan enkla citattecken (') och dubbla citattecken () i skalskript?

Enkla citattecken (') och dubbla citattecken () används för att omsluta strängar i skalskript, men de har olika beteenden:

  • Enstaka citattecken: Allt mellan enstaka citattecken behandlas som en bokstavlig sträng. Variabelnamn och de flesta specialtecken utökas inte.
  • Dubbla citattecken: Variabler och vissa specialtecken inom dubbla citattecken utökas. Innehållet är föremål för variabel substitution och kommandosubstitution.

#!/bin/bash

abcd=Hej
echo '$abcd' # Utdata: $abcd
echo $abcd # Utgång: Hej

10) Hur kan du använda kommandoradsargument i ett skalskript?

Kommandoradsargument är värden som ges till ett skript när det körs. De kan nås i skriptet med hjälp av speciella variabler som $1, $2, etc., där $1 representerar det första argumentet, $2 representerar det andra argumentet, och så vidare.

Till exempel: Om vårt skriptnamn i `example.sh`

#!/bin/bash

echo Skriptnamn: $0
echo Första argumentet: $1
echo Andra argumentet: $2

Om vi ​​kör skriptet med `.example.sh hello_1 hello_2` kommer det att mata ut:

cli argument

cli argument

11) Hur använder du for-slingan för att iterera genom en lista med värden?

Skapa ett skriptnamn `example.sh`.

#!/bin/bash

frukt=(äpplebanan körsbärsdatum)
för frukt i ${frukter[@]}; do
echo Aktuell frukt: $fruit
Gjort

Förklaring:

`fruits=`-raden skapar en array som heter frukter med fyra element: äpple, banan, körsbär och datum.

  • för frukt i ${frukter[@]}; do: Den här raden startar en for-loop. Så här betyder varje del:
  • för frukt: Detta deklarerar en loopvariabel som kallas frukt. I varje iteration av loopen kommer frukt att hålla värdet på det aktuella elementet från fruktmatrisen.
  • ${fruits[@]}: Detta är en array-expansion som tar alla element från frukt-arrayen. ${…}-syntaxen säkerställer att varje element behandlas som ett separat objekt.
  • do: Detta nyckelord markerar början av loopkroppen.
  • echo Current fruit: $fruit: Inuti slingan använder den här raden echo-kommandot för att visa det aktuella värdet för loopvariabeln fruit. Den skriver ut ett meddelande som Aktuell frukt: äpple för varje frukt i arrayen.
  • done: Det här nyckelordet markerar slutet på loopkroppen. Det talar om för skriptet att slingan har avslutats.
för slinga

för slinga

12) Skriv ett skalskript som beräknar summan av heltal från 1 till N med hjälp av en slinga.

Skapa ett skriptnamn `example.sh`.

#!/bin/bash

echo Ange ett nummer (N):
läs N
summa=0
för ((i=l; i<=$N; i++)); do
summa=$((summa + i))
Gjort
echo Summan av heltal från 1 till $N är: $summa

Förklaring:
Skriptet börjar med att be dig ange ett nummer (N) med hjälp av read. Detta nummer avgör hur många gånger slingan körs.

  1. Variabelsumman initieras till 0. Denna variabel kommer att hålla reda på summan av heltal.
  2. For-slingan börjar med for (( i=1; i<=$N; i++ )). Denna loopstruktur används för att upprepa en uppsättning åtgärder ett visst antal gånger, i det här fallet, från 1 till värdet av N.
  3. Inuti slingan händer dessa saker:
    • i=1 sätter loopvariabeln i till 1 i början av varje iteration.
    • Slingvillkoret i<=$N kontrollerar om i fortfarande är mindre än eller lika med det givna talet N.
    • Om villkoret är sant, exekveras loopkroppen.
    • sum=$((sum + i)) beräknar det nya värdet av summan genom att lägga till det nuvarande värdet av i. Detta summerar heltal från 1 till det nuvarande i-värdet.
  4. Efter varje iteration ökar i++ värdet på i med 1.
  5. Slingan fortsätter att köras tills villkoret i<=$N blir falskt (när i blir större än N).
  6. När loopen är klar visar skriptet summan av heltal från 1 till det angivna talet N.

439

13) Skapa ett skript som söker efter ett specifikt ord i en fil och räknar dess förekomster.

Skapa ett skriptnamn `word_count.sh`

#!/bin/bash

echo Ange ordet att söka efter:
läs target_word
echo Ange filnamnet:
läs filnamn
count=$(grep -o -w $target_word $filnamn | wc -l)
echo Ordet '$target_word' visas $count gånger i '$filnamn'.

Förklaring:

  • echo Ange ordet att söka efter:: Denna rad visar ett meddelande som ber användaren att ange ett ord som de vill söka efter i en fil.
  • read target_word: Denna rad läser indata från användaren och lagrar den i en variabel som heter target_word.
  • echo Ange filnamnet:: Denna rad visar ett meddelande som ber användaren att ange namnet på filen de vill söka i.
  • läs filnamn: Denna rad läser indata från användaren och lagrar den i en variabel med namnet filnamn.
  • count=$(grep -o -w $målord $filnamn | wc -l): Den här raden utför skriptets huvudsakliga arbete. Låt oss bryta ner det ytterligare:
    • grep -o -w $target_word $filnamn: Denna del av kommandot söker efter förekomster av target_word i det angivna filnamnet. Alternativen -o och -w säkerställer att endast helordsmatchningar räknas.
    • |: Detta är ett rör som tar utdata från föregående kommando och skickar det som indata till nästa kommando.
    • wc -l: Den här delen av kommandot använder kommandot wc för att räkna antalet rader i inmatningen. Alternativet -l räknar specifikt raderna.
    • Hela kommandot beräknar antalet förekomster av target_word i filen och tilldelar det antalet till variabeln count

441

14) Förklara skillnaderna mellan standardutgång (stdout) och standardfel (stderr).

Huvudskillnaden mellan standardutgång (stdout) och standardfel (stderr) är följande:

  • Standardutgång (stdout): Detta är standardutgångsströmmen dit ett kommandos vanliga utdata går. Det visas på terminalen som standard. Du kan omdirigera den till en fil med>.
  • Standardfel (stderr): Detta är utdataströmmen för felmeddelanden och varningar. Det visas också på terminalen som standard. Du kan omdirigera den till en fil med 2>.

15) Förklara begreppet villkorliga uttalanden i skalskript.

Villkorliga uttalanden i skalskript låter oss fatta beslut och kontrollera flödet av vårt manus baserat på vissa förutsättningar. De gör det möjligt för vårt skript att köra olika uppsättningar av kommandon beroende på om ett visst villkor är sant eller falskt. De primära villkorssatserna i skalskript är if-satsen, elif-satsen (valfritt) och else-satsen (valfritt).

Här är den grundläggande strukturen för ett villkorligt uttalande i skalskript:

if [villkor]; sedan
# Kommandon att köra om villkoret är sant
elif [ another_condition ]; sedan
# Kommandon att köra om another_condition är sant (valfritt)
annan
# Kommandon att köra om inget av villkoren är sant (valfritt)
vara

Förklaring:

  • [ condition ] = Kommando som utvärderar villkoret och returnerar en sann (0) eller falsk (icke-noll) utgångsstatus.
  • then = Det är ett nyckelord som indikerar att kommandona efter det kommer att utföras om villkoret utvärderas till sant.
  • elif = (förkortning av else if) Det är ett avsnitt som låter oss specificera ytterligare villkor att kontrollera.
  • else = det är en sektion som innehåller kommandon som kommer att köras om inget av villkoren är sant.
  • fi = Det är ett nyckelord som markerar slutet på det villkorliga blocket.

16) Hur läser man rader från en fil i ett skalskript?

Till läsa rader från en fil i ett skalskript kan vi använda olika metoder, men ett vanligt tillvägagångssätt är att använda en while-loop i kombination med läskommandot. Så här kan vi göra det:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Kontrollera om filen finns
if [ -e $fil ]; sedan
medan IFS= read -r line; do
echo Line read: $line
# Lägg till din bearbetningslogik här
klar <$fil
annan
echo Filen hittades inte: $file
vara

Förklaring:

  1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
  2. file=/home/jayeshkumar/jayesh.txt: Den här raden definierar variabelfilen och tilldelar den fullständiga sökvägen till filen jayesh.txt i katalogen /home/jayeshkumar. Ändra den här sökvägen så att den matchar den faktiska sökvägen för filen du vill läsa.
  3. if [ -e $fil ]; then: Den här raden startar en if-sats. Den kontrollerar om filen som anges av variabeln $file existerar. Flaggan -e kontrollerar att filen finns.
  4. medan IFS= read -r line; do: Denna rad initierar en while-loop som läser rader från filen.
    • IFS=: IFS (Internal Field Separator) är satt till ett tomt värde för att bevara inledande och efterföljande mellanslag.
    • read -r line: Detta läser den aktuella raden från filen och lagrar den i variabelraden.
  5. echo Line read: $line: Denna rad skriver ut innehållet i raden som lästes från filen. Variabeln $line innehåller den aktuella radens innehåll.
  6. # Lägg till din bearbetningslogik här: Detta är en platshållarkommentar där du kan lägga till din egen logik för att bearbeta varje rad. Du kan till exempel analysera raden, extrahera information eller utföra specifika åtgärder baserat på innehållet.
  7. done <$file: Detta markerar slutet på while-loopen. < $filen omdirigerar innehållet i filen som ska läsas av loopen.
  8. else: Om filen inte finns (villkoret i if-satsen är falskt), exekverar skriptet koden under else-grenen.
  9. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades.
  10. fi: Denna rad markerar slutet på if-satsen.
läsa filen

läsa filen

Här använde vi ` pwd ` kommando för att hämta sökvägen till aktuell katalog.

17) Skriv en funktion i ett skalskript som beräknar fakulteten för ett givet tal.

Här är manusetberäkna faktorvärdetav ett givet nummer.

#!/bin/bash
# Definiera en funktion för att beräkna faktorial
beräkna_faktor() {
num=$1
fakta=1
för ((i=1; i<=tal; i++)); do
fakta=$((faktum * i))
Gjort
echo $fakta
}
# Be användaren att ange ett nummer
echo Ange ett nummer:
läs input_num
# Anropa calculate_factorial-funktionen med inmatningsnumret
factorial_result=$(calculate_fatorial $input_num)
# Visa det ursprungliga resultatet
echo Factorial av $input_num är: $factorial_result

Förklaring:

  1. Skriptet börjar med shebang-raden #!/bin/bash för att specificera tolken.
  2. calculate_fatorial() definieras som en funktion. Det krävs ett argument, num, vilket är talet för vilket faktorvärdet måste beräknas.
  3. Inuti funktionen initieras fakta till 1. Denna variabel lagrar det faktoriella resultatet.
  4. For-slingan itererar från 1 till det givna numret (num). I varje iteration multiplicerar den det aktuella värdet av fakta med loopindexet i.
  5. När slingan är klar innehåller faktavariabeln den beräknade faktorialen.
  6. Skriptet uppmanar användaren att ange ett nummer med läs.
  7. Funktionen calculate_factorial anropas med det av användaren angivna numret, och resultatet lagras i variabeln factorial_result.
  8. Slutligen visar skriptet det beräknade faktoriella resultatet.
Faktoriell

Faktoriell

18) Hur hanterar du signaler som Ctrl+C i ett skalskript?

I ett skalskript kan du hantera signaler som Ctrl+C (även känd som SIGINT) med kommandot trap. Ctrl+C genererar en SIGINT-signal när användaren trycker på den för att avbryta det pågående skriptet eller programmet. Genom att använda trap-kommandot kan du specificera åtgärder som ska vidtas när en viss signal tas emot. Så här hanterar du signaler som Ctrl+C i ett skalskript:

#!/bin/bash
städa() {
echo Skriptet avbröts. Rensar …
# Lägg till dina saneringsåtgärder här
utgång 1
}
# Sätt upp en fälla för att anropa rensningsfunktionen när Ctrl+C (SIGINT) tas emot
fällsanering SIGINT
# Resten av ditt manus
eko kör...
sova 10
eko Avslutad.

Att hantera signaler är viktigt för att göra skript robusta och för att säkerställa att de hanterar oväntade avbrott på ett elegant sätt. Du kan anpassa rensningsfunktionen för att matcha dina specifika behov, som att stänga filer, stoppa processer eller logga information innan skriptet avslutas.

Förklaring:

  1. #!/bin/bash: Denna shebang-rad specificerar tolken som ska användas för att köra skriptet.
  2. cleanup() { … }: Detta definierar en funktion som heter cleanup. Inuti den här funktionen kan du inkludera alla åtgärder som behöver utföras när skriptet avbryts, som att stänga filer, släppa resurser eller utföra andra rensningsuppgifter.
  3. trap cleanup SIGINT: Trappkommandot används för att ställa in en signalhanterare. I det här fallet specificerar den att när SIGINT-signalen (Ctrl+C) tas emot, ska rensningsfunktionen utföras.
  4. echo Running…, sleep 10, echo Finished.: Dessa är bara exempel på kommandon för att simulera exekveringen av ett skript.

446

19) Skapa ett skript som letar efter och tar bort dubbletter i en textfil.

Här är vårt linux-skript där vi tar bort dubbletter från en textfil.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sortera $indatafil | uniq> $output_file
echo Duplicerade rader har tagits bort.

Förklaring:

  1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att skriptet ska tolkas med Bash-skalet.
  2. Variabeln input_file är inställd på namnet på indatafilen som innehåller dubbla rader (ändra detta till ditt faktiska indatafilnamn).
  3. Variabeln output_file är inställd på namnet på utdatafilen där dubbletterna kommer att tas bort (ändra detta till önskat utdatafilnamn).
  4. Skriptet använder sorteringskommandot för att sortera raderna i inmatningsfilen. Sortering av raderna säkerställer att duplicerade rader grupperas tillsammans.
  5. De sorterade raderna skickas sedan genom kommandot uniq, som tar bort på varandra följande dubbletter. Utdata från denna process omdirigeras till utdatafilen.
  6. Efter att dubletterna har tagits bort skrivs ett framgångsmeddelande ut i skriptet.
dubblettlinje borttagning

dubblettlinje borttagning

Här använder vi ` katt ` för att visa texten i textfilen.

20) Skriv ett skript som genererar ett säkert slumpmässigt lösenord.

Här är vårt skript för att skapa ett säkert slumpmässigt lösenord.

#!/bin/bash
# Funktion för att generera ett slumpmässigt lösenord
generera lösenord() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Anropa funktionen och lagra det genererade lösenordet
lösenord=$(generera_lösenord)
echo Genererat lösenord: $password

Notera: Användaren kan därför ändra längden på lösenordet genom att ersätta siffran '12'.

Förklaring:

  1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att det ska tolkas med Bash-skalet.
  2. Generera_lösenord-funktionen är definierad för att generera ett slumpmässigt lösenord. Så här fungerar det:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 bryter de filtrerade slumpmässiga data i rader med bredd 12 tecken vardera.
    • head -n 1 väljer den första raden, vilket ger oss en slumpmässig sekvens av tecken med längden 12.
  3. Lösenordsvariabeln tilldelas resultatet av anrop av funktionen generera_lösenord.
  4. Slutligen visas det genererade lösenordet med hjälp av eko.

448

21) Skriv ett skalskript som beräknar den totala storleken på alla filer i en katalog.

Här är ett skalskript för att beräkna den totala storleken på alla filer i en katalog.

#!/bin/bash
katalog=/sökväg/till/din/katalog
total_size=$(du -csh $katalog | grep totalt | awk '{print $1}')
echo Total storlek på filer i $katalogen: $total_size

Förklaring:

  1. Skriptet börjar med #!/bin/bash shebang, vilket indikerar att det ska tolkas med Bash-skalet.
  2. Katalogvariabeln är inställd på sökvägen till den katalog som du vill beräkna den totala filstorleken för. Ersätt /sökväg/till/din/katalog med den faktiska sökvägen.
  3. Kommandot du används för att uppskatta filutrymmesanvändning. Alternativen som används är:
    • -c: Producera en totalsumma.
    • -s: Visa endast den totala storleken på den angivna katalogen.
    • -h: Utskriftsstorlekar i ett läsbart format (t.ex. KB, MB, GB).
  4. Utdata från du skickas till grep total för att filtrera bort raden som innehåller den totala storleken.
  5. awk '{print $1}' används för att extrahera det första fältet (total storlek) från raden.
  6. Den beräknade totala storleken lagras i variabeln total_size.
  7. Slutligen visar skriptet den totala storleken med hjälp av eko.
Total storlek på filer

Total storlek på filer

Här använde vi ` pwd ` kommando för att se den aktuella katalogsökvägen.

22) Förklara skillnaden mellan if- och elif-satser i skalskript.

Funktion `om` Staiftement `elif` uttalande
Syfte Förklara skillnaden mellan if- och elif-satser i skalskript. Tillhandahåller alternativa villkor för att kontrollera när det initiala om-villkoret är falskt.
användande Används för det ursprungliga skicket. Används efter initialt skick för att kontrollera ytterligare villkor.
antal block Kan bara ha ett om block. Kan ha flera elif-block, men bara ett annat block (valfritt).
Avrättning Kör kodblocket som är associerat med if-satsen om villkoret är sant. Om villkoret är falskt exekveras det andra blocket (om det finns) (valfritt). Kontrollerar varje elif-tillstånd i ordning. Om ett elif-villkor är sant, exekveras motsvarande kodblock och skriptet avslutar hela det villkorliga blocket. Om inget av elif-villkoren är sant, exekveras else-blocket (om det finns).
Kapslade strukturer Kan kapslas i andra if-, elif- eller else-block. Kan inte kapslas i ett annat elif-block, men kan användas i ett if eller else-block.

Låt oss förstå det med ett exempel.

#!/bin/bash
nummer=5
if [ $nummer -gt 10 ]; sedan
echo $number är större än 10
annan
echo $number är inte större än 10
vara
eko ——–
if [ $nummer -gt 10 ]; sedan
echo $number är större än 10
elif [ $number -eq 10 ]; sedan
echo $nummer är lika med 10
annan
echo $number är mindre än 10
vara

Förklaring:

I det här exemplet kontrollerar det första if-blocket om talet är större än 10. Om inte, skrivs ett meddelande ut som indikerar att talet inte är större än 10. Det andra blocket med elif-satser kontrollerar flera villkor sekventiellt tills ett av dem är sant. I det här fallet, eftersom värdet på nummer är 5, blir utdata:

if_elif skillnad

if_elif skillnad

23) Hur använder du en while-loop för att upprepade gånger utföra kommandon?

En while-loop används i skalskript för att upprepade gånger exekvera en uppsättning kommandon så länge som ett angivet villkor är sant. Slingan fortsätter att utföra kommandona tills villkoret blir falskt.

Här är den grundläggande syntaxen för en while-loop:

while [villkor]; do
# Kommandon som ska köras
Gjort

Förklaring:

  1. `while`-loopen börjar med nyckelordet `while` följt av ett villkor inom hakparenteser `[ ]`.
  2. Slingans kropp, som innehåller de kommandon som ska köras, är innesluten av nyckelorden 'do' och 'done'.
  3. Slingan kontrollerar först tillståndet. Om villkoret är sant, exekveras kommandona i loopkroppen. Efter att loopkroppen har körts kontrolleras villkoret igen, och processen upprepas tills villkoret blir falskt.

Exempel: Om vi ​​vill skriva ut nummer från 1 till 5

#!/bin/bash
räknare=1
medan [ $counter -le 5 ]; do
echo Number: $counter
räknare=$((räknare + 1))
Gjort

Förklaring:

  • Räknarvariabeln är inställd på 1.
  • While-slingan kontrollerar om värdet på räknaren är mindre än eller lika med 5. Så länge detta villkor är sant, fortsätter loopen att exekvera.
  • Inuti slingan skrivs det aktuella värdet av räknaren ut med hjälp av eko.
  • Räknaren ökas med 1 med uttrycket $((räknare + 1)).
medan loop

medan loop

24) Skapa ett skalskript som hittar och listar alla tomma filer i en katalog.

Skalskript som du kan använda för att hitta och lista alla tomma filer i en katalog med kommandona `find` och `stat`:

#!/bin/bash
katalog=$1″
if [ -z $katalog ]; sedan
echo Användning: $0
utgång 1
vara

om [ ! -d $katalog ]; sedan
echo Error: '$directory' är inte en giltig katalog.
utgång 1
vara
echo Tomma filer i $katalogen:
hitta $katalog -typ f -tom

Förklaring:

  1. ` #!/bin/bash `: Detta kallas en shebang, och det säger åt operativsystemet att använda Bash-skalet för att tolka och köra skriptet.
  2. ` katalog=$1″ `: Denna rad tilldelar det första kommandoradsargumentet (betecknat med $1) till variabeln ` katalog `.
  3. ` if [ -z $katalog ]; sedan `: Den här raden startar en if-sats som kontrollerar om ` katalog ` variabeln är tom (-z testar för en tom sträng).
  4. ` echo Användning: $0 `: Om katalogen är tom, skriver den här raden ut ett användningsmeddelande, där ` $0 ` representerar skriptets namn.
  5. ` utgång 1 `: Den här raden avslutar skriptet med exitkoden ` 1 `, vilket indikerar ett fel.
  6. ` vara `: Den här raden markerar slutet på ` om ` uttalande.
  7. ` om [ ! -d $katalog ]; sedan `: Detta startar en annan if-sats för att kontrollera om den tillhandahållna katalogen finns (` -d ` testar för en katalog).
  8. ` echo Error: '$directory' är inte en giltig katalog. `: Om den angivna katalogen inte finns, skrivs ett felmeddelande ut på den här raden.
  9. ` utgång 1 `: Avslutar skriptet med exitkoden ` 1 `.
  10. ` vara `: Markerar slutet på den andra ` om` påstående.
  11. ` echo Tomma filer i $katalogen: `: Om allt är giltigt hittills skrivs ett meddelande ut på den här raden som indikerar att skriptet kommer att lista tomma filer i den angivna katalogen.
  12. ` hitta $katalog -typ f -tom `: Den här raden använder ` hitta ` kommando för att söka efter tomma filer (` -tömma `) av typen vanliga filer (` -typ f `) i den angivna katalogen. Den listar sedan dessa tomma filer.
Hitta tomma filer

Hitta tomma filer

Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/

25) Vad är syftet med läskommandot i skalskript?

Läskommandot i skalskriptning låter skriptet be dig om information. Det är som när en dator ställer en fråga till dig och väntar på ditt svar. Detta är användbart för skript som kräver att du skriver något eller när skriptet behöver arbeta med information från filer. Läskommandot hjälper skriptet att stanna och vänta på vad du skriver, och sedan kan det använda den informationen för att göra fler saker i skriptet.

Syntax för läskommandot:

read variable_name>

Exempel : Om vi ​​vill ta namn som en input från användaren för att skriva ut det.

#!/bin/bash
echo Vänligen ange ditt namn:
läsa namn
echo Hej, $name!

453

läs nam

Sammanfattningsvis används läskommandot för att fånga användarindata eller data från filer i skalskript, vilket gör skripten mer interaktiva och mångsidiga.

26) Skriv ett skalskript som konverterar alla filnamn i en katalog till gemener.

Här är ett skalskript som konverterar alla filnamn i en katalog till gemener.

#!/bin/bash
katalog=$1″
if [ -z $katalog ]; sedan
echo Användning: $0
utgång 1
vara

om [ ! -d $katalog ]; sedan

echo Error: '$directory' är inte en giltig katalog.
utgång 1
vara

cd $katalog || utgång 1

för fil i *; do
if [ -f $fil ]; sedan
newname=$(eko $fil | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
vara
Gjort

Förklaring:

  1. #!/bin/bash : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
  2. katalog=$1″ : Den här raden tilldelar det första kommandoradsargumentet till variabelkatalogen.
  3. if [ -z $katalog ]; sedan : Den här raden kontrollerar om katalogvariabeln är tom (inget argument anges när skriptet körs).
  4. echo Användning: $0 : Om katalogen är tom skriver den här raden ut ett användningsmeddelande med skriptets namn ($0).
  5. utgång 1 : Den här raden avslutar skriptet med utgångskoden 1, vilket indikerar att ett fel har inträffat.
  6. f i: Detta markerar slutet på den första if-satsen.
  7. om [ ! -d $katalog ]; sedan : Den här raden kontrollerar om den angivna katalogen inte finns (-d testar för en katalog).
  8. echo Error: '$directory' är inte en giltig katalog. : Om den angivna katalogen inte finns skrivs ett felmeddelande ut på den här raden.
  9. utgång 1 : Avslutar skriptet med utgångskoden 1.
  10. vara : Markerar slutet av den andra if-satsen.
  11. cd $katalog || utgång 1 : Ändrar den aktuella arbetskatalogen till den angivna katalogen. Om katalogändringen misslyckas (t.ex. en icke-existerande katalog), avslutas skriptet med en felkod.
  12. för fil i *; do: jag för fil i *; do: initierar en loop som itererar över alla objekt i den aktuella katalogen (* matchar alla filnamn).
  13. if [ -f $fil ]; sedan : Kontrollerar om det aktuella loopiterationsobjektet är en vanlig fil (-f testar för en vanlig fil).
  14. newname=$(eko $fil | tr 'A-Z' 'a-z') : Konverterar det aktuella filnamnet ($file) till gemener med kommandot tr och lagrar resultatet i variabeln newname.
  15. [ $file != $newname ] && mv $file $newname : Jämför det ursprungliga filnamnet med det nya filnamnet med gemener. Om de är olika byter den namn på filen med kommandot mv.
  16. vara : Markerar slutet på den inre if-satsen.
  17. Gjort : Markerar slutet av slingan.

454

Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/test

27) Hur kan du använda aritmetiska operationer i ett skalskript?

Aritmetiska operationer kan utföras inom ett skalskript med olika inbyggda metoder. Skalet tillhandahåller mekanismer för enkla aritmetiska beräkningar med aritmetisk expansion som:

  1. Aritmetisk expansion ($((…)))
  2. Använder kommandot expr
  3. Använder let Command

Här är vårt Shell-skript som förklarar alla tre metoderna för aritmetiska operationer.

#!/bin/bash
num1=10
num2=5

#Aritmetisk expansion ($((…)))

resultat=$((nummer1 + nummer2))
echo Summa: $result

#Använda kommandot expr

summa=$(expr $num1 + $num2)
echo Summa: $summa

#Använda let Command

låt summa = num1 + num2
echo Summa: $summa

Förklaring:

  1. `#!/bin/bash` : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
  2. `num1=10` och ` num2=5` : Dessa rader tilldelar värdena 10 och 5 till variablerna ` nummer1 ` och ` nummer2 `, respektive.
  3. `#Aritmetisk expansion ($((...)))` : Detta är en kommentar som indikerar början av avsnittet som visar aritmetisk expansion.
  4. `resultat=$((tal1 + nummer2))` : Den här raden använder aritmetisk expansion för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` resultat ` variabel.
  5. `echo Summa: $resultat` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` resultat ` variabel.
  6. `#Använder kommandot expr` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` expr ` kommando för aritmetiska operationer.
  7. `summa=$(expr $num1 + $num2)` : Den här raden använder ` expr ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` belopp ` variabel. Observera att ` expr ` kommando kräver mellanslag runt operatörerna.
  8. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
  9. `#Använda let Command` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` låta ` kommando för aritmetiska operationer.
  10. 'låt summa = num1 + num2″'. : Den här raden använder ` låta ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och tilldelar resultatet till ` belopp ` variabel. Den ` låta ` kommando kräver inte mellanslag runt operatorerna.
  11. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
aritmetisk

aritmetisk

28) Skapa ett skript som kontrollerar om en nätverksvärd är nåbar.

Här är ett enkelt skalskript som använder kommandot ping för att kontrollera om en nätverksvärd är tillgänglig:

#!/bin/bash
värd=$1″
if [ -z $värd ]; sedan
echo Användning: $0
utgång 1
vara
ping -c 4 $host

om [$? -eq 0]; sedan
echo $host är tillgänglig.
annan
echo $host är inte tillgänglig.
vara

Förklaring:

  1. Den tar ett värdnamn eller IP-adress som argument och kontrollerar om argumentet tillhandahålls.
  2. Om inget argument tillhandahålls, visar det ett användningsmeddelande och avslutas.
  3. Den använder kommandot ping med alternativet -c 4 för att skicka fyra ICMP-ekoförfrågningar till den angivna värden.
  4. Efter att ping-kommandot körts kontrollerar det utgångsstatusen ($?). Om utgångsstatusen är 0 betyder det att värden är nåbar och skriptet skriver ut ett framgångsmeddelande. Annars skrivs ett felmeddelande ut.

456

Notera : Vi måste ange ett värdnamn som ett argument när vi kör skriptet. Här har vi använt google.com

29) Skriv ett skalskript för att hitta det bästa elementet i en array:

Här är ett skalskript för att hitta det bästa elementet i en array.

#!/bin/bash
# Deklarera en array
array=(3 56 24 89 67)

# Initiera en variabel för att lagra maxvärdet, börja med det första elementet

max=${array[0]}

# Iterera genom arrayen

för num i ${array[@]}; do

# Jämför varje element med nuvarande maximum

if ((antal> max)); sedan
max=$antal
vara
Gjort

# Skriv ut maxvärdet

echo Det maximala elementet i arrayen är: $max

Förklaring:

  1. ` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.
  2. ` array=(3 56 24 89 67) `: Arrayen deklareras och initieras med värden.
  3. ` max=${array[0]} `: `max` initieras med det första elementet i arrayen.
  4. ` för num i ${array[@]}; do `: En `for` loop används för att iterera genom elementen i arrayen.
  5. ` if ((antal> max)); sedan `: En `if`-sats kontrollerar om det aktuella elementet `num` är större än det nuvarande maximala `max`.
  6. ` max=$num`: Om`num ` är större än `max`, `max` uppdateras med värdet num.
  7. ` Gjort `: `För`-slingan är stängd.
  8. ` echo Det maximala elementet i arrayen är: $max `: Slutligen skriver skriptet ut det maximala värdet som finns i arrayen.
461

största antal

30) Skriv ett skript för att beräkna summan av element i en matris.

#!/bin/bash

# Deklarera en array

array=(1 65 22 19 94)

# Initiera en variabel för att lagra summan

summa=0

# Iterera genom arrayen och lägg till varje element till summan

för num i ${array[@]}; do
am=$((am + am))
Gjort

# Skriv ut summan

echo Summan av element i arrayen är: $summa

Förklaring:

` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.

` array=(1 65 22 19 94) `: Arrayen deklareras och initieras med värden.

` summa=0 `:` belopp ` initieras till noll för att hålla summan av element.

` för num i ${array[@]}; do `: A ` för ` loop används för att iterera genom elementen i arrayen.

` am=$((am + am)) `: Inuti slingan, varje element ` på ett ` läggs till i ` belopp ` variabel.

` Gjort `: Den ` för `-slingan är stängd.

`echo Summan av element i arrayen är: $summa`: Slutligen skriver skriptet ut summan av alla element i arrayen.

462

Summan av element

Lär dig mer om Shell-skript

Slutsats

Vi alla nördar vet att skalskript är mycket användbart för att öka arbetsproduktiviteten och samtidigt spara tid. Så, i den här artikeln har vi täckt 30 mycket användbara och mest luriga skalskriptexempel . Vi hoppas att den här kompletta guiden om skalskriptexempel hjälper dig att förstå allt om skalskripten.




utgång 1
vara

om [ ! -d $katalog ]; sedan

echo Error: '$directory' är inte en giltig katalog.
utgång 1
vara

cd $katalog || utgång 1

för fil i *; do
if [ -f $fil ]; sedan
newname=$(eko $fil | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
vara
Gjort

Förklaring:

  1. #!/bin/bash : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
  2. katalog=″ : Den här raden tilldelar det första kommandoradsargumentet till variabelkatalogen.
  3. if [ -z $katalog ]; sedan : Den här raden kontrollerar om katalogvariabeln är tom (inget argument anges när skriptet körs).
  4. echo Användning:

    För alla Linux-distributioner är skalskriptet som en trollstav som automatiserar processen, sparar tid för användare och ökar produktiviteten. Denna handledning för ska skript kommer att introducera dig till 25 plus ska skriptexemplen.

    Men innan vi går vidare till ämnet skalskript exempel, låt oss förstå skalskript och de faktiska användningsfallen för skalskript.

    Vad är Shell Script?

    Tja, skalet är en CLI ( kommandoradstolk ), som körs i ett textfönster där användare kan hantera och utföra skalkommandon. Å andra sidan, processen att skriva en uppsättning kommandon som ska köras på ett Linux-system. En fil som innehåller sådana instruktioner kallas ett bash-skript.

    Användning av Shell-skript

    Nedan följer några vanliga användningsområden för Shell Script:

    • Uppgiftsautomatisering – Den kan användas för att automatisera repetitiva uppgifter som regelbundna säkerhetskopieringar och programvaruinstallationsuppgifter.
    • Anpassning – Man kan använda skalskript för att designa sin kommandoradsmiljö och enkelt utföra sin uppgift enligt behov.
    • Filhantering - Skalskripten kan också användas för att hantera och manipulera filer och kataloger, som att flytta, kopiera, byta namn på eller ta bort filer.

    Shell Script Exempel i Linux

    1) Vad indikerar shebang (#!) i början av ett skalskript?

    De shebang (#!) i början av ett skript indikerar tolken som ska användas för att köra skriptet. Det talar om för systemet vilket skal eller tolk som ska tolka skriptets kommandon.

    Till exempel: Anta att vi har ett skript som heter myscript.sh skrivet i Bash-skalet:

    shebang

    shebang

    I det här exemplet:

    • #!/bin/bash i början av skriptet indikerar att skriptet ska tolkas med Bash-skalet.
    • Ekokommandona används för att skriva ut meddelanden till terminalen.

    2) Hur kör du ett skalskript från kommandoraden?

    För att köra ett skalskript från kommandoraden måste vi följa dessa steg:

    • Se till att skriptfilen har körbara behörigheter med hjälp av chmod kommando :
    chmod +x myscript.sh>
    • Kör skriptet med dess filnamn:
    ./myscript.sh>

    Här måste du byta ut myscrtipt.sh med ditt manusnamn.

    3) Skriv ett skalskript som skriver ut techcodeview.com till terminalen.

    Skapa ett skriptnamn `myscript.sh` (vi använder ` därför att ` editor, du kan välja vilken editor som helst)

    vim myscript.sh>

    #!/bin/bash
    # Detta skript skriver ut techcodeview.com till terminalen
    echo techcodeview.com

    Skriv namn

    Skriv namn

    Vi gör vårt skript körbart genom att använda `chmod +x` och kör sedan med `./myscipt.sh` och få vår önskade utdata techcodeview.com.

    4) Förklara syftet med echo-kommandot i skalskript.

    De eko kommando används för att visa text eller variabler på terminalen. Det används ofta för att skriva ut meddelanden, variabla värden och generera programutdata.

    434

    eko kommando

    I det här exemplet har vi exekverat `echo` på terminal direkt, eftersom det fungerar på samma sätt i skalskriptet.

    5) Hur kan du tilldela ett värde till en variabel i ett skalskript?

    Variabler tilldelas värden med hjälp av tilldelningsoperatorn =.

    Till exempel:

    #!/bin/bash
    # Tilldela ett värde till en variabel
    namn=Jayesh
    ålder=21
    echo $name $age

    Förklaring:

    • Namnvariabeln tilldelas värdet Jayesh.
    • Åldersvariabeln tilldelas värdet 21.
    • echo används för att skriva ut och `$name` `$age` används för att anropa värdet som lagras i variablerna.

    435

    6) Skriv ett skalskript som tar en användares namn som indata och hälsar dem välkomna.

    Skapa ett skriptnamn `example.sh`.

    #!/bin/bash
    # Fråga användaren om deras namn
    echo Vad heter du?
    läs namn
    # Hälsa användaren
    echo Hej, $name! Trevligt att träffas.

    Förklaring:

    • #!/bin/bash: Det här är shebang-linjen. Den säger åt systemet att använda Bash-tolken för att köra skriptet.
    • # Fråga användaren om deras namn: Det här är en kommentar. Det ger sammanhang om den kommande koden. Kommentarer ignoreras av tolken.
    • echo Vad heter du?: Echo-kommandot används för att visa texten med dubbla citattecken på terminalen.
    • read name: Read-kommandot väntar på att användaren matar in text och lagrar den i variabelnamnet.
    • echo Hej, $name! Trevligt att träffa dig.: Den här raden använder ekokommandot för att skriva ut ett hälsningsmeddelande som inkluderar värdet på namnvariabeln, som samlades in från användarens indata.

    436

    7) Hur lägger man till kommentarer till ett skalskript?

    Kommentarer i skalskript används för att ge förklaringar eller sammanhang till koden. De ignoreras av tolken och är endast avsedda för människor som läser manuset. Du kan lägga till kommentarer med #-symbolen.

    #!/bin/bash
    # Det här är en kommentar som förklarar syftet med skriptet
    echo gfg

    8) Skapa ett skalskript som kontrollerar om en fil finns i den aktuella katalogen.

    Här är ett skript som kontrollerar om en fil med namnet example.txt finns i den aktuella katalogen:

    #!/bin/bash
    file=example.txt
    # Kontrollera om filen finns
    if [ -e $fil ]; sedan
    echo Filen finns: $file
    annan
    echo Filen hittades inte: $file
    vara

    Förklaring:

    1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
    2. file=example.txt: Den här raden definierar variabelfilen och tilldelar den värdet example.txt. Du kan ersätta detta med namnet på filen du vill söka efter.
    3. if [ -e $fil ]; then: Den här raden startar en if-sats. Villkoret [ -e $file ] kontrollerar om filen som anges av värdet på filvariabeln existerar. Flaggan -e används för att kontrollera om filen finns.
    4. echo File exists: $file: Om villkoret är sant (dvs. filen existerar), skrivs ett meddelande ut på den här raden som indikerar att filen existerar, tillsammans med filens namn.
    5. else: Om villkoret är falskt (dvs. filen existerar inte), kör skriptet koden under else-grenen.
    6. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades, tillsammans med filens namn.
    7. fi: Denna rad markerar slutet på if-satsen.
    Hittar fil

    Hittar fil

    9) Vad är skillnaden mellan enkla citattecken (') och dubbla citattecken () i skalskript?

    Enkla citattecken (') och dubbla citattecken () används för att omsluta strängar i skalskript, men de har olika beteenden:

    • Enstaka citattecken: Allt mellan enstaka citattecken behandlas som en bokstavlig sträng. Variabelnamn och de flesta specialtecken utökas inte.
    • Dubbla citattecken: Variabler och vissa specialtecken inom dubbla citattecken utökas. Innehållet är föremål för variabel substitution och kommandosubstitution.

    #!/bin/bash

    abcd=Hej
    echo '$abcd' # Utdata: $abcd
    echo $abcd # Utgång: Hej

    10) Hur kan du använda kommandoradsargument i ett skalskript?

    Kommandoradsargument är värden som ges till ett skript när det körs. De kan nås i skriptet med hjälp av speciella variabler som $1, $2, etc., där $1 representerar det första argumentet, $2 representerar det andra argumentet, och så vidare.

    Till exempel: Om vårt skriptnamn i `example.sh`

    #!/bin/bash

    echo Skriptnamn: $0
    echo Första argumentet: $1
    echo Andra argumentet: $2

    Om vi ​​kör skriptet med `.example.sh hello_1 hello_2` kommer det att mata ut:

    cli argument

    cli argument

    11) Hur använder du for-slingan för att iterera genom en lista med värden?

    Skapa ett skriptnamn `example.sh`.

    #!/bin/bash

    frukt=(äpplebanan körsbärsdatum)
    för frukt i ${frukter[@]}; do
    echo Aktuell frukt: $fruit
    Gjort

    Förklaring:

    `fruits=`-raden skapar en array som heter frukter med fyra element: äpple, banan, körsbär och datum.

    • för frukt i ${frukter[@]}; do: Den här raden startar en for-loop. Så här betyder varje del:
    • för frukt: Detta deklarerar en loopvariabel som kallas frukt. I varje iteration av loopen kommer frukt att hålla värdet på det aktuella elementet från fruktmatrisen.
    • ${fruits[@]}: Detta är en array-expansion som tar alla element från frukt-arrayen. ${…}-syntaxen säkerställer att varje element behandlas som ett separat objekt.
    • do: Detta nyckelord markerar början av loopkroppen.
    • echo Current fruit: $fruit: Inuti slingan använder den här raden echo-kommandot för att visa det aktuella värdet för loopvariabeln fruit. Den skriver ut ett meddelande som Aktuell frukt: äpple för varje frukt i arrayen.
    • done: Det här nyckelordet markerar slutet på loopkroppen. Det talar om för skriptet att slingan har avslutats.
    för slinga

    för slinga

    12) Skriv ett skalskript som beräknar summan av heltal från 1 till N med hjälp av en slinga.

    Skapa ett skriptnamn `example.sh`.

    #!/bin/bash

    echo Ange ett nummer (N):
    läs N
    summa=0
    för ((i=l; i<=$N; i++)); do
    summa=$((summa + i))
    Gjort
    echo Summan av heltal från 1 till $N är: $summa

    Förklaring:
    Skriptet börjar med att be dig ange ett nummer (N) med hjälp av read. Detta nummer avgör hur många gånger slingan körs.

    1. Variabelsumman initieras till 0. Denna variabel kommer att hålla reda på summan av heltal.
    2. For-slingan börjar med for (( i=1; i<=$N; i++ )). Denna loopstruktur används för att upprepa en uppsättning åtgärder ett visst antal gånger, i det här fallet, från 1 till värdet av N.
    3. Inuti slingan händer dessa saker:
      • i=1 sätter loopvariabeln i till 1 i början av varje iteration.
      • Slingvillkoret i<=$N kontrollerar om i fortfarande är mindre än eller lika med det givna talet N.
      • Om villkoret är sant, exekveras loopkroppen.
      • sum=$((sum + i)) beräknar det nya värdet av summan genom att lägga till det nuvarande värdet av i. Detta summerar heltal från 1 till det nuvarande i-värdet.
    4. Efter varje iteration ökar i++ värdet på i med 1.
    5. Slingan fortsätter att köras tills villkoret i<=$N blir falskt (när i blir större än N).
    6. När loopen är klar visar skriptet summan av heltal från 1 till det angivna talet N.

    439

    13) Skapa ett skript som söker efter ett specifikt ord i en fil och räknar dess förekomster.

    Skapa ett skriptnamn `word_count.sh`

    #!/bin/bash

    echo Ange ordet att söka efter:
    läs target_word
    echo Ange filnamnet:
    läs filnamn
    count=$(grep -o -w $target_word $filnamn | wc -l)
    echo Ordet '$target_word' visas $count gånger i '$filnamn'.

    Förklaring:

    • echo Ange ordet att söka efter:: Denna rad visar ett meddelande som ber användaren att ange ett ord som de vill söka efter i en fil.
    • read target_word: Denna rad läser indata från användaren och lagrar den i en variabel som heter target_word.
    • echo Ange filnamnet:: Denna rad visar ett meddelande som ber användaren att ange namnet på filen de vill söka i.
    • läs filnamn: Denna rad läser indata från användaren och lagrar den i en variabel med namnet filnamn.
    • count=$(grep -o -w $målord $filnamn | wc -l): Den här raden utför skriptets huvudsakliga arbete. Låt oss bryta ner det ytterligare:
      • grep -o -w $target_word $filnamn: Denna del av kommandot söker efter förekomster av target_word i det angivna filnamnet. Alternativen -o och -w säkerställer att endast helordsmatchningar räknas.
      • |: Detta är ett rör som tar utdata från föregående kommando och skickar det som indata till nästa kommando.
      • wc -l: Den här delen av kommandot använder kommandot wc för att räkna antalet rader i inmatningen. Alternativet -l räknar specifikt raderna.
      • Hela kommandot beräknar antalet förekomster av target_word i filen och tilldelar det antalet till variabeln count

    441

    14) Förklara skillnaderna mellan standardutgång (stdout) och standardfel (stderr).

    Huvudskillnaden mellan standardutgång (stdout) och standardfel (stderr) är följande:

    • Standardutgång (stdout): Detta är standardutgångsströmmen dit ett kommandos vanliga utdata går. Det visas på terminalen som standard. Du kan omdirigera den till en fil med>.
    • Standardfel (stderr): Detta är utdataströmmen för felmeddelanden och varningar. Det visas också på terminalen som standard. Du kan omdirigera den till en fil med 2>.

    15) Förklara begreppet villkorliga uttalanden i skalskript.

    Villkorliga uttalanden i skalskript låter oss fatta beslut och kontrollera flödet av vårt manus baserat på vissa förutsättningar. De gör det möjligt för vårt skript att köra olika uppsättningar av kommandon beroende på om ett visst villkor är sant eller falskt. De primära villkorssatserna i skalskript är if-satsen, elif-satsen (valfritt) och else-satsen (valfritt).

    Här är den grundläggande strukturen för ett villkorligt uttalande i skalskript:

    if [villkor]; sedan
    # Kommandon att köra om villkoret är sant
    elif [ another_condition ]; sedan
    # Kommandon att köra om another_condition är sant (valfritt)
    annan
    # Kommandon att köra om inget av villkoren är sant (valfritt)
    vara

    Förklaring:

    • [ condition ] = Kommando som utvärderar villkoret och returnerar en sann (0) eller falsk (icke-noll) utgångsstatus.
    • then = Det är ett nyckelord som indikerar att kommandona efter det kommer att utföras om villkoret utvärderas till sant.
    • elif = (förkortning av else if) Det är ett avsnitt som låter oss specificera ytterligare villkor att kontrollera.
    • else = det är en sektion som innehåller kommandon som kommer att köras om inget av villkoren är sant.
    • fi = Det är ett nyckelord som markerar slutet på det villkorliga blocket.

    16) Hur läser man rader från en fil i ett skalskript?

    Till läsa rader från en fil i ett skalskript kan vi använda olika metoder, men ett vanligt tillvägagångssätt är att använda en while-loop i kombination med läskommandot. Så här kan vi göra det:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Kontrollera om filen finns
    if [ -e $fil ]; sedan
    medan IFS= read -r line; do
    echo Line read: $line
    # Lägg till din bearbetningslogik här
    klar <$fil
    annan
    echo Filen hittades inte: $file
    vara

    Förklaring:

    1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
    2. file=/home/jayeshkumar/jayesh.txt: Den här raden definierar variabelfilen och tilldelar den fullständiga sökvägen till filen jayesh.txt i katalogen /home/jayeshkumar. Ändra den här sökvägen så att den matchar den faktiska sökvägen för filen du vill läsa.
    3. if [ -e $fil ]; then: Den här raden startar en if-sats. Den kontrollerar om filen som anges av variabeln $file existerar. Flaggan -e kontrollerar att filen finns.
    4. medan IFS= read -r line; do: Denna rad initierar en while-loop som läser rader från filen.
      • IFS=: IFS (Internal Field Separator) är satt till ett tomt värde för att bevara inledande och efterföljande mellanslag.
      • read -r line: Detta läser den aktuella raden från filen och lagrar den i variabelraden.
    5. echo Line read: $line: Denna rad skriver ut innehållet i raden som lästes från filen. Variabeln $line innehåller den aktuella radens innehåll.
    6. # Lägg till din bearbetningslogik här: Detta är en platshållarkommentar där du kan lägga till din egen logik för att bearbeta varje rad. Du kan till exempel analysera raden, extrahera information eller utföra specifika åtgärder baserat på innehållet.
    7. done <$file: Detta markerar slutet på while-loopen. < $filen omdirigerar innehållet i filen som ska läsas av loopen.
    8. else: Om filen inte finns (villkoret i if-satsen är falskt), exekverar skriptet koden under else-grenen.
    9. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades.
    10. fi: Denna rad markerar slutet på if-satsen.
    läsa filen

    läsa filen

    Här använde vi ` pwd ` kommando för att hämta sökvägen till aktuell katalog.

    17) Skriv en funktion i ett skalskript som beräknar fakulteten för ett givet tal.

    Här är manusetberäkna faktorvärdetav ett givet nummer.

    #!/bin/bash
    # Definiera en funktion för att beräkna faktorial
    beräkna_faktor() {
    num=$1
    fakta=1
    för ((i=1; i<=tal; i++)); do
    fakta=$((faktum * i))
    Gjort
    echo $fakta
    }
    # Be användaren att ange ett nummer
    echo Ange ett nummer:
    läs input_num
    # Anropa calculate_factorial-funktionen med inmatningsnumret
    factorial_result=$(calculate_fatorial $input_num)
    # Visa det ursprungliga resultatet
    echo Factorial av $input_num är: $factorial_result

    Förklaring:

    1. Skriptet börjar med shebang-raden #!/bin/bash för att specificera tolken.
    2. calculate_fatorial() definieras som en funktion. Det krävs ett argument, num, vilket är talet för vilket faktorvärdet måste beräknas.
    3. Inuti funktionen initieras fakta till 1. Denna variabel lagrar det faktoriella resultatet.
    4. For-slingan itererar från 1 till det givna numret (num). I varje iteration multiplicerar den det aktuella värdet av fakta med loopindexet i.
    5. När slingan är klar innehåller faktavariabeln den beräknade faktorialen.
    6. Skriptet uppmanar användaren att ange ett nummer med läs.
    7. Funktionen calculate_factorial anropas med det av användaren angivna numret, och resultatet lagras i variabeln factorial_result.
    8. Slutligen visar skriptet det beräknade faktoriella resultatet.
    Faktoriell

    Faktoriell

    18) Hur hanterar du signaler som Ctrl+C i ett skalskript?

    I ett skalskript kan du hantera signaler som Ctrl+C (även känd som SIGINT) med kommandot trap. Ctrl+C genererar en SIGINT-signal när användaren trycker på den för att avbryta det pågående skriptet eller programmet. Genom att använda trap-kommandot kan du specificera åtgärder som ska vidtas när en viss signal tas emot. Så här hanterar du signaler som Ctrl+C i ett skalskript:

    #!/bin/bash
    städa() {
    echo Skriptet avbröts. Rensar …
    # Lägg till dina saneringsåtgärder här
    utgång 1
    }
    # Sätt upp en fälla för att anropa rensningsfunktionen när Ctrl+C (SIGINT) tas emot
    fällsanering SIGINT
    # Resten av ditt manus
    eko kör...
    sova 10
    eko Avslutad.

    Att hantera signaler är viktigt för att göra skript robusta och för att säkerställa att de hanterar oväntade avbrott på ett elegant sätt. Du kan anpassa rensningsfunktionen för att matcha dina specifika behov, som att stänga filer, stoppa processer eller logga information innan skriptet avslutas.

    Förklaring:

    1. #!/bin/bash: Denna shebang-rad specificerar tolken som ska användas för att köra skriptet.
    2. cleanup() { … }: Detta definierar en funktion som heter cleanup. Inuti den här funktionen kan du inkludera alla åtgärder som behöver utföras när skriptet avbryts, som att stänga filer, släppa resurser eller utföra andra rensningsuppgifter.
    3. trap cleanup SIGINT: Trappkommandot används för att ställa in en signalhanterare. I det här fallet specificerar den att när SIGINT-signalen (Ctrl+C) tas emot, ska rensningsfunktionen utföras.
    4. echo Running…, sleep 10, echo Finished.: Dessa är bara exempel på kommandon för att simulera exekveringen av ett skript.

    446

    19) Skapa ett skript som letar efter och tar bort dubbletter i en textfil.

    Här är vårt linux-skript där vi tar bort dubbletter från en textfil.

    #!/bin/bash
    input_file=input.txt
    output_file=output.txt
    sortera $indatafil | uniq> $output_file
    echo Duplicerade rader har tagits bort.

    Förklaring:

    1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att skriptet ska tolkas med Bash-skalet.
    2. Variabeln input_file är inställd på namnet på indatafilen som innehåller dubbla rader (ändra detta till ditt faktiska indatafilnamn).
    3. Variabeln output_file är inställd på namnet på utdatafilen där dubbletterna kommer att tas bort (ändra detta till önskat utdatafilnamn).
    4. Skriptet använder sorteringskommandot för att sortera raderna i inmatningsfilen. Sortering av raderna säkerställer att duplicerade rader grupperas tillsammans.
    5. De sorterade raderna skickas sedan genom kommandot uniq, som tar bort på varandra följande dubbletter. Utdata från denna process omdirigeras till utdatafilen.
    6. Efter att dubletterna har tagits bort skrivs ett framgångsmeddelande ut i skriptet.
    dubblettlinje borttagning

    dubblettlinje borttagning

    Här använder vi ` katt ` för att visa texten i textfilen.

    20) Skriv ett skript som genererar ett säkert slumpmässigt lösenord.

    Här är vårt skript för att skapa ett säkert slumpmässigt lösenord.

    #!/bin/bash
    # Funktion för att generera ett slumpmässigt lösenord
    generera lösenord() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Anropa funktionen och lagra det genererade lösenordet
    lösenord=$(generera_lösenord)
    echo Genererat lösenord: $password

    Notera: Användaren kan därför ändra längden på lösenordet genom att ersätta siffran '12'.

    Förklaring:

    1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att det ska tolkas med Bash-skalet.
    2. Generera_lösenord-funktionen är definierad för att generera ett slumpmässigt lösenord. Så här fungerar det:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 bryter de filtrerade slumpmässiga data i rader med bredd 12 tecken vardera.
      • head -n 1 väljer den första raden, vilket ger oss en slumpmässig sekvens av tecken med längden 12.
    3. Lösenordsvariabeln tilldelas resultatet av anrop av funktionen generera_lösenord.
    4. Slutligen visas det genererade lösenordet med hjälp av eko.

    448

    21) Skriv ett skalskript som beräknar den totala storleken på alla filer i en katalog.

    Här är ett skalskript för att beräkna den totala storleken på alla filer i en katalog.

    #!/bin/bash
    katalog=/sökväg/till/din/katalog
    total_size=$(du -csh $katalog | grep totalt | awk '{print $1}')
    echo Total storlek på filer i $katalogen: $total_size

    Förklaring:

    1. Skriptet börjar med #!/bin/bash shebang, vilket indikerar att det ska tolkas med Bash-skalet.
    2. Katalogvariabeln är inställd på sökvägen till den katalog som du vill beräkna den totala filstorleken för. Ersätt /sökväg/till/din/katalog med den faktiska sökvägen.
    3. Kommandot du används för att uppskatta filutrymmesanvändning. Alternativen som används är:
      • -c: Producera en totalsumma.
      • -s: Visa endast den totala storleken på den angivna katalogen.
      • -h: Utskriftsstorlekar i ett läsbart format (t.ex. KB, MB, GB).
    4. Utdata från du skickas till grep total för att filtrera bort raden som innehåller den totala storleken.
    5. awk '{print $1}' används för att extrahera det första fältet (total storlek) från raden.
    6. Den beräknade totala storleken lagras i variabeln total_size.
    7. Slutligen visar skriptet den totala storleken med hjälp av eko.
    Total storlek på filer

    Total storlek på filer

    Här använde vi ` pwd ` kommando för att se den aktuella katalogsökvägen.

    22) Förklara skillnaden mellan if- och elif-satser i skalskript.

    Funktion `om` Staiftement `elif` uttalande
    Syfte Förklara skillnaden mellan if- och elif-satser i skalskript. Tillhandahåller alternativa villkor för att kontrollera när det initiala om-villkoret är falskt.
    användande Används för det ursprungliga skicket. Används efter initialt skick för att kontrollera ytterligare villkor.
    antal block Kan bara ha ett om block. Kan ha flera elif-block, men bara ett annat block (valfritt).
    Avrättning Kör kodblocket som är associerat med if-satsen om villkoret är sant. Om villkoret är falskt exekveras det andra blocket (om det finns) (valfritt). Kontrollerar varje elif-tillstånd i ordning. Om ett elif-villkor är sant, exekveras motsvarande kodblock och skriptet avslutar hela det villkorliga blocket. Om inget av elif-villkoren är sant, exekveras else-blocket (om det finns).
    Kapslade strukturer Kan kapslas i andra if-, elif- eller else-block. Kan inte kapslas i ett annat elif-block, men kan användas i ett if eller else-block.

    Låt oss förstå det med ett exempel.

    #!/bin/bash
    nummer=5
    if [ $nummer -gt 10 ]; sedan
    echo $number är större än 10
    annan
    echo $number är inte större än 10
    vara
    eko ——–
    if [ $nummer -gt 10 ]; sedan
    echo $number är större än 10
    elif [ $number -eq 10 ]; sedan
    echo $nummer är lika med 10
    annan
    echo $number är mindre än 10
    vara

    Förklaring:

    I det här exemplet kontrollerar det första if-blocket om talet är större än 10. Om inte, skrivs ett meddelande ut som indikerar att talet inte är större än 10. Det andra blocket med elif-satser kontrollerar flera villkor sekventiellt tills ett av dem är sant. I det här fallet, eftersom värdet på nummer är 5, blir utdata:

    if_elif skillnad

    if_elif skillnad

    23) Hur använder du en while-loop för att upprepade gånger utföra kommandon?

    En while-loop används i skalskript för att upprepade gånger exekvera en uppsättning kommandon så länge som ett angivet villkor är sant. Slingan fortsätter att utföra kommandona tills villkoret blir falskt.

    Här är den grundläggande syntaxen för en while-loop:

    while [villkor]; do
    # Kommandon som ska köras
    Gjort

    Förklaring:

    1. `while`-loopen börjar med nyckelordet `while` följt av ett villkor inom hakparenteser `[ ]`.
    2. Slingans kropp, som innehåller de kommandon som ska köras, är innesluten av nyckelorden 'do' och 'done'.
    3. Slingan kontrollerar först tillståndet. Om villkoret är sant, exekveras kommandona i loopkroppen. Efter att loopkroppen har körts kontrolleras villkoret igen, och processen upprepas tills villkoret blir falskt.

    Exempel: Om vi ​​vill skriva ut nummer från 1 till 5

    #!/bin/bash
    räknare=1
    medan [ $counter -le 5 ]; do
    echo Number: $counter
    räknare=$((räknare + 1))
    Gjort

    Förklaring:

    • Räknarvariabeln är inställd på 1.
    • While-slingan kontrollerar om värdet på räknaren är mindre än eller lika med 5. Så länge detta villkor är sant, fortsätter loopen att exekvera.
    • Inuti slingan skrivs det aktuella värdet av räknaren ut med hjälp av eko.
    • Räknaren ökas med 1 med uttrycket $((räknare + 1)).
    medan loop

    medan loop

    24) Skapa ett skalskript som hittar och listar alla tomma filer i en katalog.

    Skalskript som du kan använda för att hitta och lista alla tomma filer i en katalog med kommandona `find` och `stat`:

    #!/bin/bash
    katalog=$1″
    if [ -z $katalog ]; sedan
    echo Användning: $0
    utgång 1
    vara

    om [ ! -d $katalog ]; sedan
    echo Error: '$directory' är inte en giltig katalog.
    utgång 1
    vara
    echo Tomma filer i $katalogen:
    hitta $katalog -typ f -tom

    Förklaring:

    1. ` #!/bin/bash `: Detta kallas en shebang, och det säger åt operativsystemet att använda Bash-skalet för att tolka och köra skriptet.
    2. ` katalog=$1″ `: Denna rad tilldelar det första kommandoradsargumentet (betecknat med $1) till variabeln ` katalog `.
    3. ` if [ -z $katalog ]; sedan `: Den här raden startar en if-sats som kontrollerar om ` katalog ` variabeln är tom (-z testar för en tom sträng).
    4. ` echo Användning: $0 `: Om katalogen är tom, skriver den här raden ut ett användningsmeddelande, där ` $0 ` representerar skriptets namn.
    5. ` utgång 1 `: Den här raden avslutar skriptet med exitkoden ` 1 `, vilket indikerar ett fel.
    6. ` vara `: Den här raden markerar slutet på ` om ` uttalande.
    7. ` om [ ! -d $katalog ]; sedan `: Detta startar en annan if-sats för att kontrollera om den tillhandahållna katalogen finns (` -d ` testar för en katalog).
    8. ` echo Error: '$directory' är inte en giltig katalog. `: Om den angivna katalogen inte finns, skrivs ett felmeddelande ut på den här raden.
    9. ` utgång 1 `: Avslutar skriptet med exitkoden ` 1 `.
    10. ` vara `: Markerar slutet på den andra ` om` påstående.
    11. ` echo Tomma filer i $katalogen: `: Om allt är giltigt hittills skrivs ett meddelande ut på den här raden som indikerar att skriptet kommer att lista tomma filer i den angivna katalogen.
    12. ` hitta $katalog -typ f -tom `: Den här raden använder ` hitta ` kommando för att söka efter tomma filer (` -tömma `) av typen vanliga filer (` -typ f `) i den angivna katalogen. Den listar sedan dessa tomma filer.
    Hitta tomma filer

    Hitta tomma filer

    Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/

    25) Vad är syftet med läskommandot i skalskript?

    Läskommandot i skalskriptning låter skriptet be dig om information. Det är som när en dator ställer en fråga till dig och väntar på ditt svar. Detta är användbart för skript som kräver att du skriver något eller när skriptet behöver arbeta med information från filer. Läskommandot hjälper skriptet att stanna och vänta på vad du skriver, och sedan kan det använda den informationen för att göra fler saker i skriptet.

    Syntax för läskommandot:

    read variable_name>

    Exempel : Om vi ​​vill ta namn som en input från användaren för att skriva ut det.

    #!/bin/bash
    echo Vänligen ange ditt namn:
    läsa namn
    echo Hej, $name!

    453

    läs nam

    Sammanfattningsvis används läskommandot för att fånga användarindata eller data från filer i skalskript, vilket gör skripten mer interaktiva och mångsidiga.

    26) Skriv ett skalskript som konverterar alla filnamn i en katalog till gemener.

    Här är ett skalskript som konverterar alla filnamn i en katalog till gemener.

    #!/bin/bash
    katalog=$1″
    if [ -z $katalog ]; sedan
    echo Användning: $0
    utgång 1
    vara

    om [ ! -d $katalog ]; sedan

    echo Error: '$directory' är inte en giltig katalog.
    utgång 1
    vara

    cd $katalog || utgång 1

    för fil i *; do
    if [ -f $fil ]; sedan
    newname=$(eko $fil | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    vara
    Gjort

    Förklaring:

    1. #!/bin/bash : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
    2. katalog=$1″ : Den här raden tilldelar det första kommandoradsargumentet till variabelkatalogen.
    3. if [ -z $katalog ]; sedan : Den här raden kontrollerar om katalogvariabeln är tom (inget argument anges när skriptet körs).
    4. echo Användning: $0 : Om katalogen är tom skriver den här raden ut ett användningsmeddelande med skriptets namn ($0).
    5. utgång 1 : Den här raden avslutar skriptet med utgångskoden 1, vilket indikerar att ett fel har inträffat.
    6. f i: Detta markerar slutet på den första if-satsen.
    7. om [ ! -d $katalog ]; sedan : Den här raden kontrollerar om den angivna katalogen inte finns (-d testar för en katalog).
    8. echo Error: '$directory' är inte en giltig katalog. : Om den angivna katalogen inte finns skrivs ett felmeddelande ut på den här raden.
    9. utgång 1 : Avslutar skriptet med utgångskoden 1.
    10. vara : Markerar slutet av den andra if-satsen.
    11. cd $katalog || utgång 1 : Ändrar den aktuella arbetskatalogen till den angivna katalogen. Om katalogändringen misslyckas (t.ex. en icke-existerande katalog), avslutas skriptet med en felkod.
    12. för fil i *; do: jag för fil i *; do: initierar en loop som itererar över alla objekt i den aktuella katalogen (* matchar alla filnamn).
    13. if [ -f $fil ]; sedan : Kontrollerar om det aktuella loopiterationsobjektet är en vanlig fil (-f testar för en vanlig fil).
    14. newname=$(eko $fil | tr 'A-Z' 'a-z') : Konverterar det aktuella filnamnet ($file) till gemener med kommandot tr och lagrar resultatet i variabeln newname.
    15. [ $file != $newname ] && mv $file $newname : Jämför det ursprungliga filnamnet med det nya filnamnet med gemener. Om de är olika byter den namn på filen med kommandot mv.
    16. vara : Markerar slutet på den inre if-satsen.
    17. Gjort : Markerar slutet av slingan.

    454

    Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/test

    27) Hur kan du använda aritmetiska operationer i ett skalskript?

    Aritmetiska operationer kan utföras inom ett skalskript med olika inbyggda metoder. Skalet tillhandahåller mekanismer för enkla aritmetiska beräkningar med aritmetisk expansion som:

    1. Aritmetisk expansion ($((…)))
    2. Använder kommandot expr
    3. Använder let Command

    Här är vårt Shell-skript som förklarar alla tre metoderna för aritmetiska operationer.

    #!/bin/bash
    num1=10
    num2=5

    #Aritmetisk expansion ($((…)))

    resultat=$((nummer1 + nummer2))
    echo Summa: $result

    #Använda kommandot expr

    summa=$(expr $num1 + $num2)
    echo Summa: $summa

    #Använda let Command

    låt summa = num1 + num2
    echo Summa: $summa

    Förklaring:

    1. `#!/bin/bash` : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
    2. `num1=10` och ` num2=5` : Dessa rader tilldelar värdena 10 och 5 till variablerna ` nummer1 ` och ` nummer2 `, respektive.
    3. `#Aritmetisk expansion ($((...)))` : Detta är en kommentar som indikerar början av avsnittet som visar aritmetisk expansion.
    4. `resultat=$((tal1 + nummer2))` : Den här raden använder aritmetisk expansion för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` resultat ` variabel.
    5. `echo Summa: $resultat` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` resultat ` variabel.
    6. `#Använder kommandot expr` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` expr ` kommando för aritmetiska operationer.
    7. `summa=$(expr $num1 + $num2)` : Den här raden använder ` expr ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` belopp ` variabel. Observera att ` expr ` kommando kräver mellanslag runt operatörerna.
    8. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
    9. `#Använda let Command` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` låta ` kommando för aritmetiska operationer.
    10. 'låt summa = num1 + num2″'. : Den här raden använder ` låta ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och tilldelar resultatet till ` belopp ` variabel. Den ` låta ` kommando kräver inte mellanslag runt operatorerna.
    11. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
    aritmetisk

    aritmetisk

    28) Skapa ett skript som kontrollerar om en nätverksvärd är nåbar.

    Här är ett enkelt skalskript som använder kommandot ping för att kontrollera om en nätverksvärd är tillgänglig:

    #!/bin/bash
    värd=$1″
    if [ -z $värd ]; sedan
    echo Användning: $0
    utgång 1
    vara
    ping -c 4 $host

    om [$? -eq 0]; sedan
    echo $host är tillgänglig.
    annan
    echo $host är inte tillgänglig.
    vara

    Förklaring:

    1. Den tar ett värdnamn eller IP-adress som argument och kontrollerar om argumentet tillhandahålls.
    2. Om inget argument tillhandahålls, visar det ett användningsmeddelande och avslutas.
    3. Den använder kommandot ping med alternativet -c 4 för att skicka fyra ICMP-ekoförfrågningar till den angivna värden.
    4. Efter att ping-kommandot körts kontrollerar det utgångsstatusen ($?). Om utgångsstatusen är 0 betyder det att värden är nåbar och skriptet skriver ut ett framgångsmeddelande. Annars skrivs ett felmeddelande ut.

    456

    Notera : Vi måste ange ett värdnamn som ett argument när vi kör skriptet. Här har vi använt google.com

    29) Skriv ett skalskript för att hitta det bästa elementet i en array:

    Här är ett skalskript för att hitta det bästa elementet i en array.

    #!/bin/bash
    # Deklarera en array
    array=(3 56 24 89 67)

    # Initiera en variabel för att lagra maxvärdet, börja med det första elementet

    max=${array[0]}

    # Iterera genom arrayen

    för num i ${array[@]}; do

    # Jämför varje element med nuvarande maximum

    if ((antal> max)); sedan
    max=$antal
    vara
    Gjort

    # Skriv ut maxvärdet

    echo Det maximala elementet i arrayen är: $max

    Förklaring:

    1. ` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.
    2. ` array=(3 56 24 89 67) `: Arrayen deklareras och initieras med värden.
    3. ` max=${array[0]} `: `max` initieras med det första elementet i arrayen.
    4. ` för num i ${array[@]}; do `: En `for` loop används för att iterera genom elementen i arrayen.
    5. ` if ((antal> max)); sedan `: En `if`-sats kontrollerar om det aktuella elementet `num` är större än det nuvarande maximala `max`.
    6. ` max=$num`: Om`num ` är större än `max`, `max` uppdateras med värdet num.
    7. ` Gjort `: `För`-slingan är stängd.
    8. ` echo Det maximala elementet i arrayen är: $max `: Slutligen skriver skriptet ut det maximala värdet som finns i arrayen.
    461

    största antal

    30) Skriv ett skript för att beräkna summan av element i en matris.

    #!/bin/bash

    # Deklarera en array

    array=(1 65 22 19 94)

    # Initiera en variabel för att lagra summan

    summa=0

    # Iterera genom arrayen och lägg till varje element till summan

    för num i ${array[@]}; do
    am=$((am + am))
    Gjort

    # Skriv ut summan

    echo Summan av element i arrayen är: $summa

    Förklaring:

    ` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.

    ` array=(1 65 22 19 94) `: Arrayen deklareras och initieras med värden.

    ` summa=0 `:` belopp ` initieras till noll för att hålla summan av element.

    ` för num i ${array[@]}; do `: A ` för ` loop används för att iterera genom elementen i arrayen.

    ` am=$((am + am)) `: Inuti slingan, varje element ` på ett ` läggs till i ` belopp ` variabel.

    ` Gjort `: Den ` för `-slingan är stängd.

    `echo Summan av element i arrayen är: $summa`: Slutligen skriver skriptet ut summan av alla element i arrayen.

    462

    Summan av element

    Lär dig mer om Shell-skript

    Slutsats

    Vi alla nördar vet att skalskript är mycket användbart för att öka arbetsproduktiviteten och samtidigt spara tid. Så, i den här artikeln har vi täckt 30 mycket användbara och mest luriga skalskriptexempel . Vi hoppas att den här kompletta guiden om skalskriptexempel hjälper dig att förstå allt om skalskripten.



    : Om katalogen är tom skriver den här raden ut ett användningsmeddelande med skriptets namn (

    För alla Linux-distributioner är skalskriptet som en trollstav som automatiserar processen, sparar tid för användare och ökar produktiviteten. Denna handledning för ska skript kommer att introducera dig till 25 plus ska skriptexemplen.

    Men innan vi går vidare till ämnet skalskript exempel, låt oss förstå skalskript och de faktiska användningsfallen för skalskript.

    Vad är Shell Script?

    Tja, skalet är en CLI ( kommandoradstolk ), som körs i ett textfönster där användare kan hantera och utföra skalkommandon. Å andra sidan, processen att skriva en uppsättning kommandon som ska köras på ett Linux-system. En fil som innehåller sådana instruktioner kallas ett bash-skript.

    Användning av Shell-skript

    Nedan följer några vanliga användningsområden för Shell Script:

    • Uppgiftsautomatisering – Den kan användas för att automatisera repetitiva uppgifter som regelbundna säkerhetskopieringar och programvaruinstallationsuppgifter.
    • Anpassning – Man kan använda skalskript för att designa sin kommandoradsmiljö och enkelt utföra sin uppgift enligt behov.
    • Filhantering - Skalskripten kan också användas för att hantera och manipulera filer och kataloger, som att flytta, kopiera, byta namn på eller ta bort filer.

    Shell Script Exempel i Linux

    1) Vad indikerar shebang (#!) i början av ett skalskript?

    De shebang (#!) i början av ett skript indikerar tolken som ska användas för att köra skriptet. Det talar om för systemet vilket skal eller tolk som ska tolka skriptets kommandon.

    Till exempel: Anta att vi har ett skript som heter myscript.sh skrivet i Bash-skalet:

    shebang

    shebang

    I det här exemplet:

    • #!/bin/bash i början av skriptet indikerar att skriptet ska tolkas med Bash-skalet.
    • Ekokommandona används för att skriva ut meddelanden till terminalen.

    2) Hur kör du ett skalskript från kommandoraden?

    För att köra ett skalskript från kommandoraden måste vi följa dessa steg:

    • Se till att skriptfilen har körbara behörigheter med hjälp av chmod kommando :
    chmod +x myscript.sh>
    • Kör skriptet med dess filnamn:
    ./myscript.sh>

    Här måste du byta ut myscrtipt.sh med ditt manusnamn.

    3) Skriv ett skalskript som skriver ut techcodeview.com till terminalen.

    Skapa ett skriptnamn `myscript.sh` (vi använder ` därför att ` editor, du kan välja vilken editor som helst)

    vim myscript.sh>

    #!/bin/bash
    # Detta skript skriver ut techcodeview.com till terminalen
    echo techcodeview.com

    Skriv namn

    Skriv namn

    Vi gör vårt skript körbart genom att använda `chmod +x` och kör sedan med `./myscipt.sh` och få vår önskade utdata techcodeview.com.

    4) Förklara syftet med echo-kommandot i skalskript.

    De eko kommando används för att visa text eller variabler på terminalen. Det används ofta för att skriva ut meddelanden, variabla värden och generera programutdata.

    434

    eko kommando

    I det här exemplet har vi exekverat `echo` på terminal direkt, eftersom det fungerar på samma sätt i skalskriptet.

    5) Hur kan du tilldela ett värde till en variabel i ett skalskript?

    Variabler tilldelas värden med hjälp av tilldelningsoperatorn =.

    Till exempel:

    #!/bin/bash
    # Tilldela ett värde till en variabel
    namn=Jayesh
    ålder=21
    echo $name $age

    Förklaring:

    • Namnvariabeln tilldelas värdet Jayesh.
    • Åldersvariabeln tilldelas värdet 21.
    • echo används för att skriva ut och `$name` `$age` används för att anropa värdet som lagras i variablerna.

    435

    6) Skriv ett skalskript som tar en användares namn som indata och hälsar dem välkomna.

    Skapa ett skriptnamn `example.sh`.

    #!/bin/bash
    # Fråga användaren om deras namn
    echo Vad heter du?
    läs namn
    # Hälsa användaren
    echo Hej, $name! Trevligt att träffas.

    Förklaring:

    • #!/bin/bash: Det här är shebang-linjen. Den säger åt systemet att använda Bash-tolken för att köra skriptet.
    • # Fråga användaren om deras namn: Det här är en kommentar. Det ger sammanhang om den kommande koden. Kommentarer ignoreras av tolken.
    • echo Vad heter du?: Echo-kommandot används för att visa texten med dubbla citattecken på terminalen.
    • read name: Read-kommandot väntar på att användaren matar in text och lagrar den i variabelnamnet.
    • echo Hej, $name! Trevligt att träffa dig.: Den här raden använder ekokommandot för att skriva ut ett hälsningsmeddelande som inkluderar värdet på namnvariabeln, som samlades in från användarens indata.

    436

    7) Hur lägger man till kommentarer till ett skalskript?

    Kommentarer i skalskript används för att ge förklaringar eller sammanhang till koden. De ignoreras av tolken och är endast avsedda för människor som läser manuset. Du kan lägga till kommentarer med #-symbolen.

    #!/bin/bash
    # Det här är en kommentar som förklarar syftet med skriptet
    echo gfg

    8) Skapa ett skalskript som kontrollerar om en fil finns i den aktuella katalogen.

    Här är ett skript som kontrollerar om en fil med namnet example.txt finns i den aktuella katalogen:

    #!/bin/bash
    file=example.txt
    # Kontrollera om filen finns
    if [ -e $fil ]; sedan
    echo Filen finns: $file
    annan
    echo Filen hittades inte: $file
    vara

    Förklaring:

    1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
    2. file=example.txt: Den här raden definierar variabelfilen och tilldelar den värdet example.txt. Du kan ersätta detta med namnet på filen du vill söka efter.
    3. if [ -e $fil ]; then: Den här raden startar en if-sats. Villkoret [ -e $file ] kontrollerar om filen som anges av värdet på filvariabeln existerar. Flaggan -e används för att kontrollera om filen finns.
    4. echo File exists: $file: Om villkoret är sant (dvs. filen existerar), skrivs ett meddelande ut på den här raden som indikerar att filen existerar, tillsammans med filens namn.
    5. else: Om villkoret är falskt (dvs. filen existerar inte), kör skriptet koden under else-grenen.
    6. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades, tillsammans med filens namn.
    7. fi: Denna rad markerar slutet på if-satsen.
    Hittar fil

    Hittar fil

    9) Vad är skillnaden mellan enkla citattecken (') och dubbla citattecken () i skalskript?

    Enkla citattecken (') och dubbla citattecken () används för att omsluta strängar i skalskript, men de har olika beteenden:

    • Enstaka citattecken: Allt mellan enstaka citattecken behandlas som en bokstavlig sträng. Variabelnamn och de flesta specialtecken utökas inte.
    • Dubbla citattecken: Variabler och vissa specialtecken inom dubbla citattecken utökas. Innehållet är föremål för variabel substitution och kommandosubstitution.

    #!/bin/bash

    abcd=Hej
    echo '$abcd' # Utdata: $abcd
    echo $abcd # Utgång: Hej

    10) Hur kan du använda kommandoradsargument i ett skalskript?

    Kommandoradsargument är värden som ges till ett skript när det körs. De kan nås i skriptet med hjälp av speciella variabler som $1, $2, etc., där $1 representerar det första argumentet, $2 representerar det andra argumentet, och så vidare.

    Till exempel: Om vårt skriptnamn i `example.sh`

    #!/bin/bash

    echo Skriptnamn: $0
    echo Första argumentet: $1
    echo Andra argumentet: $2

    Om vi ​​kör skriptet med `.example.sh hello_1 hello_2` kommer det att mata ut:

    cli argument

    cli argument

    11) Hur använder du for-slingan för att iterera genom en lista med värden?

    Skapa ett skriptnamn `example.sh`.

    #!/bin/bash

    frukt=(äpplebanan körsbärsdatum)
    för frukt i ${frukter[@]}; do
    echo Aktuell frukt: $fruit
    Gjort

    Förklaring:

    `fruits=`-raden skapar en array som heter frukter med fyra element: äpple, banan, körsbär och datum.

    • för frukt i ${frukter[@]}; do: Den här raden startar en for-loop. Så här betyder varje del:
    • för frukt: Detta deklarerar en loopvariabel som kallas frukt. I varje iteration av loopen kommer frukt att hålla värdet på det aktuella elementet från fruktmatrisen.
    • ${fruits[@]}: Detta är en array-expansion som tar alla element från frukt-arrayen. ${…}-syntaxen säkerställer att varje element behandlas som ett separat objekt.
    • do: Detta nyckelord markerar början av loopkroppen.
    • echo Current fruit: $fruit: Inuti slingan använder den här raden echo-kommandot för att visa det aktuella värdet för loopvariabeln fruit. Den skriver ut ett meddelande som Aktuell frukt: äpple för varje frukt i arrayen.
    • done: Det här nyckelordet markerar slutet på loopkroppen. Det talar om för skriptet att slingan har avslutats.
    för slinga

    för slinga

    12) Skriv ett skalskript som beräknar summan av heltal från 1 till N med hjälp av en slinga.

    Skapa ett skriptnamn `example.sh`.

    #!/bin/bash

    echo Ange ett nummer (N):
    läs N
    summa=0
    för ((i=l; i<=$N; i++)); do
    summa=$((summa + i))
    Gjort
    echo Summan av heltal från 1 till $N är: $summa

    Förklaring:
    Skriptet börjar med att be dig ange ett nummer (N) med hjälp av read. Detta nummer avgör hur många gånger slingan körs.

    1. Variabelsumman initieras till 0. Denna variabel kommer att hålla reda på summan av heltal.
    2. For-slingan börjar med for (( i=1; i<=$N; i++ )). Denna loopstruktur används för att upprepa en uppsättning åtgärder ett visst antal gånger, i det här fallet, från 1 till värdet av N.
    3. Inuti slingan händer dessa saker:
      • i=1 sätter loopvariabeln i till 1 i början av varje iteration.
      • Slingvillkoret i<=$N kontrollerar om i fortfarande är mindre än eller lika med det givna talet N.
      • Om villkoret är sant, exekveras loopkroppen.
      • sum=$((sum + i)) beräknar det nya värdet av summan genom att lägga till det nuvarande värdet av i. Detta summerar heltal från 1 till det nuvarande i-värdet.
    4. Efter varje iteration ökar i++ värdet på i med 1.
    5. Slingan fortsätter att köras tills villkoret i<=$N blir falskt (när i blir större än N).
    6. När loopen är klar visar skriptet summan av heltal från 1 till det angivna talet N.

    439

    13) Skapa ett skript som söker efter ett specifikt ord i en fil och räknar dess förekomster.

    Skapa ett skriptnamn `word_count.sh`

    #!/bin/bash

    echo Ange ordet att söka efter:
    läs target_word
    echo Ange filnamnet:
    läs filnamn
    count=$(grep -o -w $target_word $filnamn | wc -l)
    echo Ordet '$target_word' visas $count gånger i '$filnamn'.

    Förklaring:

    • echo Ange ordet att söka efter:: Denna rad visar ett meddelande som ber användaren att ange ett ord som de vill söka efter i en fil.
    • read target_word: Denna rad läser indata från användaren och lagrar den i en variabel som heter target_word.
    • echo Ange filnamnet:: Denna rad visar ett meddelande som ber användaren att ange namnet på filen de vill söka i.
    • läs filnamn: Denna rad läser indata från användaren och lagrar den i en variabel med namnet filnamn.
    • count=$(grep -o -w $målord $filnamn | wc -l): Den här raden utför skriptets huvudsakliga arbete. Låt oss bryta ner det ytterligare:
      • grep -o -w $target_word $filnamn: Denna del av kommandot söker efter förekomster av target_word i det angivna filnamnet. Alternativen -o och -w säkerställer att endast helordsmatchningar räknas.
      • |: Detta är ett rör som tar utdata från föregående kommando och skickar det som indata till nästa kommando.
      • wc -l: Den här delen av kommandot använder kommandot wc för att räkna antalet rader i inmatningen. Alternativet -l räknar specifikt raderna.
      • Hela kommandot beräknar antalet förekomster av target_word i filen och tilldelar det antalet till variabeln count

    441

    14) Förklara skillnaderna mellan standardutgång (stdout) och standardfel (stderr).

    Huvudskillnaden mellan standardutgång (stdout) och standardfel (stderr) är följande:

    • Standardutgång (stdout): Detta är standardutgångsströmmen dit ett kommandos vanliga utdata går. Det visas på terminalen som standard. Du kan omdirigera den till en fil med>.
    • Standardfel (stderr): Detta är utdataströmmen för felmeddelanden och varningar. Det visas också på terminalen som standard. Du kan omdirigera den till en fil med 2>.

    15) Förklara begreppet villkorliga uttalanden i skalskript.

    Villkorliga uttalanden i skalskript låter oss fatta beslut och kontrollera flödet av vårt manus baserat på vissa förutsättningar. De gör det möjligt för vårt skript att köra olika uppsättningar av kommandon beroende på om ett visst villkor är sant eller falskt. De primära villkorssatserna i skalskript är if-satsen, elif-satsen (valfritt) och else-satsen (valfritt).

    Här är den grundläggande strukturen för ett villkorligt uttalande i skalskript:

    if [villkor]; sedan
    # Kommandon att köra om villkoret är sant
    elif [ another_condition ]; sedan
    # Kommandon att köra om another_condition är sant (valfritt)
    annan
    # Kommandon att köra om inget av villkoren är sant (valfritt)
    vara

    Förklaring:

    • [ condition ] = Kommando som utvärderar villkoret och returnerar en sann (0) eller falsk (icke-noll) utgångsstatus.
    • then = Det är ett nyckelord som indikerar att kommandona efter det kommer att utföras om villkoret utvärderas till sant.
    • elif = (förkortning av else if) Det är ett avsnitt som låter oss specificera ytterligare villkor att kontrollera.
    • else = det är en sektion som innehåller kommandon som kommer att köras om inget av villkoren är sant.
    • fi = Det är ett nyckelord som markerar slutet på det villkorliga blocket.

    16) Hur läser man rader från en fil i ett skalskript?

    Till läsa rader från en fil i ett skalskript kan vi använda olika metoder, men ett vanligt tillvägagångssätt är att använda en while-loop i kombination med läskommandot. Så här kan vi göra det:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Kontrollera om filen finns
    if [ -e $fil ]; sedan
    medan IFS= read -r line; do
    echo Line read: $line
    # Lägg till din bearbetningslogik här
    klar <$fil
    annan
    echo Filen hittades inte: $file
    vara

    Förklaring:

    1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
    2. file=/home/jayeshkumar/jayesh.txt: Den här raden definierar variabelfilen och tilldelar den fullständiga sökvägen till filen jayesh.txt i katalogen /home/jayeshkumar. Ändra den här sökvägen så att den matchar den faktiska sökvägen för filen du vill läsa.
    3. if [ -e $fil ]; then: Den här raden startar en if-sats. Den kontrollerar om filen som anges av variabeln $file existerar. Flaggan -e kontrollerar att filen finns.
    4. medan IFS= read -r line; do: Denna rad initierar en while-loop som läser rader från filen.
      • IFS=: IFS (Internal Field Separator) är satt till ett tomt värde för att bevara inledande och efterföljande mellanslag.
      • read -r line: Detta läser den aktuella raden från filen och lagrar den i variabelraden.
    5. echo Line read: $line: Denna rad skriver ut innehållet i raden som lästes från filen. Variabeln $line innehåller den aktuella radens innehåll.
    6. # Lägg till din bearbetningslogik här: Detta är en platshållarkommentar där du kan lägga till din egen logik för att bearbeta varje rad. Du kan till exempel analysera raden, extrahera information eller utföra specifika åtgärder baserat på innehållet.
    7. done <$file: Detta markerar slutet på while-loopen. < $filen omdirigerar innehållet i filen som ska läsas av loopen.
    8. else: Om filen inte finns (villkoret i if-satsen är falskt), exekverar skriptet koden under else-grenen.
    9. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades.
    10. fi: Denna rad markerar slutet på if-satsen.
    läsa filen

    läsa filen

    Här använde vi ` pwd ` kommando för att hämta sökvägen till aktuell katalog.

    17) Skriv en funktion i ett skalskript som beräknar fakulteten för ett givet tal.

    Här är manusetberäkna faktorvärdetav ett givet nummer.

    #!/bin/bash
    # Definiera en funktion för att beräkna faktorial
    beräkna_faktor() {
    num=$1
    fakta=1
    för ((i=1; i<=tal; i++)); do
    fakta=$((faktum * i))
    Gjort
    echo $fakta
    }
    # Be användaren att ange ett nummer
    echo Ange ett nummer:
    läs input_num
    # Anropa calculate_factorial-funktionen med inmatningsnumret
    factorial_result=$(calculate_fatorial $input_num)
    # Visa det ursprungliga resultatet
    echo Factorial av $input_num är: $factorial_result

    Förklaring:

    1. Skriptet börjar med shebang-raden #!/bin/bash för att specificera tolken.
    2. calculate_fatorial() definieras som en funktion. Det krävs ett argument, num, vilket är talet för vilket faktorvärdet måste beräknas.
    3. Inuti funktionen initieras fakta till 1. Denna variabel lagrar det faktoriella resultatet.
    4. For-slingan itererar från 1 till det givna numret (num). I varje iteration multiplicerar den det aktuella värdet av fakta med loopindexet i.
    5. När slingan är klar innehåller faktavariabeln den beräknade faktorialen.
    6. Skriptet uppmanar användaren att ange ett nummer med läs.
    7. Funktionen calculate_factorial anropas med det av användaren angivna numret, och resultatet lagras i variabeln factorial_result.
    8. Slutligen visar skriptet det beräknade faktoriella resultatet.
    Faktoriell

    Faktoriell

    18) Hur hanterar du signaler som Ctrl+C i ett skalskript?

    I ett skalskript kan du hantera signaler som Ctrl+C (även känd som SIGINT) med kommandot trap. Ctrl+C genererar en SIGINT-signal när användaren trycker på den för att avbryta det pågående skriptet eller programmet. Genom att använda trap-kommandot kan du specificera åtgärder som ska vidtas när en viss signal tas emot. Så här hanterar du signaler som Ctrl+C i ett skalskript:

    #!/bin/bash
    städa() {
    echo Skriptet avbröts. Rensar …
    # Lägg till dina saneringsåtgärder här
    utgång 1
    }
    # Sätt upp en fälla för att anropa rensningsfunktionen när Ctrl+C (SIGINT) tas emot
    fällsanering SIGINT
    # Resten av ditt manus
    eko kör...
    sova 10
    eko Avslutad.

    Att hantera signaler är viktigt för att göra skript robusta och för att säkerställa att de hanterar oväntade avbrott på ett elegant sätt. Du kan anpassa rensningsfunktionen för att matcha dina specifika behov, som att stänga filer, stoppa processer eller logga information innan skriptet avslutas.

    Förklaring:

    1. #!/bin/bash: Denna shebang-rad specificerar tolken som ska användas för att köra skriptet.
    2. cleanup() { … }: Detta definierar en funktion som heter cleanup. Inuti den här funktionen kan du inkludera alla åtgärder som behöver utföras när skriptet avbryts, som att stänga filer, släppa resurser eller utföra andra rensningsuppgifter.
    3. trap cleanup SIGINT: Trappkommandot används för att ställa in en signalhanterare. I det här fallet specificerar den att när SIGINT-signalen (Ctrl+C) tas emot, ska rensningsfunktionen utföras.
    4. echo Running…, sleep 10, echo Finished.: Dessa är bara exempel på kommandon för att simulera exekveringen av ett skript.

    446

    19) Skapa ett skript som letar efter och tar bort dubbletter i en textfil.

    Här är vårt linux-skript där vi tar bort dubbletter från en textfil.

    #!/bin/bash
    input_file=input.txt
    output_file=output.txt
    sortera $indatafil | uniq> $output_file
    echo Duplicerade rader har tagits bort.

    Förklaring:

    1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att skriptet ska tolkas med Bash-skalet.
    2. Variabeln input_file är inställd på namnet på indatafilen som innehåller dubbla rader (ändra detta till ditt faktiska indatafilnamn).
    3. Variabeln output_file är inställd på namnet på utdatafilen där dubbletterna kommer att tas bort (ändra detta till önskat utdatafilnamn).
    4. Skriptet använder sorteringskommandot för att sortera raderna i inmatningsfilen. Sortering av raderna säkerställer att duplicerade rader grupperas tillsammans.
    5. De sorterade raderna skickas sedan genom kommandot uniq, som tar bort på varandra följande dubbletter. Utdata från denna process omdirigeras till utdatafilen.
    6. Efter att dubletterna har tagits bort skrivs ett framgångsmeddelande ut i skriptet.
    dubblettlinje borttagning

    dubblettlinje borttagning

    Här använder vi ` katt ` för att visa texten i textfilen.

    20) Skriv ett skript som genererar ett säkert slumpmässigt lösenord.

    Här är vårt skript för att skapa ett säkert slumpmässigt lösenord.

    #!/bin/bash
    # Funktion för att generera ett slumpmässigt lösenord
    generera lösenord() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Anropa funktionen och lagra det genererade lösenordet
    lösenord=$(generera_lösenord)
    echo Genererat lösenord: $password

    Notera: Användaren kan därför ändra längden på lösenordet genom att ersätta siffran '12'.

    Förklaring:

    1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att det ska tolkas med Bash-skalet.
    2. Generera_lösenord-funktionen är definierad för att generera ett slumpmässigt lösenord. Så här fungerar det:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 bryter de filtrerade slumpmässiga data i rader med bredd 12 tecken vardera.
      • head -n 1 väljer den första raden, vilket ger oss en slumpmässig sekvens av tecken med längden 12.
    3. Lösenordsvariabeln tilldelas resultatet av anrop av funktionen generera_lösenord.
    4. Slutligen visas det genererade lösenordet med hjälp av eko.

    448

    21) Skriv ett skalskript som beräknar den totala storleken på alla filer i en katalog.

    Här är ett skalskript för att beräkna den totala storleken på alla filer i en katalog.

    #!/bin/bash
    katalog=/sökväg/till/din/katalog
    total_size=$(du -csh $katalog | grep totalt | awk '{print $1}')
    echo Total storlek på filer i $katalogen: $total_size

    Förklaring:

    1. Skriptet börjar med #!/bin/bash shebang, vilket indikerar att det ska tolkas med Bash-skalet.
    2. Katalogvariabeln är inställd på sökvägen till den katalog som du vill beräkna den totala filstorleken för. Ersätt /sökväg/till/din/katalog med den faktiska sökvägen.
    3. Kommandot du används för att uppskatta filutrymmesanvändning. Alternativen som används är:
      • -c: Producera en totalsumma.
      • -s: Visa endast den totala storleken på den angivna katalogen.
      • -h: Utskriftsstorlekar i ett läsbart format (t.ex. KB, MB, GB).
    4. Utdata från du skickas till grep total för att filtrera bort raden som innehåller den totala storleken.
    5. awk '{print $1}' används för att extrahera det första fältet (total storlek) från raden.
    6. Den beräknade totala storleken lagras i variabeln total_size.
    7. Slutligen visar skriptet den totala storleken med hjälp av eko.
    Total storlek på filer

    Total storlek på filer

    Här använde vi ` pwd ` kommando för att se den aktuella katalogsökvägen.

    22) Förklara skillnaden mellan if- och elif-satser i skalskript.

    Funktion `om` Staiftement `elif` uttalande
    Syfte Förklara skillnaden mellan if- och elif-satser i skalskript. Tillhandahåller alternativa villkor för att kontrollera när det initiala om-villkoret är falskt.
    användande Används för det ursprungliga skicket. Används efter initialt skick för att kontrollera ytterligare villkor.
    antal block Kan bara ha ett om block. Kan ha flera elif-block, men bara ett annat block (valfritt).
    Avrättning Kör kodblocket som är associerat med if-satsen om villkoret är sant. Om villkoret är falskt exekveras det andra blocket (om det finns) (valfritt). Kontrollerar varje elif-tillstånd i ordning. Om ett elif-villkor är sant, exekveras motsvarande kodblock och skriptet avslutar hela det villkorliga blocket. Om inget av elif-villkoren är sant, exekveras else-blocket (om det finns).
    Kapslade strukturer Kan kapslas i andra if-, elif- eller else-block. Kan inte kapslas i ett annat elif-block, men kan användas i ett if eller else-block.

    Låt oss förstå det med ett exempel.

    #!/bin/bash
    nummer=5
    if [ $nummer -gt 10 ]; sedan
    echo $number är större än 10
    annan
    echo $number är inte större än 10
    vara
    eko ——–
    if [ $nummer -gt 10 ]; sedan
    echo $number är större än 10
    elif [ $number -eq 10 ]; sedan
    echo $nummer är lika med 10
    annan
    echo $number är mindre än 10
    vara

    Förklaring:

    I det här exemplet kontrollerar det första if-blocket om talet är större än 10. Om inte, skrivs ett meddelande ut som indikerar att talet inte är större än 10. Det andra blocket med elif-satser kontrollerar flera villkor sekventiellt tills ett av dem är sant. I det här fallet, eftersom värdet på nummer är 5, blir utdata:

    if_elif skillnad

    if_elif skillnad

    23) Hur använder du en while-loop för att upprepade gånger utföra kommandon?

    En while-loop används i skalskript för att upprepade gånger exekvera en uppsättning kommandon så länge som ett angivet villkor är sant. Slingan fortsätter att utföra kommandona tills villkoret blir falskt.

    Här är den grundläggande syntaxen för en while-loop:

    while [villkor]; do
    # Kommandon som ska köras
    Gjort

    Förklaring:

    1. `while`-loopen börjar med nyckelordet `while` följt av ett villkor inom hakparenteser `[ ]`.
    2. Slingans kropp, som innehåller de kommandon som ska köras, är innesluten av nyckelorden 'do' och 'done'.
    3. Slingan kontrollerar först tillståndet. Om villkoret är sant, exekveras kommandona i loopkroppen. Efter att loopkroppen har körts kontrolleras villkoret igen, och processen upprepas tills villkoret blir falskt.

    Exempel: Om vi ​​vill skriva ut nummer från 1 till 5

    #!/bin/bash
    räknare=1
    medan [ $counter -le 5 ]; do
    echo Number: $counter
    räknare=$((räknare + 1))
    Gjort

    Förklaring:

    • Räknarvariabeln är inställd på 1.
    • While-slingan kontrollerar om värdet på räknaren är mindre än eller lika med 5. Så länge detta villkor är sant, fortsätter loopen att exekvera.
    • Inuti slingan skrivs det aktuella värdet av räknaren ut med hjälp av eko.
    • Räknaren ökas med 1 med uttrycket $((räknare + 1)).
    medan loop

    medan loop

    24) Skapa ett skalskript som hittar och listar alla tomma filer i en katalog.

    Skalskript som du kan använda för att hitta och lista alla tomma filer i en katalog med kommandona `find` och `stat`:

    #!/bin/bash
    katalog=$1″
    if [ -z $katalog ]; sedan
    echo Användning: $0
    utgång 1
    vara

    om [ ! -d $katalog ]; sedan
    echo Error: '$directory' är inte en giltig katalog.
    utgång 1
    vara
    echo Tomma filer i $katalogen:
    hitta $katalog -typ f -tom

    Förklaring:

    1. ` #!/bin/bash `: Detta kallas en shebang, och det säger åt operativsystemet att använda Bash-skalet för att tolka och köra skriptet.
    2. ` katalog=$1″ `: Denna rad tilldelar det första kommandoradsargumentet (betecknat med $1) till variabeln ` katalog `.
    3. ` if [ -z $katalog ]; sedan `: Den här raden startar en if-sats som kontrollerar om ` katalog ` variabeln är tom (-z testar för en tom sträng).
    4. ` echo Användning: $0 `: Om katalogen är tom, skriver den här raden ut ett användningsmeddelande, där ` $0 ` representerar skriptets namn.
    5. ` utgång 1 `: Den här raden avslutar skriptet med exitkoden ` 1 `, vilket indikerar ett fel.
    6. ` vara `: Den här raden markerar slutet på ` om ` uttalande.
    7. ` om [ ! -d $katalog ]; sedan `: Detta startar en annan if-sats för att kontrollera om den tillhandahållna katalogen finns (` -d ` testar för en katalog).
    8. ` echo Error: '$directory' är inte en giltig katalog. `: Om den angivna katalogen inte finns, skrivs ett felmeddelande ut på den här raden.
    9. ` utgång 1 `: Avslutar skriptet med exitkoden ` 1 `.
    10. ` vara `: Markerar slutet på den andra ` om` påstående.
    11. ` echo Tomma filer i $katalogen: `: Om allt är giltigt hittills skrivs ett meddelande ut på den här raden som indikerar att skriptet kommer att lista tomma filer i den angivna katalogen.
    12. ` hitta $katalog -typ f -tom `: Den här raden använder ` hitta ` kommando för att söka efter tomma filer (` -tömma `) av typen vanliga filer (` -typ f `) i den angivna katalogen. Den listar sedan dessa tomma filer.
    Hitta tomma filer

    Hitta tomma filer

    Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/

    25) Vad är syftet med läskommandot i skalskript?

    Läskommandot i skalskriptning låter skriptet be dig om information. Det är som när en dator ställer en fråga till dig och väntar på ditt svar. Detta är användbart för skript som kräver att du skriver något eller när skriptet behöver arbeta med information från filer. Läskommandot hjälper skriptet att stanna och vänta på vad du skriver, och sedan kan det använda den informationen för att göra fler saker i skriptet.

    Syntax för läskommandot:

    read variable_name>

    Exempel : Om vi ​​vill ta namn som en input från användaren för att skriva ut det.

    #!/bin/bash
    echo Vänligen ange ditt namn:
    läsa namn
    echo Hej, $name!

    453

    läs nam

    Sammanfattningsvis används läskommandot för att fånga användarindata eller data från filer i skalskript, vilket gör skripten mer interaktiva och mångsidiga.

    26) Skriv ett skalskript som konverterar alla filnamn i en katalog till gemener.

    Här är ett skalskript som konverterar alla filnamn i en katalog till gemener.

    #!/bin/bash
    katalog=$1″
    if [ -z $katalog ]; sedan
    echo Användning: $0
    utgång 1
    vara

    om [ ! -d $katalog ]; sedan

    echo Error: '$directory' är inte en giltig katalog.
    utgång 1
    vara

    cd $katalog || utgång 1

    för fil i *; do
    if [ -f $fil ]; sedan
    newname=$(eko $fil | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    vara
    Gjort

    Förklaring:

    1. #!/bin/bash : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
    2. katalog=$1″ : Den här raden tilldelar det första kommandoradsargumentet till variabelkatalogen.
    3. if [ -z $katalog ]; sedan : Den här raden kontrollerar om katalogvariabeln är tom (inget argument anges när skriptet körs).
    4. echo Användning: $0 : Om katalogen är tom skriver den här raden ut ett användningsmeddelande med skriptets namn ($0).
    5. utgång 1 : Den här raden avslutar skriptet med utgångskoden 1, vilket indikerar att ett fel har inträffat.
    6. f i: Detta markerar slutet på den första if-satsen.
    7. om [ ! -d $katalog ]; sedan : Den här raden kontrollerar om den angivna katalogen inte finns (-d testar för en katalog).
    8. echo Error: '$directory' är inte en giltig katalog. : Om den angivna katalogen inte finns skrivs ett felmeddelande ut på den här raden.
    9. utgång 1 : Avslutar skriptet med utgångskoden 1.
    10. vara : Markerar slutet av den andra if-satsen.
    11. cd $katalog || utgång 1 : Ändrar den aktuella arbetskatalogen till den angivna katalogen. Om katalogändringen misslyckas (t.ex. en icke-existerande katalog), avslutas skriptet med en felkod.
    12. för fil i *; do: jag för fil i *; do: initierar en loop som itererar över alla objekt i den aktuella katalogen (* matchar alla filnamn).
    13. if [ -f $fil ]; sedan : Kontrollerar om det aktuella loopiterationsobjektet är en vanlig fil (-f testar för en vanlig fil).
    14. newname=$(eko $fil | tr 'A-Z' 'a-z') : Konverterar det aktuella filnamnet ($file) till gemener med kommandot tr och lagrar resultatet i variabeln newname.
    15. [ $file != $newname ] && mv $file $newname : Jämför det ursprungliga filnamnet med det nya filnamnet med gemener. Om de är olika byter den namn på filen med kommandot mv.
    16. vara : Markerar slutet på den inre if-satsen.
    17. Gjort : Markerar slutet av slingan.

    454

    Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/test

    27) Hur kan du använda aritmetiska operationer i ett skalskript?

    Aritmetiska operationer kan utföras inom ett skalskript med olika inbyggda metoder. Skalet tillhandahåller mekanismer för enkla aritmetiska beräkningar med aritmetisk expansion som:

    1. Aritmetisk expansion ($((…)))
    2. Använder kommandot expr
    3. Använder let Command

    Här är vårt Shell-skript som förklarar alla tre metoderna för aritmetiska operationer.

    #!/bin/bash
    num1=10
    num2=5

    #Aritmetisk expansion ($((…)))

    resultat=$((nummer1 + nummer2))
    echo Summa: $result

    #Använda kommandot expr

    summa=$(expr $num1 + $num2)
    echo Summa: $summa

    #Använda let Command

    låt summa = num1 + num2
    echo Summa: $summa

    Förklaring:

    1. `#!/bin/bash` : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
    2. `num1=10` och ` num2=5` : Dessa rader tilldelar värdena 10 och 5 till variablerna ` nummer1 ` och ` nummer2 `, respektive.
    3. `#Aritmetisk expansion ($((...)))` : Detta är en kommentar som indikerar början av avsnittet som visar aritmetisk expansion.
    4. `resultat=$((tal1 + nummer2))` : Den här raden använder aritmetisk expansion för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` resultat ` variabel.
    5. `echo Summa: $resultat` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` resultat ` variabel.
    6. `#Använder kommandot expr` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` expr ` kommando för aritmetiska operationer.
    7. `summa=$(expr $num1 + $num2)` : Den här raden använder ` expr ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` belopp ` variabel. Observera att ` expr ` kommando kräver mellanslag runt operatörerna.
    8. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
    9. `#Använda let Command` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` låta ` kommando för aritmetiska operationer.
    10. 'låt summa = num1 + num2″'. : Den här raden använder ` låta ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och tilldelar resultatet till ` belopp ` variabel. Den ` låta ` kommando kräver inte mellanslag runt operatorerna.
    11. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
    aritmetisk

    aritmetisk

    28) Skapa ett skript som kontrollerar om en nätverksvärd är nåbar.

    Här är ett enkelt skalskript som använder kommandot ping för att kontrollera om en nätverksvärd är tillgänglig:

    #!/bin/bash
    värd=$1″
    if [ -z $värd ]; sedan
    echo Användning: $0
    utgång 1
    vara
    ping -c 4 $host

    om [$? -eq 0]; sedan
    echo $host är tillgänglig.
    annan
    echo $host är inte tillgänglig.
    vara

    Förklaring:

    1. Den tar ett värdnamn eller IP-adress som argument och kontrollerar om argumentet tillhandahålls.
    2. Om inget argument tillhandahålls, visar det ett användningsmeddelande och avslutas.
    3. Den använder kommandot ping med alternativet -c 4 för att skicka fyra ICMP-ekoförfrågningar till den angivna värden.
    4. Efter att ping-kommandot körts kontrollerar det utgångsstatusen ($?). Om utgångsstatusen är 0 betyder det att värden är nåbar och skriptet skriver ut ett framgångsmeddelande. Annars skrivs ett felmeddelande ut.

    456

    Notera : Vi måste ange ett värdnamn som ett argument när vi kör skriptet. Här har vi använt google.com

    29) Skriv ett skalskript för att hitta det bästa elementet i en array:

    Här är ett skalskript för att hitta det bästa elementet i en array.

    #!/bin/bash
    # Deklarera en array
    array=(3 56 24 89 67)

    # Initiera en variabel för att lagra maxvärdet, börja med det första elementet

    max=${array[0]}

    # Iterera genom arrayen

    för num i ${array[@]}; do

    # Jämför varje element med nuvarande maximum

    if ((antal> max)); sedan
    max=$antal
    vara
    Gjort

    # Skriv ut maxvärdet

    echo Det maximala elementet i arrayen är: $max

    Förklaring:

    1. ` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.
    2. ` array=(3 56 24 89 67) `: Arrayen deklareras och initieras med värden.
    3. ` max=${array[0]} `: `max` initieras med det första elementet i arrayen.
    4. ` för num i ${array[@]}; do `: En `for` loop används för att iterera genom elementen i arrayen.
    5. ` if ((antal> max)); sedan `: En `if`-sats kontrollerar om det aktuella elementet `num` är större än det nuvarande maximala `max`.
    6. ` max=$num`: Om`num ` är större än `max`, `max` uppdateras med värdet num.
    7. ` Gjort `: `För`-slingan är stängd.
    8. ` echo Det maximala elementet i arrayen är: $max `: Slutligen skriver skriptet ut det maximala värdet som finns i arrayen.
    461

    största antal

    30) Skriv ett skript för att beräkna summan av element i en matris.

    #!/bin/bash

    # Deklarera en array

    array=(1 65 22 19 94)

    # Initiera en variabel för att lagra summan

    summa=0

    # Iterera genom arrayen och lägg till varje element till summan

    för num i ${array[@]}; do
    am=$((am + am))
    Gjort

    # Skriv ut summan

    echo Summan av element i arrayen är: $summa

    Förklaring:

    ` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.

    ` array=(1 65 22 19 94) `: Arrayen deklareras och initieras med värden.

    ` summa=0 `:` belopp ` initieras till noll för att hålla summan av element.

    ` för num i ${array[@]}; do `: A ` för ` loop används för att iterera genom elementen i arrayen.

    ` am=$((am + am)) `: Inuti slingan, varje element ` på ett ` läggs till i ` belopp ` variabel.

    ` Gjort `: Den ` för `-slingan är stängd.

    `echo Summan av element i arrayen är: $summa`: Slutligen skriver skriptet ut summan av alla element i arrayen.

    462

    Summan av element

    Lär dig mer om Shell-skript

    Slutsats

    Vi alla nördar vet att skalskript är mycket användbart för att öka arbetsproduktiviteten och samtidigt spara tid. Så, i den här artikeln har vi täckt 30 mycket användbara och mest luriga skalskriptexempel . Vi hoppas att den här kompletta guiden om skalskriptexempel hjälper dig att förstå allt om skalskripten.



    ).
  5. utgång 1 : Den här raden avslutar skriptet med utgångskoden 1, vilket indikerar att ett fel har inträffat.
  6. f i: Detta markerar slutet på den första if-satsen.
  7. om [ ! -d $katalog ]; sedan : Den här raden kontrollerar om den angivna katalogen inte finns (-d testar för en katalog).
  8. echo Error: '$directory' är inte en giltig katalog. : Om den angivna katalogen inte finns skrivs ett felmeddelande ut på den här raden.
  9. utgång 1 : Avslutar skriptet med utgångskoden 1.
  10. vara : Markerar slutet av den andra if-satsen.
  11. cd $katalog || utgång 1 : Ändrar den aktuella arbetskatalogen till den angivna katalogen. Om katalogändringen misslyckas (t.ex. en icke-existerande katalog), avslutas skriptet med en felkod.
  12. för fil i *; do: jag för fil i *; do: initierar en loop som itererar över alla objekt i den aktuella katalogen (* matchar alla filnamn).
  13. if [ -f $fil ]; sedan : Kontrollerar om det aktuella loopiterationsobjektet är en vanlig fil (-f testar för en vanlig fil).
  14. newname=$(eko $fil | tr 'A-Z' 'a-z') : Konverterar det aktuella filnamnet ($file) till gemener med kommandot tr och lagrar resultatet i variabeln newname.
  15. [ $file != $newname ] && mv $file $newname : Jämför det ursprungliga filnamnet med det nya filnamnet med gemener. Om de är olika byter den namn på filen med kommandot mv.
  16. vara : Markerar slutet på den inre if-satsen.
  17. Gjort : Markerar slutet av slingan.

454

Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/test

27) Hur kan du använda aritmetiska operationer i ett skalskript?

Aritmetiska operationer kan utföras inom ett skalskript med olika inbyggda metoder. Skalet tillhandahåller mekanismer för enkla aritmetiska beräkningar med aritmetisk expansion som:

  1. Aritmetisk expansion ($((…)))
  2. Använder kommandot expr
  3. Använder let Command

Här är vårt Shell-skript som förklarar alla tre metoderna för aritmetiska operationer.

#!/bin/bash
num1=10
num2=5

räv eller varg

#Aritmetisk expansion ($((…)))

resultat=$((nummer1 + nummer2))
echo Summa: $result

#Använda kommandot expr

summa=$(expr $num1 + $num2)
echo Summa: $summa

#Använda let Command

låt summa = num1 + num2
echo Summa: $summa

Förklaring:

  1. `#!/bin/bash` : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
  2. `num1=10` och ` num2=5` : Dessa rader tilldelar värdena 10 och 5 till variablerna ` nummer1 ` och ` nummer2 `, respektive.
  3. `#Aritmetisk expansion ($((...)))` : Detta är en kommentar som indikerar början av avsnittet som visar aritmetisk expansion.
  4. `resultat=$((tal1 + nummer2))` : Den här raden använder aritmetisk expansion för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` resultat ` variabel.
  5. `echo Summa: $resultat` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` resultat ` variabel.
  6. `#Använder kommandot expr` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` expr ` kommando för aritmetiska operationer.
  7. `summa=$(expr $num1 + $num2)` : Den här raden använder ` expr ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` belopp ` variabel. Observera att ` expr ` kommando kräver mellanslag runt operatörerna.
  8. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
  9. `#Använda let Command` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` låta ` kommando för aritmetiska operationer.
  10. 'låt summa = num1 + num2″'. : Den här raden använder ` låta ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och tilldelar resultatet till ` belopp ` variabel. Den ` låta ` kommando kräver inte mellanslag runt operatorerna.
  11. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
aritmetisk

aritmetisk

28) Skapa ett skript som kontrollerar om en nätverksvärd är nåbar.

Här är ett enkelt skalskript som använder kommandot ping för att kontrollera om en nätverksvärd är tillgänglig:

#!/bin/bash
värd=″
if [ -z $värd ]; sedan
echo Användning:

För alla Linux-distributioner är skalskriptet som en trollstav som automatiserar processen, sparar tid för användare och ökar produktiviteten. Denna handledning för ska skript kommer att introducera dig till 25 plus ska skriptexemplen.

Men innan vi går vidare till ämnet skalskript exempel, låt oss förstå skalskript och de faktiska användningsfallen för skalskript.

Vad är Shell Script?

Tja, skalet är en CLI ( kommandoradstolk ), som körs i ett textfönster där användare kan hantera och utföra skalkommandon. Å andra sidan, processen att skriva en uppsättning kommandon som ska köras på ett Linux-system. En fil som innehåller sådana instruktioner kallas ett bash-skript.

Användning av Shell-skript

Nedan följer några vanliga användningsområden för Shell Script:

  • Uppgiftsautomatisering – Den kan användas för att automatisera repetitiva uppgifter som regelbundna säkerhetskopieringar och programvaruinstallationsuppgifter.
  • Anpassning – Man kan använda skalskript för att designa sin kommandoradsmiljö och enkelt utföra sin uppgift enligt behov.
  • Filhantering - Skalskripten kan också användas för att hantera och manipulera filer och kataloger, som att flytta, kopiera, byta namn på eller ta bort filer.

Shell Script Exempel i Linux

1) Vad indikerar shebang (#!) i början av ett skalskript?

De shebang (#!) i början av ett skript indikerar tolken som ska användas för att köra skriptet. Det talar om för systemet vilket skal eller tolk som ska tolka skriptets kommandon.

Till exempel: Anta att vi har ett skript som heter myscript.sh skrivet i Bash-skalet:

shebang

shebang

I det här exemplet:

  • #!/bin/bash i början av skriptet indikerar att skriptet ska tolkas med Bash-skalet.
  • Ekokommandona används för att skriva ut meddelanden till terminalen.

2) Hur kör du ett skalskript från kommandoraden?

För att köra ett skalskript från kommandoraden måste vi följa dessa steg:

  • Se till att skriptfilen har körbara behörigheter med hjälp av chmod kommando :
chmod +x myscript.sh>
  • Kör skriptet med dess filnamn:
./myscript.sh>

Här måste du byta ut myscrtipt.sh med ditt manusnamn.

3) Skriv ett skalskript som skriver ut techcodeview.com till terminalen.

Skapa ett skriptnamn `myscript.sh` (vi använder ` därför att ` editor, du kan välja vilken editor som helst)

vim myscript.sh>

#!/bin/bash
# Detta skript skriver ut techcodeview.com till terminalen
echo techcodeview.com

Skriv namn

Skriv namn

Vi gör vårt skript körbart genom att använda `chmod +x` och kör sedan med `./myscipt.sh` och få vår önskade utdata techcodeview.com.

4) Förklara syftet med echo-kommandot i skalskript.

De eko kommando används för att visa text eller variabler på terminalen. Det används ofta för att skriva ut meddelanden, variabla värden och generera programutdata.

434

eko kommando

I det här exemplet har vi exekverat `echo` på terminal direkt, eftersom det fungerar på samma sätt i skalskriptet.

5) Hur kan du tilldela ett värde till en variabel i ett skalskript?

Variabler tilldelas värden med hjälp av tilldelningsoperatorn =.

Till exempel:

#!/bin/bash
# Tilldela ett värde till en variabel
namn=Jayesh
ålder=21
echo $name $age

Förklaring:

  • Namnvariabeln tilldelas värdet Jayesh.
  • Åldersvariabeln tilldelas värdet 21.
  • echo används för att skriva ut och `$name` `$age` används för att anropa värdet som lagras i variablerna.

435

6) Skriv ett skalskript som tar en användares namn som indata och hälsar dem välkomna.

Skapa ett skriptnamn `example.sh`.

#!/bin/bash
# Fråga användaren om deras namn
echo Vad heter du?
läs namn
# Hälsa användaren
echo Hej, $name! Trevligt att träffas.

Förklaring:

  • #!/bin/bash: Det här är shebang-linjen. Den säger åt systemet att använda Bash-tolken för att köra skriptet.
  • # Fråga användaren om deras namn: Det här är en kommentar. Det ger sammanhang om den kommande koden. Kommentarer ignoreras av tolken.
  • echo Vad heter du?: Echo-kommandot används för att visa texten med dubbla citattecken på terminalen.
  • read name: Read-kommandot väntar på att användaren matar in text och lagrar den i variabelnamnet.
  • echo Hej, $name! Trevligt att träffa dig.: Den här raden använder ekokommandot för att skriva ut ett hälsningsmeddelande som inkluderar värdet på namnvariabeln, som samlades in från användarens indata.

436

7) Hur lägger man till kommentarer till ett skalskript?

Kommentarer i skalskript används för att ge förklaringar eller sammanhang till koden. De ignoreras av tolken och är endast avsedda för människor som läser manuset. Du kan lägga till kommentarer med #-symbolen.

#!/bin/bash
# Det här är en kommentar som förklarar syftet med skriptet
echo gfg

8) Skapa ett skalskript som kontrollerar om en fil finns i den aktuella katalogen.

Här är ett skript som kontrollerar om en fil med namnet example.txt finns i den aktuella katalogen:

#!/bin/bash
file=example.txt
# Kontrollera om filen finns
if [ -e $fil ]; sedan
echo Filen finns: $file
annan
echo Filen hittades inte: $file
vara

Förklaring:

  1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
  2. file=example.txt: Den här raden definierar variabelfilen och tilldelar den värdet example.txt. Du kan ersätta detta med namnet på filen du vill söka efter.
  3. if [ -e $fil ]; then: Den här raden startar en if-sats. Villkoret [ -e $file ] kontrollerar om filen som anges av värdet på filvariabeln existerar. Flaggan -e används för att kontrollera om filen finns.
  4. echo File exists: $file: Om villkoret är sant (dvs. filen existerar), skrivs ett meddelande ut på den här raden som indikerar att filen existerar, tillsammans med filens namn.
  5. else: Om villkoret är falskt (dvs. filen existerar inte), kör skriptet koden under else-grenen.
  6. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades, tillsammans med filens namn.
  7. fi: Denna rad markerar slutet på if-satsen.
Hittar fil

Hittar fil

9) Vad är skillnaden mellan enkla citattecken (') och dubbla citattecken () i skalskript?

Enkla citattecken (') och dubbla citattecken () används för att omsluta strängar i skalskript, men de har olika beteenden:

  • Enstaka citattecken: Allt mellan enstaka citattecken behandlas som en bokstavlig sträng. Variabelnamn och de flesta specialtecken utökas inte.
  • Dubbla citattecken: Variabler och vissa specialtecken inom dubbla citattecken utökas. Innehållet är föremål för variabel substitution och kommandosubstitution.

#!/bin/bash

abcd=Hej
echo '$abcd' # Utdata: $abcd
echo $abcd # Utgång: Hej

10) Hur kan du använda kommandoradsargument i ett skalskript?

Kommandoradsargument är värden som ges till ett skript när det körs. De kan nås i skriptet med hjälp av speciella variabler som $1, $2, etc., där $1 representerar det första argumentet, $2 representerar det andra argumentet, och så vidare.

Till exempel: Om vårt skriptnamn i `example.sh`

#!/bin/bash

echo Skriptnamn: $0
echo Första argumentet: $1
echo Andra argumentet: $2

Om vi ​​kör skriptet med `.example.sh hello_1 hello_2` kommer det att mata ut:

cli argument

cli argument

11) Hur använder du for-slingan för att iterera genom en lista med värden?

Skapa ett skriptnamn `example.sh`.

#!/bin/bash

frukt=(äpplebanan körsbärsdatum)
för frukt i ${frukter[@]}; do
echo Aktuell frukt: $fruit
Gjort

Förklaring:

`fruits=`-raden skapar en array som heter frukter med fyra element: äpple, banan, körsbär och datum.

  • för frukt i ${frukter[@]}; do: Den här raden startar en for-loop. Så här betyder varje del:
  • för frukt: Detta deklarerar en loopvariabel som kallas frukt. I varje iteration av loopen kommer frukt att hålla värdet på det aktuella elementet från fruktmatrisen.
  • ${fruits[@]}: Detta är en array-expansion som tar alla element från frukt-arrayen. ${…}-syntaxen säkerställer att varje element behandlas som ett separat objekt.
  • do: Detta nyckelord markerar början av loopkroppen.
  • echo Current fruit: $fruit: Inuti slingan använder den här raden echo-kommandot för att visa det aktuella värdet för loopvariabeln fruit. Den skriver ut ett meddelande som Aktuell frukt: äpple för varje frukt i arrayen.
  • done: Det här nyckelordet markerar slutet på loopkroppen. Det talar om för skriptet att slingan har avslutats.
för slinga

för slinga

12) Skriv ett skalskript som beräknar summan av heltal från 1 till N med hjälp av en slinga.

Skapa ett skriptnamn `example.sh`.

#!/bin/bash

echo Ange ett nummer (N):
läs N
summa=0
för ((i=l; i<=$N; i++)); do
summa=$((summa + i))
Gjort
echo Summan av heltal från 1 till $N är: $summa

Förklaring:
Skriptet börjar med att be dig ange ett nummer (N) med hjälp av read. Detta nummer avgör hur många gånger slingan körs.

  1. Variabelsumman initieras till 0. Denna variabel kommer att hålla reda på summan av heltal.
  2. For-slingan börjar med for (( i=1; i<=$N; i++ )). Denna loopstruktur används för att upprepa en uppsättning åtgärder ett visst antal gånger, i det här fallet, från 1 till värdet av N.
  3. Inuti slingan händer dessa saker:
    • i=1 sätter loopvariabeln i till 1 i början av varje iteration.
    • Slingvillkoret i<=$N kontrollerar om i fortfarande är mindre än eller lika med det givna talet N.
    • Om villkoret är sant, exekveras loopkroppen.
    • sum=$((sum + i)) beräknar det nya värdet av summan genom att lägga till det nuvarande värdet av i. Detta summerar heltal från 1 till det nuvarande i-värdet.
  4. Efter varje iteration ökar i++ värdet på i med 1.
  5. Slingan fortsätter att köras tills villkoret i<=$N blir falskt (när i blir större än N).
  6. När loopen är klar visar skriptet summan av heltal från 1 till det angivna talet N.

439

13) Skapa ett skript som söker efter ett specifikt ord i en fil och räknar dess förekomster.

Skapa ett skriptnamn `word_count.sh`

#!/bin/bash

echo Ange ordet att söka efter:
läs target_word
echo Ange filnamnet:
läs filnamn
count=$(grep -o -w $target_word $filnamn | wc -l)
echo Ordet '$target_word' visas $count gånger i '$filnamn'.

Förklaring:

  • echo Ange ordet att söka efter:: Denna rad visar ett meddelande som ber användaren att ange ett ord som de vill söka efter i en fil.
  • read target_word: Denna rad läser indata från användaren och lagrar den i en variabel som heter target_word.
  • echo Ange filnamnet:: Denna rad visar ett meddelande som ber användaren att ange namnet på filen de vill söka i.
  • läs filnamn: Denna rad läser indata från användaren och lagrar den i en variabel med namnet filnamn.
  • count=$(grep -o -w $målord $filnamn | wc -l): Den här raden utför skriptets huvudsakliga arbete. Låt oss bryta ner det ytterligare:
    • grep -o -w $target_word $filnamn: Denna del av kommandot söker efter förekomster av target_word i det angivna filnamnet. Alternativen -o och -w säkerställer att endast helordsmatchningar räknas.
    • |: Detta är ett rör som tar utdata från föregående kommando och skickar det som indata till nästa kommando.
    • wc -l: Den här delen av kommandot använder kommandot wc för att räkna antalet rader i inmatningen. Alternativet -l räknar specifikt raderna.
    • Hela kommandot beräknar antalet förekomster av target_word i filen och tilldelar det antalet till variabeln count

441

14) Förklara skillnaderna mellan standardutgång (stdout) och standardfel (stderr).

Huvudskillnaden mellan standardutgång (stdout) och standardfel (stderr) är följande:

  • Standardutgång (stdout): Detta är standardutgångsströmmen dit ett kommandos vanliga utdata går. Det visas på terminalen som standard. Du kan omdirigera den till en fil med>.
  • Standardfel (stderr): Detta är utdataströmmen för felmeddelanden och varningar. Det visas också på terminalen som standard. Du kan omdirigera den till en fil med 2>.

15) Förklara begreppet villkorliga uttalanden i skalskript.

Villkorliga uttalanden i skalskript låter oss fatta beslut och kontrollera flödet av vårt manus baserat på vissa förutsättningar. De gör det möjligt för vårt skript att köra olika uppsättningar av kommandon beroende på om ett visst villkor är sant eller falskt. De primära villkorssatserna i skalskript är if-satsen, elif-satsen (valfritt) och else-satsen (valfritt).

Här är den grundläggande strukturen för ett villkorligt uttalande i skalskript:

if [villkor]; sedan
# Kommandon att köra om villkoret är sant
elif [ another_condition ]; sedan
# Kommandon att köra om another_condition är sant (valfritt)
annan
# Kommandon att köra om inget av villkoren är sant (valfritt)
vara

Förklaring:

  • [ condition ] = Kommando som utvärderar villkoret och returnerar en sann (0) eller falsk (icke-noll) utgångsstatus.
  • then = Det är ett nyckelord som indikerar att kommandona efter det kommer att utföras om villkoret utvärderas till sant.
  • elif = (förkortning av else if) Det är ett avsnitt som låter oss specificera ytterligare villkor att kontrollera.
  • else = det är en sektion som innehåller kommandon som kommer att köras om inget av villkoren är sant.
  • fi = Det är ett nyckelord som markerar slutet på det villkorliga blocket.

16) Hur läser man rader från en fil i ett skalskript?

Till läsa rader från en fil i ett skalskript kan vi använda olika metoder, men ett vanligt tillvägagångssätt är att använda en while-loop i kombination med läskommandot. Så här kan vi göra det:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Kontrollera om filen finns
if [ -e $fil ]; sedan
medan IFS= read -r line; do
echo Line read: $line
# Lägg till din bearbetningslogik här
klar <$fil
annan
echo Filen hittades inte: $file
vara

Förklaring:

  1. #!/bin/bash: Detta är shebang-raden som specificerar tolken (/bin/bash) som ska användas för att köra skriptet.
  2. file=/home/jayeshkumar/jayesh.txt: Den här raden definierar variabelfilen och tilldelar den fullständiga sökvägen till filen jayesh.txt i katalogen /home/jayeshkumar. Ändra den här sökvägen så att den matchar den faktiska sökvägen för filen du vill läsa.
  3. if [ -e $fil ]; then: Den här raden startar en if-sats. Den kontrollerar om filen som anges av variabeln $file existerar. Flaggan -e kontrollerar att filen finns.
  4. medan IFS= read -r line; do: Denna rad initierar en while-loop som läser rader från filen.
    • IFS=: IFS (Internal Field Separator) är satt till ett tomt värde för att bevara inledande och efterföljande mellanslag.
    • read -r line: Detta läser den aktuella raden från filen och lagrar den i variabelraden.
  5. echo Line read: $line: Denna rad skriver ut innehållet i raden som lästes från filen. Variabeln $line innehåller den aktuella radens innehåll.
  6. # Lägg till din bearbetningslogik här: Detta är en platshållarkommentar där du kan lägga till din egen logik för att bearbeta varje rad. Du kan till exempel analysera raden, extrahera information eller utföra specifika åtgärder baserat på innehållet.
  7. done <$file: Detta markerar slutet på while-loopen. < $filen omdirigerar innehållet i filen som ska läsas av loopen.
  8. else: Om filen inte finns (villkoret i if-satsen är falskt), exekverar skriptet koden under else-grenen.
  9. echo File not found: $file: Denna rad skriver ut ett felmeddelande som indikerar att den angivna filen inte hittades.
  10. fi: Denna rad markerar slutet på if-satsen.
läsa filen

läsa filen

Här använde vi ` pwd ` kommando för att hämta sökvägen till aktuell katalog.

17) Skriv en funktion i ett skalskript som beräknar fakulteten för ett givet tal.

Här är manusetberäkna faktorvärdetav ett givet nummer.

#!/bin/bash
# Definiera en funktion för att beräkna faktorial
beräkna_faktor() {
num=$1
fakta=1
för ((i=1; i<=tal; i++)); do
fakta=$((faktum * i))
Gjort
echo $fakta
}
# Be användaren att ange ett nummer
echo Ange ett nummer:
läs input_num
# Anropa calculate_factorial-funktionen med inmatningsnumret
factorial_result=$(calculate_fatorial $input_num)
# Visa det ursprungliga resultatet
echo Factorial av $input_num är: $factorial_result

Förklaring:

  1. Skriptet börjar med shebang-raden #!/bin/bash för att specificera tolken.
  2. calculate_fatorial() definieras som en funktion. Det krävs ett argument, num, vilket är talet för vilket faktorvärdet måste beräknas.
  3. Inuti funktionen initieras fakta till 1. Denna variabel lagrar det faktoriella resultatet.
  4. For-slingan itererar från 1 till det givna numret (num). I varje iteration multiplicerar den det aktuella värdet av fakta med loopindexet i.
  5. När slingan är klar innehåller faktavariabeln den beräknade faktorialen.
  6. Skriptet uppmanar användaren att ange ett nummer med läs.
  7. Funktionen calculate_factorial anropas med det av användaren angivna numret, och resultatet lagras i variabeln factorial_result.
  8. Slutligen visar skriptet det beräknade faktoriella resultatet.
Faktoriell

Faktoriell

18) Hur hanterar du signaler som Ctrl+C i ett skalskript?

I ett skalskript kan du hantera signaler som Ctrl+C (även känd som SIGINT) med kommandot trap. Ctrl+C genererar en SIGINT-signal när användaren trycker på den för att avbryta det pågående skriptet eller programmet. Genom att använda trap-kommandot kan du specificera åtgärder som ska vidtas när en viss signal tas emot. Så här hanterar du signaler som Ctrl+C i ett skalskript:

#!/bin/bash
städa() {
echo Skriptet avbröts. Rensar …
# Lägg till dina saneringsåtgärder här
utgång 1
}
# Sätt upp en fälla för att anropa rensningsfunktionen när Ctrl+C (SIGINT) tas emot
fällsanering SIGINT
# Resten av ditt manus
eko kör...
sova 10
eko Avslutad.

Att hantera signaler är viktigt för att göra skript robusta och för att säkerställa att de hanterar oväntade avbrott på ett elegant sätt. Du kan anpassa rensningsfunktionen för att matcha dina specifika behov, som att stänga filer, stoppa processer eller logga information innan skriptet avslutas.

Förklaring:

  1. #!/bin/bash: Denna shebang-rad specificerar tolken som ska användas för att köra skriptet.
  2. cleanup() { … }: Detta definierar en funktion som heter cleanup. Inuti den här funktionen kan du inkludera alla åtgärder som behöver utföras när skriptet avbryts, som att stänga filer, släppa resurser eller utföra andra rensningsuppgifter.
  3. trap cleanup SIGINT: Trappkommandot används för att ställa in en signalhanterare. I det här fallet specificerar den att när SIGINT-signalen (Ctrl+C) tas emot, ska rensningsfunktionen utföras.
  4. echo Running…, sleep 10, echo Finished.: Dessa är bara exempel på kommandon för att simulera exekveringen av ett skript.

446

19) Skapa ett skript som letar efter och tar bort dubbletter i en textfil.

Här är vårt linux-skript där vi tar bort dubbletter från en textfil.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sortera $indatafil | uniq> $output_file
echo Duplicerade rader har tagits bort.

Förklaring:

  1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att skriptet ska tolkas med Bash-skalet.
  2. Variabeln input_file är inställd på namnet på indatafilen som innehåller dubbla rader (ändra detta till ditt faktiska indatafilnamn).
  3. Variabeln output_file är inställd på namnet på utdatafilen där dubbletterna kommer att tas bort (ändra detta till önskat utdatafilnamn).
  4. Skriptet använder sorteringskommandot för att sortera raderna i inmatningsfilen. Sortering av raderna säkerställer att duplicerade rader grupperas tillsammans.
  5. De sorterade raderna skickas sedan genom kommandot uniq, som tar bort på varandra följande dubbletter. Utdata från denna process omdirigeras till utdatafilen.
  6. Efter att dubletterna har tagits bort skrivs ett framgångsmeddelande ut i skriptet.
dubblettlinje borttagning

dubblettlinje borttagning

Här använder vi ` katt ` för att visa texten i textfilen.

20) Skriv ett skript som genererar ett säkert slumpmässigt lösenord.

Här är vårt skript för att skapa ett säkert slumpmässigt lösenord.

#!/bin/bash
# Funktion för att generera ett slumpmässigt lösenord
generera lösenord() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Anropa funktionen och lagra det genererade lösenordet
lösenord=$(generera_lösenord)
echo Genererat lösenord: $password

Notera: Användaren kan därför ändra längden på lösenordet genom att ersätta siffran '12'.

Förklaring:

  1. Skriptet börjar med en shebang (#!/bin/bash), vilket indikerar att det ska tolkas med Bash-skalet.
  2. Generera_lösenord-funktionen är definierad för att generera ett slumpmässigt lösenord. Så här fungerar det:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 bryter de filtrerade slumpmässiga data i rader med bredd 12 tecken vardera.
    • head -n 1 väljer den första raden, vilket ger oss en slumpmässig sekvens av tecken med längden 12.
  3. Lösenordsvariabeln tilldelas resultatet av anrop av funktionen generera_lösenord.
  4. Slutligen visas det genererade lösenordet med hjälp av eko.

448

21) Skriv ett skalskript som beräknar den totala storleken på alla filer i en katalog.

Här är ett skalskript för att beräkna den totala storleken på alla filer i en katalog.

#!/bin/bash
katalog=/sökväg/till/din/katalog
total_size=$(du -csh $katalog | grep totalt | awk '{print $1}')
echo Total storlek på filer i $katalogen: $total_size

Förklaring:

  1. Skriptet börjar med #!/bin/bash shebang, vilket indikerar att det ska tolkas med Bash-skalet.
  2. Katalogvariabeln är inställd på sökvägen till den katalog som du vill beräkna den totala filstorleken för. Ersätt /sökväg/till/din/katalog med den faktiska sökvägen.
  3. Kommandot du används för att uppskatta filutrymmesanvändning. Alternativen som används är:
    • -c: Producera en totalsumma.
    • -s: Visa endast den totala storleken på den angivna katalogen.
    • -h: Utskriftsstorlekar i ett läsbart format (t.ex. KB, MB, GB).
  4. Utdata från du skickas till grep total för att filtrera bort raden som innehåller den totala storleken.
  5. awk '{print $1}' används för att extrahera det första fältet (total storlek) från raden.
  6. Den beräknade totala storleken lagras i variabeln total_size.
  7. Slutligen visar skriptet den totala storleken med hjälp av eko.
Total storlek på filer

Total storlek på filer

Här använde vi ` pwd ` kommando för att se den aktuella katalogsökvägen.

22) Förklara skillnaden mellan if- och elif-satser i skalskript.

Funktion `om` Staiftement `elif` uttalande
Syfte Förklara skillnaden mellan if- och elif-satser i skalskript. Tillhandahåller alternativa villkor för att kontrollera när det initiala om-villkoret är falskt.
användande Används för det ursprungliga skicket. Används efter initialt skick för att kontrollera ytterligare villkor.
antal block Kan bara ha ett om block. Kan ha flera elif-block, men bara ett annat block (valfritt).
Avrättning Kör kodblocket som är associerat med if-satsen om villkoret är sant. Om villkoret är falskt exekveras det andra blocket (om det finns) (valfritt). Kontrollerar varje elif-tillstånd i ordning. Om ett elif-villkor är sant, exekveras motsvarande kodblock och skriptet avslutar hela det villkorliga blocket. Om inget av elif-villkoren är sant, exekveras else-blocket (om det finns).
Kapslade strukturer Kan kapslas i andra if-, elif- eller else-block. Kan inte kapslas i ett annat elif-block, men kan användas i ett if eller else-block.

Låt oss förstå det med ett exempel.

#!/bin/bash
nummer=5
if [ $nummer -gt 10 ]; sedan
echo $number är större än 10
annan
echo $number är inte större än 10
vara
eko ——–
if [ $nummer -gt 10 ]; sedan
echo $number är större än 10
elif [ $number -eq 10 ]; sedan
echo $nummer är lika med 10
annan
echo $number är mindre än 10
vara

Förklaring:

I det här exemplet kontrollerar det första if-blocket om talet är större än 10. Om inte, skrivs ett meddelande ut som indikerar att talet inte är större än 10. Det andra blocket med elif-satser kontrollerar flera villkor sekventiellt tills ett av dem är sant. I det här fallet, eftersom värdet på nummer är 5, blir utdata:

if_elif skillnad

if_elif skillnad

23) Hur använder du en while-loop för att upprepade gånger utföra kommandon?

En while-loop används i skalskript för att upprepade gånger exekvera en uppsättning kommandon så länge som ett angivet villkor är sant. Slingan fortsätter att utföra kommandona tills villkoret blir falskt.

Här är den grundläggande syntaxen för en while-loop:

while [villkor]; do
# Kommandon som ska köras
Gjort

Förklaring:

  1. `while`-loopen börjar med nyckelordet `while` följt av ett villkor inom hakparenteser `[ ]`.
  2. Slingans kropp, som innehåller de kommandon som ska köras, är innesluten av nyckelorden 'do' och 'done'.
  3. Slingan kontrollerar först tillståndet. Om villkoret är sant, exekveras kommandona i loopkroppen. Efter att loopkroppen har körts kontrolleras villkoret igen, och processen upprepas tills villkoret blir falskt.

Exempel: Om vi ​​vill skriva ut nummer från 1 till 5

#!/bin/bash
räknare=1
medan [ $counter -le 5 ]; do
echo Number: $counter
räknare=$((räknare + 1))
Gjort

Förklaring:

  • Räknarvariabeln är inställd på 1.
  • While-slingan kontrollerar om värdet på räknaren är mindre än eller lika med 5. Så länge detta villkor är sant, fortsätter loopen att exekvera.
  • Inuti slingan skrivs det aktuella värdet av räknaren ut med hjälp av eko.
  • Räknaren ökas med 1 med uttrycket $((räknare + 1)).
medan loop

medan loop

24) Skapa ett skalskript som hittar och listar alla tomma filer i en katalog.

Skalskript som du kan använda för att hitta och lista alla tomma filer i en katalog med kommandona `find` och `stat`:

#!/bin/bash
katalog=$1″
if [ -z $katalog ]; sedan
echo Användning: $0
utgång 1
vara

om [ ! -d $katalog ]; sedan
echo Error: '$directory' är inte en giltig katalog.
utgång 1
vara
echo Tomma filer i $katalogen:
hitta $katalog -typ f -tom

Förklaring:

  1. ` #!/bin/bash `: Detta kallas en shebang, och det säger åt operativsystemet att använda Bash-skalet för att tolka och köra skriptet.
  2. ` katalog=$1″ `: Denna rad tilldelar det första kommandoradsargumentet (betecknat med $1) till variabeln ` katalog `.
  3. ` if [ -z $katalog ]; sedan `: Den här raden startar en if-sats som kontrollerar om ` katalog ` variabeln är tom (-z testar för en tom sträng).
  4. ` echo Användning: $0 `: Om katalogen är tom, skriver den här raden ut ett användningsmeddelande, där ` $0 ` representerar skriptets namn.
  5. ` utgång 1 `: Den här raden avslutar skriptet med exitkoden ` 1 `, vilket indikerar ett fel.
  6. ` vara `: Den här raden markerar slutet på ` om ` uttalande.
  7. ` om [ ! -d $katalog ]; sedan `: Detta startar en annan if-sats för att kontrollera om den tillhandahållna katalogen finns (` -d ` testar för en katalog).
  8. ` echo Error: '$directory' är inte en giltig katalog. `: Om den angivna katalogen inte finns, skrivs ett felmeddelande ut på den här raden.
  9. ` utgång 1 `: Avslutar skriptet med exitkoden ` 1 `.
  10. ` vara `: Markerar slutet på den andra ` om` påstående.
  11. ` echo Tomma filer i $katalogen: `: Om allt är giltigt hittills skrivs ett meddelande ut på den här raden som indikerar att skriptet kommer att lista tomma filer i den angivna katalogen.
  12. ` hitta $katalog -typ f -tom `: Den här raden använder ` hitta ` kommando för att söka efter tomma filer (` -tömma `) av typen vanliga filer (` -typ f `) i den angivna katalogen. Den listar sedan dessa tomma filer.
Hitta tomma filer

Hitta tomma filer

Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/

25) Vad är syftet med läskommandot i skalskript?

Läskommandot i skalskriptning låter skriptet be dig om information. Det är som när en dator ställer en fråga till dig och väntar på ditt svar. Detta är användbart för skript som kräver att du skriver något eller när skriptet behöver arbeta med information från filer. Läskommandot hjälper skriptet att stanna och vänta på vad du skriver, och sedan kan det använda den informationen för att göra fler saker i skriptet.

Syntax för läskommandot:

read variable_name>

Exempel : Om vi ​​vill ta namn som en input från användaren för att skriva ut det.

#!/bin/bash
echo Vänligen ange ditt namn:
läsa namn
echo Hej, $name!

453

läs nam

Sammanfattningsvis används läskommandot för att fånga användarindata eller data från filer i skalskript, vilket gör skripten mer interaktiva och mångsidiga.

26) Skriv ett skalskript som konverterar alla filnamn i en katalog till gemener.

Här är ett skalskript som konverterar alla filnamn i en katalog till gemener.

#!/bin/bash
katalog=$1″
if [ -z $katalog ]; sedan
echo Användning: $0
utgång 1
vara

om [ ! -d $katalog ]; sedan

echo Error: '$directory' är inte en giltig katalog.
utgång 1
vara

cd $katalog || utgång 1

för fil i *; do
if [ -f $fil ]; sedan
newname=$(eko $fil | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
vara
Gjort

Förklaring:

  1. #!/bin/bash : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
  2. katalog=$1″ : Den här raden tilldelar det första kommandoradsargumentet till variabelkatalogen.
  3. if [ -z $katalog ]; sedan : Den här raden kontrollerar om katalogvariabeln är tom (inget argument anges när skriptet körs).
  4. echo Användning: $0 : Om katalogen är tom skriver den här raden ut ett användningsmeddelande med skriptets namn ($0).
  5. utgång 1 : Den här raden avslutar skriptet med utgångskoden 1, vilket indikerar att ett fel har inträffat.
  6. f i: Detta markerar slutet på den första if-satsen.
  7. om [ ! -d $katalog ]; sedan : Den här raden kontrollerar om den angivna katalogen inte finns (-d testar för en katalog).
  8. echo Error: '$directory' är inte en giltig katalog. : Om den angivna katalogen inte finns skrivs ett felmeddelande ut på den här raden.
  9. utgång 1 : Avslutar skriptet med utgångskoden 1.
  10. vara : Markerar slutet av den andra if-satsen.
  11. cd $katalog || utgång 1 : Ändrar den aktuella arbetskatalogen till den angivna katalogen. Om katalogändringen misslyckas (t.ex. en icke-existerande katalog), avslutas skriptet med en felkod.
  12. för fil i *; do: jag för fil i *; do: initierar en loop som itererar över alla objekt i den aktuella katalogen (* matchar alla filnamn).
  13. if [ -f $fil ]; sedan : Kontrollerar om det aktuella loopiterationsobjektet är en vanlig fil (-f testar för en vanlig fil).
  14. newname=$(eko $fil | tr 'A-Z' 'a-z') : Konverterar det aktuella filnamnet ($file) till gemener med kommandot tr och lagrar resultatet i variabeln newname.
  15. [ $file != $newname ] && mv $file $newname : Jämför det ursprungliga filnamnet med det nya filnamnet med gemener. Om de är olika byter den namn på filen med kommandot mv.
  16. vara : Markerar slutet på den inre if-satsen.
  17. Gjort : Markerar slutet av slingan.

454

Notera : Vi måste tillhandahålla en katalog som ett argument när vi kör skriptet. Här har vi använt sökvägen till aktuell katalog home/jayeshkumar/test

27) Hur kan du använda aritmetiska operationer i ett skalskript?

Aritmetiska operationer kan utföras inom ett skalskript med olika inbyggda metoder. Skalet tillhandahåller mekanismer för enkla aritmetiska beräkningar med aritmetisk expansion som:

  1. Aritmetisk expansion ($((…)))
  2. Använder kommandot expr
  3. Använder let Command

Här är vårt Shell-skript som förklarar alla tre metoderna för aritmetiska operationer.

#!/bin/bash
num1=10
num2=5

#Aritmetisk expansion ($((…)))

resultat=$((nummer1 + nummer2))
echo Summa: $result

#Använda kommandot expr

summa=$(expr $num1 + $num2)
echo Summa: $summa

#Använda let Command

låt summa = num1 + num2
echo Summa: $summa

Förklaring:

  1. `#!/bin/bash` : Detta är shebang, som anger att skriptet ska tolkas med Bash-skalet.
  2. `num1=10` och ` num2=5` : Dessa rader tilldelar värdena 10 och 5 till variablerna ` nummer1 ` och ` nummer2 `, respektive.
  3. `#Aritmetisk expansion ($((...)))` : Detta är en kommentar som indikerar början av avsnittet som visar aritmetisk expansion.
  4. `resultat=$((tal1 + nummer2))` : Den här raden använder aritmetisk expansion för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` resultat ` variabel.
  5. `echo Summa: $resultat` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` resultat ` variabel.
  6. `#Använder kommandot expr` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` expr ` kommando för aritmetiska operationer.
  7. `summa=$(expr $num1 + $num2)` : Den här raden använder ` expr ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och lagrar resultatet i ` belopp ` variabel. Observera att ` expr ` kommando kräver mellanslag runt operatörerna.
  8. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
  9. `#Använda let Command` : Det här är en kommentar som indikerar början av avsnittet som visar hur du använder ` låta ` kommando för aritmetiska operationer.
  10. 'låt summa = num1 + num2″'. : Den här raden använder ` låta ` kommando för att beräkna summan av ` nummer1 ` och ` nummer2 ` och tilldelar resultatet till ` belopp ` variabel. Den ` låta ` kommando kräver inte mellanslag runt operatorerna.
  11. `echo Summa: $summa` : Den här raden skriver ut den beräknade summan med värdet som lagrats i ` belopp ` variabel.
aritmetisk

aritmetisk

28) Skapa ett skript som kontrollerar om en nätverksvärd är nåbar.

Här är ett enkelt skalskript som använder kommandot ping för att kontrollera om en nätverksvärd är tillgänglig:

#!/bin/bash
värd=$1″
if [ -z $värd ]; sedan
echo Användning: $0
utgång 1
vara
ping -c 4 $host

om [$? -eq 0]; sedan
echo $host är tillgänglig.
annan
echo $host är inte tillgänglig.
vara

Förklaring:

  1. Den tar ett värdnamn eller IP-adress som argument och kontrollerar om argumentet tillhandahålls.
  2. Om inget argument tillhandahålls, visar det ett användningsmeddelande och avslutas.
  3. Den använder kommandot ping med alternativet -c 4 för att skicka fyra ICMP-ekoförfrågningar till den angivna värden.
  4. Efter att ping-kommandot körts kontrollerar det utgångsstatusen ($?). Om utgångsstatusen är 0 betyder det att värden är nåbar och skriptet skriver ut ett framgångsmeddelande. Annars skrivs ett felmeddelande ut.

456

Notera : Vi måste ange ett värdnamn som ett argument när vi kör skriptet. Här har vi använt google.com

29) Skriv ett skalskript för att hitta det bästa elementet i en array:

Här är ett skalskript för att hitta det bästa elementet i en array.

#!/bin/bash
# Deklarera en array
array=(3 56 24 89 67)

# Initiera en variabel för att lagra maxvärdet, börja med det första elementet

max=${array[0]}

# Iterera genom arrayen

för num i ${array[@]}; do

# Jämför varje element med nuvarande maximum

if ((antal> max)); sedan
max=$antal
vara
Gjort

# Skriv ut maxvärdet

echo Det maximala elementet i arrayen är: $max

Förklaring:

  1. ` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.
  2. ` array=(3 56 24 89 67) `: Arrayen deklareras och initieras med värden.
  3. ` max=${array[0]} `: `max` initieras med det första elementet i arrayen.
  4. ` för num i ${array[@]}; do `: En `for` loop används för att iterera genom elementen i arrayen.
  5. ` if ((antal> max)); sedan `: En `if`-sats kontrollerar om det aktuella elementet `num` är större än det nuvarande maximala `max`.
  6. ` max=$num`: Om`num ` är större än `max`, `max` uppdateras med värdet num.
  7. ` Gjort `: `För`-slingan är stängd.
  8. ` echo Det maximala elementet i arrayen är: $max `: Slutligen skriver skriptet ut det maximala värdet som finns i arrayen.
461

största antal

30) Skriv ett skript för att beräkna summan av element i en matris.

#!/bin/bash

# Deklarera en array

array=(1 65 22 19 94)

# Initiera en variabel för att lagra summan

summa=0

# Iterera genom arrayen och lägg till varje element till summan

för num i ${array[@]}; do
am=$((am + am))
Gjort

# Skriv ut summan

echo Summan av element i arrayen är: $summa

Förklaring:

` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.

` array=(1 65 22 19 94) `: Arrayen deklareras och initieras med värden.

` summa=0 `:` belopp ` initieras till noll för att hålla summan av element.

` för num i ${array[@]}; do `: A ` för ` loop används för att iterera genom elementen i arrayen.

` am=$((am + am)) `: Inuti slingan, varje element ` på ett ` läggs till i ` belopp ` variabel.

` Gjort `: Den ` för `-slingan är stängd.

`echo Summan av element i arrayen är: $summa`: Slutligen skriver skriptet ut summan av alla element i arrayen.

462

Summan av element

Lär dig mer om Shell-skript

Slutsats

Vi alla nördar vet att skalskript är mycket användbart för att öka arbetsproduktiviteten och samtidigt spara tid. Så, i den här artikeln har vi täckt 30 mycket användbara och mest luriga skalskriptexempel . Vi hoppas att den här kompletta guiden om skalskriptexempel hjälper dig att förstå allt om skalskripten.




utgång 1
vara
ping -c 4 $host

om [$? -eq 0]; sedan
echo $host är tillgänglig.
annan
echo $host är inte tillgänglig.
vara

struktur i datastruktur

Förklaring:

  1. Den tar ett värdnamn eller IP-adress som argument och kontrollerar om argumentet tillhandahålls.
  2. Om inget argument tillhandahålls, visar det ett användningsmeddelande och avslutas.
  3. Den använder kommandot ping med alternativet -c 4 för att skicka fyra ICMP-ekoförfrågningar till den angivna värden.
  4. Efter att ping-kommandot körts kontrollerar det utgångsstatusen ($?). Om utgångsstatusen är 0 betyder det att värden är nåbar och skriptet skriver ut ett framgångsmeddelande. Annars skrivs ett felmeddelande ut.

456

Notera : Vi måste ange ett värdnamn som ett argument när vi kör skriptet. Här har vi använt google.com

29) Skriv ett skalskript för att hitta det bästa elementet i en array:

Här är ett skalskript för att hitta det bästa elementet i en array.

#!/bin/bash
# Deklarera en array
array=(3 56 24 89 67)

# Initiera en variabel för att lagra maxvärdet, börja med det första elementet

max=${array[0]}

# Iterera genom arrayen

för num i ${array[@]}; do

# Jämför varje element med nuvarande maximum

if ((antal> max)); sedan
max=$antal
vara
Gjort

# Skriv ut maxvärdet

echo Det maximala elementet i arrayen är: $max

Förklaring:

  1. ` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.
  2. ` array=(3 56 24 89 67) `: Arrayen deklareras och initieras med värden.
  3. ` max=${array[0]} `: `max` initieras med det första elementet i arrayen.
  4. ` för num i ${array[@]}; do `: En `for` loop används för att iterera genom elementen i arrayen.
  5. ` if ((antal> max)); sedan `: En `if`-sats kontrollerar om det aktuella elementet `num` är större än det nuvarande maximala `max`.
  6. ` max=$num`: Om`num ` är större än `max`, `max` uppdateras med värdet num.
  7. ` Gjort `: `För`-slingan är stängd.
  8. ` echo Det maximala elementet i arrayen är: $max `: Slutligen skriver skriptet ut det maximala värdet som finns i arrayen.
461

största antal

30) Skriv ett skript för att beräkna summan av element i en matris.

#!/bin/bash

# Deklarera en array

array=(1 65 22 19 94)

# Initiera en variabel för att lagra summan

summa=0

# Iterera genom arrayen och lägg till varje element till summan

för num i ${array[@]}; do
am=$((am + am))
Gjort

# Skriv ut summan

echo Summan av element i arrayen är: $summa

Förklaring:

` #!/bin/bash `: Shebang-raden anger att skriptet ska tolkas med Bash-skalet.

` array=(1 65 22 19 94) `: Arrayen deklareras och initieras med värden.

` summa=0 `:` belopp ` initieras till noll för att hålla summan av element.

` för num i ${array[@]}; do `: A ` för ` loop används för att iterera genom elementen i arrayen.

` am=$((am + am)) `: Inuti slingan, varje element ` på ett ` läggs till i ` belopp ` variabel.

` Gjort `: Den ` för `-slingan är stängd.

`echo Summan av element i arrayen är: $summa`: Slutligen skriver skriptet ut summan av alla element i arrayen.

462

Summan av element

Lär dig mer om Shell-skript

Slutsats

Vi alla nördar vet att skalskript är mycket användbart för att öka arbetsproduktiviteten och samtidigt spara tid. Så, i den här artikeln har vi täckt 30 mycket användbara och mest luriga skalskriptexempel . Vi hoppas att den här kompletta guiden om skalskriptexempel hjälper dig att förstå allt om skalskripten.