logo

Shell Script eksempler

For alle Linux-distributioner er shell-scriptet som en tryllestav, der automatiserer processen, sparer brugere tid og øger produktiviteten. Denne skal scripting tutorial vil introducere dig til de 25 plus skal scripting eksempler.

Men før vi går videre til emnet shell scripting eksempler, lad os forstå shell-script og de faktiske anvendelsestilfælde af shell-scripting.

Hvad er Shell Script?

Nå, skallen er en CLI ( kommandolinjefortolker ), som kører i et tekstvindue, hvor brugere kan administrere og udføre shell-kommandoer. På den anden side, processen med at skrive et sæt kommandoer, der skal udføres på et Linux-system. En fil, der indeholder sådanne instruktioner, kaldes et bash-script.



Brug af Shell Scripts

Nedenfor er nogle almindelige anvendelser af Shell Script:

  • Opgaveautomatisering – Det kan bruges til at automatisere gentagne opgaver som almindelige sikkerhedskopier og softwareinstallationsopgaver.
  • Tilpasning – Man kan bruge shell-scripts til at designe sit kommandolinjemiljø og nemt udføre sin opgave efter behov.
  • Filhåndtering – Shell-scripts kan også bruges til at administrere og manipulere filer og mapper, såsom flytning, kopiering, omdøbning eller sletning af filer.

Shell Script eksempler i Linux

1) Hvad indikerer shebang (#!) i begyndelsen af ​​et shell-script?

Det shebang (#!) i begyndelsen af ​​et script angiver den fortolker, der skal bruges til at udføre scriptet. Det fortæller systemet, hvilken shell eller fortolker der skal fortolke scriptets kommandoer.

For eksempel: Antag, at vi har et script ved navn myscript.sh skrevet i Bash-skallen:

hvordan opfandt skolen
shebang

shebang

I dette eksempel:

  • #!/bin/bash i begyndelsen af ​​scriptet indikerer, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  • Ekkokommandoerne bruges til at udskrive beskeder til terminalen.

2) Hvordan kører du et shell-script fra kommandolinjen?

For at køre et shell-script fra kommandolinjen skal vi følge disse trin:

  • Sørg for, at scriptfilen har eksekverbare tilladelser ved hjælp af chmod kommando :
chmod +x myscript.sh>
  • Udfør scriptet med dets filnavn:
./myscript.sh>

Her skal du udskifte myscrtipt.sh med dit manuskriptnavn.

3) Skriv et shell-script, der udskriver techcodeview.com til terminalen.

Opret et scriptnavn `myscript.sh` (vi bruger ` fordi ` editor, du kan vælge enhver editor)

vim myscript.sh>

#!/bin/bash
# Dette script udskriver techcodeview.com til terminalen
echo techcodeview.com

Print navn

Print navn

Vi gør vores script eksekverbart ved at bruge `chmod +x`, kør derefter med `./myscipt.sh` og få vores ønskede output techcodeview.com.

4) Forklar formålet med echo-kommandoen i shell-scripting.

Det ekko kommando bruges til at vise tekst eller variabler på terminalen. Det bruges almindeligvis til udskrivning af meddelelser, variable værdier og generering af programoutput.

434

ekko kommando

I dette eksempel har vi eksekveret `echo` på terminalen direkte, da det fungerer på samme måde inde i shell-scriptet.

5) Hvordan kan du tildele en værdi til en variabel i et shell-script?

Variabler tildeles værdier ved hjælp af tildelingsoperatoren =.

For eksempel:

#!/bin/bash
# Tildeling af en værdi til en variabel
navn=Jayesh
alder=21
echo $navn $age

Forklaring:

  • Navnevariablen tildeles værdien Jayesh.
  • Aldersvariablen tildeles værdien 21.
  • echo bruges til at udskrive og `$name` `$age` bruges til at kalde værdien gemt i variablerne.

435

6) Skriv et shell-script, der tager en brugers navn som input og hilser på dem.

Opret et scriptnavn `example.sh`.

#!/bin/bash
# Spørg brugeren om deres navn
echo Hvad er dit navn?
læs navn
# Hils brugeren
echo Hej, $navn! Dejligt at møde dig.

Forklaring:

  • #!/bin/bash: Dette er shebang-linjen. Det fortæller systemet at bruge Bash-fortolkeren til at udføre scriptet.
  • # Spørg brugeren om deres navn: Dette er en kommentar. Det giver kontekst om den kommende kode. Kommentarer ignoreres af tolken.
  • echo Hvad er dit navn?: Echo-kommandoen bruges til at vise teksten i dobbelte anførselstegn på terminalen.
  • read name: Read-kommandoen venter på, at brugeren indtaster tekst og gemmer den i variabelnavnet.
  • echo Hej, $navn! Rart at møde dig.: Denne linje bruger ekko-kommandoen til at udskrive en hilsen, der inkluderer værdien af ​​navnevariablen, som blev indsamlet fra brugerens input.

436

7) Hvordan tilføjer du kommentarer til et shell-script?

Kommentarer i shell-scripting bruges til at give forklaringer eller kontekst til koden. De ignoreres af tolken og er kun beregnet til mennesker, der læser manuskriptet. Du kan tilføje kommentarer ved at bruge #-symbolet.

#!/bin/bash
# Dette er en kommentar, der forklarer formålet med scriptet
ekko gfg

8) Opret et shell-script, der kontrollerer, om der findes en fil i den aktuelle mappe.

Her er et script, der kontrollerer, om en fil med navnet example.txt findes i den aktuelle mappe:

#!/bin/bash
file=example.txt
# Tjek om filen findes
if [ -e $fil ]; derefter
echo Filen findes: $file
andet
echo Filen blev ikke fundet: $fil
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
  2. file=example.txt: Denne linje definerer variabelfilen og tildeler værdien example.txt til den. Du kan erstatte dette med navnet på den fil, du vil søge efter.
  3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Betingelsen [-e $file] kontrollerer, om filen, der er angivet af værdien af ​​filvariablen, eksisterer. Flaget -e bruges til at kontrollere, om filen eksisterer.
  4. echo File exists: $file: Hvis betingelsen er sand (dvs. filen eksisterer), udskriver denne linje en meddelelse, der angiver, at filen eksisterer, sammen med filens navn.
  5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), udfører scriptet koden under else-grenen.
  6. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der angiver, at den angivne fil ikke blev fundet, sammen med filens navn.
  7. fi: Denne linje markerer slutningen af ​​if-sætningen.
Finder fil

Finder fil

9) Hvad er forskellen mellem enkelte anførselstegn (') og dobbelte anførselstegn () i shell-scripting?

Enkelte anførselstegn (') og dobbelte anførselstegn () bruges til at omslutte strenge i shell-scripting, men de har forskellig adfærd:

  • Enkelte citater: Alt mellem enkelte citater behandles som en bogstavelig streng. Variabelnavne og de fleste specialtegn udvides ikke.
  • Dobbelte anførselstegn: Variabler og visse specialtegn inden for dobbelte anførselstegn udvides. Indholdet er underlagt variabel substitution og kommandosubstitution.

#!/bin/bash

abcd=Hej
echo '$abcd' # Output: $abcd
echo $abcd # Output: Hej

10) Hvordan kan du bruge kommandolinjeargumenter i et shell-script?

Kommandolinjeargumenter er værdier, der leveres til et script, når det udføres. De kan tilgås i scriptet ved hjælp af specielle variabler som , osv., hvor repræsenterer det første argument, repræsenterer det andet argument, og så videre.

For eksempel: Hvis vores scriptnavn i `eksempel.sh`

#!/bin/bash

echo Script navn:

For alle Linux-distributioner er shell-scriptet som en tryllestav, der automatiserer processen, sparer brugere tid og øger produktiviteten. Denne skal scripting tutorial vil introducere dig til de 25 plus skal scripting eksempler.

Men før vi går videre til emnet shell scripting eksempler, lad os forstå shell-script og de faktiske anvendelsestilfælde af shell-scripting.

Hvad er Shell Script?

Nå, skallen er en CLI ( kommandolinjefortolker ), som kører i et tekstvindue, hvor brugere kan administrere og udføre shell-kommandoer. På den anden side, processen med at skrive et sæt kommandoer, der skal udføres på et Linux-system. En fil, der indeholder sådanne instruktioner, kaldes et bash-script.

Brug af Shell Scripts

Nedenfor er nogle almindelige anvendelser af Shell Script:

  • Opgaveautomatisering – Det kan bruges til at automatisere gentagne opgaver som almindelige sikkerhedskopier og softwareinstallationsopgaver.
  • Tilpasning – Man kan bruge shell-scripts til at designe sit kommandolinjemiljø og nemt udføre sin opgave efter behov.
  • Filhåndtering – Shell-scripts kan også bruges til at administrere og manipulere filer og mapper, såsom flytning, kopiering, omdøbning eller sletning af filer.

Shell Script eksempler i Linux

1) Hvad indikerer shebang (#!) i begyndelsen af ​​et shell-script?

Det shebang (#!) i begyndelsen af ​​et script angiver den fortolker, der skal bruges til at udføre scriptet. Det fortæller systemet, hvilken shell eller fortolker der skal fortolke scriptets kommandoer.

For eksempel: Antag, at vi har et script ved navn myscript.sh skrevet i Bash-skallen:

shebang

shebang

I dette eksempel:

  • #!/bin/bash i begyndelsen af ​​scriptet indikerer, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  • Ekkokommandoerne bruges til at udskrive beskeder til terminalen.

2) Hvordan kører du et shell-script fra kommandolinjen?

For at køre et shell-script fra kommandolinjen skal vi følge disse trin:

  • Sørg for, at scriptfilen har eksekverbare tilladelser ved hjælp af chmod kommando :
chmod +x myscript.sh>
  • Udfør scriptet med dets filnavn:
./myscript.sh>

Her skal du udskifte myscrtipt.sh med dit manuskriptnavn.

3) Skriv et shell-script, der udskriver techcodeview.com til terminalen.

Opret et scriptnavn `myscript.sh` (vi bruger ` fordi ` editor, du kan vælge enhver editor)

vim myscript.sh>

#!/bin/bash
# Dette script udskriver techcodeview.com til terminalen
echo techcodeview.com

Print navn

Print navn

Vi gør vores script eksekverbart ved at bruge `chmod +x`, kør derefter med `./myscipt.sh` og få vores ønskede output techcodeview.com.

4) Forklar formålet med echo-kommandoen i shell-scripting.

Det ekko kommando bruges til at vise tekst eller variabler på terminalen. Det bruges almindeligvis til udskrivning af meddelelser, variable værdier og generering af programoutput.

434

ekko kommando

I dette eksempel har vi eksekveret `echo` på terminalen direkte, da det fungerer på samme måde inde i shell-scriptet.

5) Hvordan kan du tildele en værdi til en variabel i et shell-script?

Variabler tildeles værdier ved hjælp af tildelingsoperatoren =.

For eksempel:

#!/bin/bash
# Tildeling af en værdi til en variabel
navn=Jayesh
alder=21
echo $navn $age

Forklaring:

  • Navnevariablen tildeles værdien Jayesh.
  • Aldersvariablen tildeles værdien 21.
  • echo bruges til at udskrive og `$name` `$age` bruges til at kalde værdien gemt i variablerne.

435

6) Skriv et shell-script, der tager en brugers navn som input og hilser på dem.

Opret et scriptnavn `example.sh`.

#!/bin/bash
# Spørg brugeren om deres navn
echo Hvad er dit navn?
læs navn
# Hils brugeren
echo Hej, $navn! Dejligt at møde dig.

Forklaring:

  • #!/bin/bash: Dette er shebang-linjen. Det fortæller systemet at bruge Bash-fortolkeren til at udføre scriptet.
  • # Spørg brugeren om deres navn: Dette er en kommentar. Det giver kontekst om den kommende kode. Kommentarer ignoreres af tolken.
  • echo Hvad er dit navn?: Echo-kommandoen bruges til at vise teksten i dobbelte anførselstegn på terminalen.
  • read name: Read-kommandoen venter på, at brugeren indtaster tekst og gemmer den i variabelnavnet.
  • echo Hej, $navn! Rart at møde dig.: Denne linje bruger ekko-kommandoen til at udskrive en hilsen, der inkluderer værdien af ​​navnevariablen, som blev indsamlet fra brugerens input.

436

7) Hvordan tilføjer du kommentarer til et shell-script?

Kommentarer i shell-scripting bruges til at give forklaringer eller kontekst til koden. De ignoreres af tolken og er kun beregnet til mennesker, der læser manuskriptet. Du kan tilføje kommentarer ved at bruge #-symbolet.

#!/bin/bash
# Dette er en kommentar, der forklarer formålet med scriptet
ekko gfg

8) Opret et shell-script, der kontrollerer, om der findes en fil i den aktuelle mappe.

Her er et script, der kontrollerer, om en fil med navnet example.txt findes i den aktuelle mappe:

#!/bin/bash
file=example.txt
# Tjek om filen findes
if [ -e $fil ]; derefter
echo Filen findes: $file
andet
echo Filen blev ikke fundet: $fil
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
  2. file=example.txt: Denne linje definerer variabelfilen og tildeler værdien example.txt til den. Du kan erstatte dette med navnet på den fil, du vil søge efter.
  3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Betingelsen [-e $file] kontrollerer, om filen, der er angivet af værdien af ​​filvariablen, eksisterer. Flaget -e bruges til at kontrollere, om filen eksisterer.
  4. echo File exists: $file: Hvis betingelsen er sand (dvs. filen eksisterer), udskriver denne linje en meddelelse, der angiver, at filen eksisterer, sammen med filens navn.
  5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), udfører scriptet koden under else-grenen.
  6. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der angiver, at den angivne fil ikke blev fundet, sammen med filens navn.
  7. fi: Denne linje markerer slutningen af ​​if-sætningen.
Finder fil

Finder fil

9) Hvad er forskellen mellem enkelte anførselstegn (') og dobbelte anførselstegn () i shell-scripting?

Enkelte anførselstegn (') og dobbelte anførselstegn () bruges til at omslutte strenge i shell-scripting, men de har forskellig adfærd:

  • Enkelte citater: Alt mellem enkelte citater behandles som en bogstavelig streng. Variabelnavne og de fleste specialtegn udvides ikke.
  • Dobbelte anførselstegn: Variabler og visse specialtegn inden for dobbelte anførselstegn udvides. Indholdet er underlagt variabel substitution og kommandosubstitution.

#!/bin/bash

abcd=Hej
echo '$abcd' # Output: $abcd
echo $abcd # Output: Hej

10) Hvordan kan du bruge kommandolinjeargumenter i et shell-script?

Kommandolinjeargumenter er værdier, der leveres til et script, når det udføres. De kan tilgås i scriptet ved hjælp af specielle variabler som $1, $2 osv., hvor $1 repræsenterer det første argument, $2 repræsenterer det andet argument, og så videre.

For eksempel: Hvis vores scriptnavn i `eksempel.sh`

#!/bin/bash

echo Script navn: $0
echo Første argument: $1
echo Andet argument: $2

Hvis vi kører scriptet med `.example.sh hello_1 hello_2`, vil det udlæse:

cli argumenter

cli argumenter

11) Hvordan bruger du for-løkken til at gentage en liste med værdier?

Opret et scriptnavn `example.sh`.

#!/bin/bash

frugter = (æble banan kirsebær daddel)
for frugt i ${fruits[@]}; gør
echo Nuværende frugt: $fruit
Færdig

Forklaring:

`fruits=`-linjen opretter et array med navnet frugter med fire elementer: æble, banan, kirsebær og daddel.

  • for frugt i ${fruits[@]}; do: Denne linje starter en for-løkke. Her er hvad hver del betyder:
  • for frugt: Dette erklærer en loop-variabel kaldet frugt. I hver iteration af løkken vil frugt holde værdien af ​​det aktuelle element fra frugtarrayet.
  • ${fruits[@]}: Dette er en matrixudvidelse, der tager alle elementerne fra frugtarrayet. ${…}-syntaksen sikrer, at hvert element behandles som et separat element.
  • do: Dette nøgleord markerer begyndelsen af ​​løkketeksten.
  • echo Current fruit: $fruit: Inde i løkken bruger denne linje echo-kommandoen til at vise den aktuelle værdi af løkkevariablen frugt. Den udskriver en besked som Current fruit: apple for hver frugt i arrayet.
  • done: Dette nøgleord markerer slutningen af ​​løkkens krop. Det fortæller scriptet, at løkken er afsluttet.
for sløjfe

for sløjfe

12) Skriv et shell-script, der beregner summen af ​​heltal fra 1 til N ved hjælp af en loop.

Opret et scriptnavn `example.sh`.

#!/bin/bash

echo Indtast et tal (N):
læs N
sum=0
for ((i=1; i<=$N; i++)); gør
sum=$((sum + i))
Færdig
echo Summen af ​​heltal fra 1 til $N er: $sum

Forklaring:
Scriptet starter med at bede dig om at indtaste et tal (N) ved hjælp af read. Dette tal bestemmer, hvor mange gange løkken kører.

  1. Variablen sum initialiseres til 0. Denne variabel vil holde styr på summen af ​​heltal.
  2. For-løkken begynder med for (( i=1; i<=$N; i++ )). Denne sløjfestruktur bruges til at gentage et sæt handlinger et vist antal gange, i dette tilfælde fra 1 til værdien af ​​N.
  3. Inde i løkken sker disse ting:
    • i=1 sætter loop-variablen i til 1 i begyndelsen af ​​hver iteration.
    • Sløjfebetingelsen i<=$N kontrollerer, om i stadig er mindre end eller lig med det givne tal N.
    • Hvis betingelsen er sand, udføres loop body.
    • sum=$((sum + i)) beregner den nye værdi af sum ved at tilføje den aktuelle værdi af i. Dette summerer hele tallene fra 1 til den aktuelle i-værdi.
  4. Efter hver iteration øger i++ værdien af ​​i med 1.
  5. Sløjfen fortsætter med at køre, indtil betingelsen i<=$N bliver falsk (når i bliver større end N).
  6. Når løkken er færdig, viser scriptet summen af ​​heltal fra 1 til det indtastede tal N.

439

13) Opret et script, der søger efter et bestemt ord i en fil og tæller dets forekomster.

Opret et scriptnavn `word_count.sh`

#!/bin/bash

echo Indtast ordet for at søge efter:
læs target_word
echo Indtast filnavnet:
læs filnavn
count=$(grep -o -w $mål_ord $filnavn | wc -l)
echo Ordet '$target_word' vises $tæller gange i '$filnavn'.

Forklaring:

  • echo Indtast ordet, der skal søges efter:: Denne linje viser en meddelelse, der beder brugeren om at indtaste et ord, de vil søge efter i en fil.
  • read target_word: Denne linje læser input fra brugeren og gemmer det i en variabel ved navn target_word.
  • echo Indtast filnavnet:: Denne linje viser en meddelelse, der beder brugeren om at indtaste navnet på den fil, de vil søge i.
  • læs filnavn: Denne linje læser input fra brugeren og gemmer det i en variabel med navnet filnavn.
  • count=$(grep -o -w $mål_ord $filnavn | wc -l): Denne linje udfører scriptets hovedarbejde. Lad os opdele det yderligere:
    • grep -o -w $target_word $filnavn: Denne del af kommandoen søger efter forekomster af target_word i det angivne filnavn. Valgmulighederne -o og -w sikrer, at kun hele ordmatches tælles.
    • |: Dette er et rør, som tager outputtet fra den forrige kommando og sender det som input til den næste kommando.
    • wc -l: Denne del af kommandoen bruger wc-kommandoen til at tælle antallet af linjer i inputtet. Valgmuligheden -l tæller specifikt linjerne.
    • Hele kommandoen beregner antallet af forekomster af target_word i filen og tildeler denne optælling til variablen antal

441

14) Forklar forskellene mellem standard output (stdout) og standardfejl (stderr).

Hovedforskellen mellem standardoutput (stdout) og standardfejl (stderr) er som følger:

  • Standard output (stdout): Dette er standardoutputstrømmen, hvor en kommandos almindelige output går. Det vises som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af>.
  • Standardfejl (stderr): Dette er outputstrømmen for fejlmeddelelser og advarsler. Det vises også som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af 2>.

15) Forklar begrebet betingede udsagn i shell scripting.

Betingede udsagn i shell-scripting give os mulighed for at træffe beslutninger og kontrollere flowet af vores script baseret på visse betingelser. De gør det muligt for vores script at udføre forskellige sæt kommandoer afhængigt af, om en bestemt betingelse er sand eller falsk. De primære betingede sætninger i shell-scripting er if-sætningen, elif-sætningen (valgfri) og else-sætningen (valgfri).

Her er den grundlæggende struktur af en betinget erklæring i shell-scripting:

if [betingelse]; derefter
# Kommandoer til at udføre, hvis betingelsen er sand
elif [en anden_tilstand]; derefter
# Kommandoer til at udføre, hvis another_condition er sand (valgfrit)
andet
# Kommandoer til at udføre, hvis ingen af ​​betingelserne er sande (valgfrit)
være

Forklaring:

  • [ condition ] = Kommando, der evaluerer betingelsen og returnerer en sand (0) eller falsk (ikke-nul) udgangsstatus.
  • then = Det er et nøgleord, der angiver, at kommandoerne efter det vil blive udført, hvis betingelsen evalueres til sand.
  • elif = (forkortelse for else if) Det er et afsnit, der giver os mulighed for at angive yderligere betingelser for at kontrollere.
  • else = det er en sektion, der indeholder kommandoer, der vil blive udført, hvis ingen af ​​betingelserne er sande.
  • fi = Det er et nøgleord, der markerer slutningen af ​​den betingede blok.

16) Hvordan læser du linjer fra en fil i et shell-script?

Til læse linjer fra en fil i et shell-script, kan vi bruge forskellige metoder, men en almindelig fremgangsmåde er at bruge en while-løkke i kombination med read-kommandoen. Sådan kan vi gøre det:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Tjek om filen findes
if [ -e $fil ]; derefter
mens IFS= læser -r linje; gør
echo Linje læst: $line
# Tilføj din behandlingslogik her
færdig <$fil
andet
echo Filen blev ikke fundet: $fil
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
  2. file=/home/jayeshkumar/jayesh.txt: Denne linje definerer variabelfilen og tildeler den fulde sti til filen jayesh.txt i mappen /home/jayeshkumar. Skift denne sti, så den matcher den faktiske sti til den fil, du vil læse.
  3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Den kontrollerer, om filen angivet af variablen $file eksisterer. Flaget -e kontrollerer for fileksistens.
  4. mens IFS= læser -r linje; do: Denne linje starter en while-løkke, der læser linjer fra filen.
    • IFS=: IFS (Internal Field Separator) er sat til en tom værdi for at bevare førende og efterfølgende mellemrum.
    • read -r line: Dette læser den aktuelle linje fra filen og gemmer den i den variable linje.
  5. echo Line read: $line: Denne linje udskriver indholdet af den linje, der blev læst fra filen. Variablen $line indeholder den aktuelle linjes indhold.
  6. # Tilføj din behandlingslogik her: Dette er en pladsholderkommentar, hvor du kan tilføje din egen logik til at behandle hver linje. For eksempel kan du analysere linjen, udtrække information eller udføre specifikke handlinger baseret på indholdet.
  7. done <$file: Dette markerer slutningen af ​​while-løkken. < $filen omdirigerer indholdet af filen, der skal læses af løkken.
  8. else: Hvis filen ikke eksisterer (betingelsen i if-sætningen er falsk), udfører scriptet koden under else-grenen.
  9. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der indikerer, at den angivne fil ikke blev fundet.
  10. fi: Denne linje markerer slutningen af ​​if-sætningen.
læse fil

læse fil

Her brugte vi ` pwd ` kommando for at få stien til den aktuelle mappe.

17) Skriv en funktion i et shell-script, der beregner fakultetet af et givet tal.

Her er manuskriptetudregn faktorenaf et givet tal.

#!/bin/bash
# Definer en funktion til at beregne factorial
beregne_faktor() {
num=$1
fakta=1
for ((i=1; i<=tal; i++)); gør
fakta=$((faktum * i))
Færdig
ekko $fakta
}
# Bed brugeren om at indtaste et nummer
echo Indtast et tal:
læs input_num
# Kald calculate_fatorial-funktionen med det indtastede nummer
factorial_result=$(calculate_fatorial $input_num)
# Vis det faktorielle resultat
echo Factorial af $input_num er: $factorial_result

Forklaring:

  1. Scriptet starter med shebang-linjen #!/bin/bash for at angive tolken.
  2. calculate_fatorial() er defineret som en funktion. Det kræver et argument, num, som er det tal, som faktoren skal beregnes for.
  3. Inde i funktionen initialiseres fakta til 1. Denne variabel vil gemme det faktorielle resultat.
  4. For-løkken itererer fra 1 til det givne tal (num). I hver iteration multipliceres den aktuelle værdi af fakta med loop-indekset i.
  5. Når løkken er fuldført, indeholder faktavariablen den beregnede faktor.
  6. Scriptet beder brugeren om at indtaste et tal ved hjælp af read.
  7. calculate_fatorial-funktionen kaldes med det brugerangivne tal, og resultatet gemmes i variablen factorial_result.
  8. Til sidst viser scriptet det beregnede faktorielle resultat.
Faktoriel

Faktoriel

18) Hvordan håndterer du signaler som Ctrl+C i et shell-script?

I et shell-script kan du håndtere signaler som Ctrl+C (også kendt som SIGINT) ved at bruge trap-kommandoen. Ctrl+C genererer et SIGINT-signal, når brugeren trykker på det for at afbryde det kørende script eller program. Ved at bruge trap-kommandoen kan du specificere handlinger, der skal udføres, når et bestemt signal modtages. Sådan håndterer du signaler som Ctrl+C i et shell-script:

#!/bin/bash
Ryd op() {
echo Script afbrudt. Udfører oprydning...
# Tilføj dine oprydningshandlinger her
udgang 1
}
# Opsæt en fælde for at kalde oprydningsfunktionen, når Ctrl+C (SIGINT) modtages
fældeoprydning SIGINT
# Resten af ​​dit script
ekko kører...
sove 10
ekko Færdig.

Håndtering af signaler er vigtig for at gøre scripts robuste og sikre, at de håndterer uventede afbrydelser elegant. Du kan tilpasse oprydningsfunktionen, så den matcher dine specifikke behov, såsom at lukke filer, stoppe processer eller logge oplysninger, før scriptet afsluttes.

Forklaring:

  1. #!/bin/bash: Denne shebang-linje specificerer den fortolker, der skal bruges til at køre scriptet.
  2. cleanup() { … }: Dette definerer en funktion ved navn cleanup. Inde i denne funktion kan du inkludere alle handlinger, der skal udføres, når scriptet afbrydes, såsom at lukke filer, frigive ressourcer eller udføre andre oprydningsopgaver.
  3. trap cleanup SIGINT: Trappe-kommandoen bruges til at opsætte en signalhåndtering. I dette tilfælde specificerer den, at når SIGINT-signalet (Ctrl+C) modtages, skal oprydningsfunktionen udføres.
  4. echo Running…, sleep 10, echo Finished.: Dette er blot eksempelkommandoer til at simulere udførelsen af ​​et script.

446

19) Opret et script, der tjekker for og fjerner duplikerede linjer i en tekstfil.

Her er vores linux-script, hvor vi fjerner duplikerede linjer fra en tekstfil.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sorter $input_fil | uniq> $output_fil
echo Duplikerede linjer blev fjernet.

Forklaring:

  1. Scriptet starter med en shebang (#!/bin/bash), som angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. Variablen input_file er sat til navnet på inputfilen, der indeholder duplikerede linjer (ændre dette til dit faktiske inputfilnavn).
  3. Variablen output_file er sat til navnet på outputfilen, hvor duplikaterne vil blive fjernet (ændre dette til dit ønskede outputfilnavn).
  4. Scriptet bruger sorteringskommandoen til at sortere linjerne i inputfilen. Sortering af linjerne sikrer, at duplikerede linjer grupperes sammen.
  5. De sorterede linjer sendes derefter gennem uniq-kommandoen, som fjerner på hinanden følgende duplikerede linjer. Outputtet fra denne proces omdirigeres til outputfilen.
  6. Når dubletterne er fjernet, udskriver scriptet en succesmeddelelse.
fjernelse af dobbelt linje

duplikatlinjefjernelse

Her bruger vi ` kat ` for at vise teksten inde i tekstfilen.

20) Skriv et script, der genererer en sikker tilfældig adgangskode.

Her er vores script til at generere en sikker tilfældig adgangskode.

#!/bin/bash
# Funktion til at generere en tilfældig adgangskode
generere_adgangskode() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Kald funktionen og gem den genererede adgangskode
password=$(generer_adgangskode)
echo Genereret adgangskode: $password

Bemærk: Brugeren kan derfor ændre længden af ​​adgangskoden ved at erstatte tallet '12'.

Forklaring:

  1. Scriptet starter med en shebang (#!/bin/bash), hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
  2. Generer_password-funktionen er defineret til at generere en tilfældig adgangskode. Sådan fungerer det:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 opdeler de filtrerede tilfældige data i linjer med bredde på 12 tegn hver.
    • head -n 1 vælger den første linje, hvilket i praksis giver os en tilfældig sekvens af tegn med længden 12.
  3. Adgangskodevariablen tildeles resultatet af at kalde funktionen gener_password.
  4. Til sidst vises den genererede adgangskode ved hjælp af ekko.

448

21) Skriv et shell-script, der beregner den samlede størrelse af alle filer i en mappe.

Her er et shell-script til at beregne den samlede størrelse af alle filer i en mappe.

#!/bin/bash
mappe=/sti/til/din/mappe
total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
echo Samlet størrelse af filer i $mappe: $total_size

Forklaring:

  1. Scriptet starter med #!/bin/bash shebang, hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
  2. Bibliotekvariablen er sat til stien til den mappe, som du vil beregne den samlede filstørrelse for. Erstat /sti/til/din/mappe med den faktiske sti.
  3. Kommandoen du bruges til at estimere brugen af ​​filplads. De anvendte muligheder er:
    • -c: Fremstil en totalsum.
    • -s: Vis kun den samlede størrelse af den angivne mappe.
    • -h: Udskriftsstørrelser i et format, der kan læses af mennesker (f.eks. KB, MB, GB).
  4. Outputtet fra du sendes til grep total for at bortfiltrere linjen, der indeholder den samlede størrelse.
  5. awk '{print $1}' bruges til at udtrække det første felt (samlet størrelse) fra linjen.
  6. Den beregnede samlede størrelse gemmes i variablen total_size.
  7. Endelig viser scriptet den samlede størrelse ved hjælp af ekko.
Samlet størrelse af filer

Samlet størrelse af filer

Her brugte vi ` pwd ` kommando for at se den aktuelle mappesti.

22) Forklar forskellen mellem if- og elif-sætninger i shell-scripting.

Feature `hvis` Staiftement `elif`-erklæring
Formål Forklar forskellen mellem if- og elif-sætninger i shell-scripting. Giver alternative betingelser for at kontrollere, hvornår den oprindelige, hvis betingelsen er falsk.
brug Brugt til den oprindelige tilstand. Brugt efter den indledende if-tilstand for at kontrollere yderligere forhold.
antal blokke Kan kun have én hvis blok. Kan have flere elif-blokke, men kun én anden blok (valgfrit).
Udførelse Udfører den kodeblok, der er knyttet til if-sætningen, hvis betingelsen er sand. Hvis betingelsen er falsk, udføres den anden blok (hvis den findes) (valgfrit). Kontrollerer hver elif tilstand i rækkefølge. Hvis én elif-betingelse er sand, udføres den tilsvarende kodeblok, og scriptet afslutter hele den betingede blok. Hvis ingen af ​​elif-betingelserne er sande, udføres else-blokken (hvis den er til stede).
Indlejrede strukturer Kan indlejres i andre if-, elif- eller else-blokke. Kan ikke indlejres i en anden elif-blok, men kan bruges i en if eller else-blok.

Lad os forstå det med et eksempel.

#!/bin/bash
nummer=5
if [$nummer -gt 10]; derefter
echo $nummer er større end 10
andet
echo $nummer er ikke større end 10
være
ekko ---
if [$nummer -gt 10]; derefter
echo $nummer er større end 10
elif [$nummer -eq 10]; derefter
echo $nummer er lig med 10
andet
echo $nummer er mindre end 10
være

Forklaring:

I dette eksempel kontrollerer den første if-blok, om tallet er større end 10. Hvis ikke, udskriver den en meddelelse, der angiver, at tallet ikke er større end 10. Den anden blok med elif-sætninger kontrollerer flere betingelser sekventielt, indtil en af ​​dem er sand. I dette tilfælde, da værdien af ​​nummer er 5, vil outputtet være:

if_elif forskel

if_elif forskel

23) Hvordan bruger du en while-løkke til gentagne gange at udføre kommandoer?

En while-løkke bruges i shell-scripting til gentagne gange at udføre et sæt kommandoer, så længe en specificeret betingelse er sand. Sløjfen fortsætter med at udføre kommandoerne, indtil betingelsen bliver falsk.

Her er den grundlæggende syntaks for en while-løkke:

mens [betingelse]; gør
# Kommandoer, der skal udføres
Færdig

Forklaring:

  1. `While`-løkken starter med nøgleordet `while` efterfulgt af en betingelse omsluttet af firkantede parenteser `[ ]`.
  2. Sløjfens krop, som indeholder de kommandoer, der skal udføres, er omsluttet af nøgleordene 'do' og 'done'.
  3. Løkken tjekker først tilstanden. Hvis betingelsen er sand, udføres kommandoerne i loop-legemet. Efter at loop-kroppen er udført, kontrolleres betingelsen igen, og processen gentages, indtil betingelsen bliver falsk.

Eksempel: Hvis vi ønsker at udskrive tal fra 1 til 5

#!/bin/bash
tæller=1
while [ $tæller -le 5 ]; gør
ekkonummer: $counter
tæller=$((tæller + 1))
Færdig

Forklaring:

  • Tællervariablen er sat til 1.
  • While-løkken kontrollerer, om værdien af ​​tælleren er mindre end eller lig med 5. Så længe denne betingelse er sand, fortsætter løkken med at udføre.
  • Inde i løkken udskrives den aktuelle værdi af tælleren ved hjælp af ekko.
  • Tælleren øges med 1 ved hjælp af udtrykket $((tæller + 1)).
mens loop

mens loop

24) Opret et shell-script, der finder og viser alle tomme filer i en mappe.

Shell-script, som du kan bruge til at finde og liste alle tomme filer i en mappe ved hjælp af kommandoerne `find` og `stat`:

#!/bin/bash
mappe=$1″
if [-z $mappe]; derefter
ekkobrug: $0
udgang 1
være

hvis [! -d $katalog ]; derefter
echo Error: '$directory' er ikke en gyldig mappe.
udgang 1
være
echo tomme filer i $directory:
find $katalog -type f -tom

Forklaring:

  1. ` #!/bin/bash `: Dette kaldes en shebang, og det fortæller operativsystemet at bruge Bash-skallen til at fortolke og udføre scriptet.
  2. ` mappe=$1″ `: Denne linje tildeler det første kommandolinjeargument (angivet med $1) til variablen ` vejviser `.
  3. ` if [-z $mappe]; derefter `: Denne linje starter en if-sætning, der kontrollerer om ` vejviser ` variabel er tom (-z tester for en tom streng).
  4. ` ekkobrug: $0 `: Hvis mappen er tom, udskriver denne linje en brugsmeddelelse, hvor ` $0 ` repræsenterer scriptets navn.
  5. ` udgang 1 `: Denne linje afslutter scriptet med en exitkode på ` 1 `, hvilket indikerer en fejl.
  6. ` være `: Denne linje markerer slutningen af ​​` hvis ` erklæring.
  7. ` hvis [! -d $katalog ]; derefter `: Dette starter en anden if-sætning for at kontrollere, om den angivne mappe eksisterer (` -d ` tester for en mappe).
  8. ` echo Error: '$directory' er ikke en gyldig mappe. `: Hvis den angivne mappe ikke eksisterer, udskriver denne linje en fejlmeddelelse.
  9. ` udgang 1 `: Afslutter scriptet med en exit-kode på ` 1 `.
  10. ` være `: Markerer slutningen af ​​den anden ` hvis` udmelding.
  11. ` echo tomme filer i $directory: `: Hvis alt er gyldigt indtil videre, udskriver denne linje en meddelelse, der angiver, at scriptet vil vise tomme filer i den angivne mappe.
  12. ` find $katalog -type f -tom `: Denne linje bruger ` Find ` kommando til at søge efter tomme filer (` -tom `) af typen almindelige filer (` -type f `) i den angivne mappe. Det viser derefter disse tomme filer.
Finder tomme filer

Finder tomme filer

Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det nuværende bibliotek home/jayeshkumar/

25) Hvad er formålet med read-kommandoen i shell-scripting?

Read-kommandoen i shell-scripting lader scriptet bede dig om information. Det er ligesom når en computer stiller dig et spørgsmål og venter på dit svar. Dette er nyttigt til scripts, der kræver, at du skriver noget, eller når scriptet skal arbejde med information fra filer. Read-kommandoen hjælper scriptet med at stoppe og vente på, hvad du skriver, og så kan det bruge disse oplysninger til at gøre flere ting i scriptet.

Syntaks for læsekommando:

read variable_name>

Eksempel : Hvis vi ønsker at tage navn som input fra brugeren for at udskrive det.

#!/bin/bash
echo Indtast venligst dit navn:
læs navn
echo Hej, $navn!

453

læs nam

Sammenfattende bruges read-kommandoen til at fange brugerinput eller data fra filer i shell-scripts, hvilket gør scripts mere interaktive og alsidige.

26) Skriv et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

Her er et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

#!/bin/bash
mappe=$1″
if [-z $mappe]; derefter
ekkobrug: $0
udgang 1
være

hvis [! -d $katalog ]; derefter

echo Error: '$directory' er ikke en gyldig mappe.
udgang 1
være

cd $katalog || udgang 1

for fil i *; gør
if [-f $fil ]; derefter
newname=$(ekko $fil | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
være
Færdig

Forklaring:

  1. #!/bin/bash : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. mappe=$1″ : Denne linje tildeler det første kommandolinjeargument til den variable mappe.
  3. if [-z $mappe]; derefter : Denne linje kontrollerer, om biblioteksvariablen er tom (intet argument angivet ved kørsel af scriptet).
  4. ekkobrug: $0 : Hvis mappen er tom, udskriver denne linje en brugsmeddelelse med scriptets navn ($0).
  5. udgang 1 : Denne linje afslutter scriptet med en exitkode på 1, hvilket indikerer, at der er opstået en fejl.
  6. f i: Dette markerer slutningen af ​​den første if-sætning.
  7. hvis [! -d $katalog ]; derefter : Denne linje kontrollerer, om den angivne mappe ikke eksisterer (-d tester for en mappe).
  8. echo Error: '$directory' er ikke en gyldig mappe. : Hvis den angivne mappe ikke findes, udskriver denne linje en fejlmeddelelse.
  9. udgang 1 : Afslutter scriptet med en exitkode på 1.
  10. være : Markerer slutningen af ​​den anden if-sætning.
  11. cd $katalog || udgang 1 : Ændrer den aktuelle arbejdsmappe til den angivne mappe. Hvis mappeændringen mislykkes (f.eks. ikke-eksisterende mappe), afsluttes scriptet med en fejlkode.
  12. for fil i *; gør: jeg for fil i *; gør: starter en loop, der itererer over alle elementer i den aktuelle mappe (* matcher alle filnavne).
  13. if [-f $fil ]; derefter : Kontrollerer, om det aktuelle loop-iterationselement er en almindelig fil (-f tester for en almindelig fil).
  14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer det aktuelle filnavn ($file) til små bogstaver ved hjælp af tr-kommandoen og gemmer resultatet i newname-variablen.
  15. [ $file != $newname ] && mv $file $newname : Sammenligner det originale filnavn med det nye lille filnavn. Hvis de er forskellige, omdøber den filen ved hjælp af mv-kommandoen.
  16. være : Markerer slutningen af ​​den indre if-sætning.
  17. Færdig : Markerer slutningen af ​​løkken.

454

Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det aktuelle bibliotek home/jayeshkumar/test

27) Hvordan kan du bruge aritmetiske operationer i et shell-script?

Aritmetiske operationer kan udføres i et shell-script ved hjælp af forskellige indbyggede metoder. Skallen giver mekanismer til simple aritmetiske beregninger ved hjælp af aritmetisk udvidelse som:

  1. Aritmetisk udvidelse ($((…)))
  2. Bruger kommandoen expr
  3. Brug let Command

Her er vores Shell-script, der forklarer alle tre metoder til aritmetiske operationer.

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

#Aritmetisk udvidelse ($((…)))

resultat=$((tal1 + tal2))
echo Sum: $resultat

#Bruger kommandoen expr

sum=$(udg. $num1 + $num2)
echo Sum: $sum

#Brug let Command

lad sum = num1 + num2
echo Sum: $sum

Forklaring:

  1. `#!/bin/bash` : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. `tal1=10` og ` num2=5` : Disse linjer tildeler værdierne 10 og 5 til variablerne ` nummer1 ` og ` nummer 2 `, henholdsvis.
  3. `#Aritmetisk udvidelse ($((...)))` : Dette er en kommentar, der angiver starten på afsnittet, der demonstrerer aritmetisk udvidelse.
  4. `resultat=$((tal1 + tal2))` : Denne linje bruger aritmetisk ekspansion til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` resultat ` variabel.
  5. `ekko Sum: $resultat` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` resultat ` variabel.
  6. `#Using expr Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` udtr ` kommando til aritmetiske operationer.
  7. `sum=$(udtr. $num1 + $num2)` : Denne linje bruger ` udtr ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` sum ` variabel. Bemærk, at ` udtr ` kommando kræver mellemrum omkring operatørerne.
  8. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
  9. `#Brug let Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` lade ` kommando til aritmetiske operationer.
  10. `lad sum = num1 + num2″` : Denne linje bruger ` lade ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og tildeler resultatet til ` sum ` variabel. Den ` lade ` kommandoen kræver ikke mellemrum omkring operatørerne.
  11. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
aritmetik

aritmetik

28) Opret et script, der kontrollerer, om en netværksvært er tilgængelig.

Her er et simpelt shell-script, der bruger ping-kommandoen til at kontrollere, om en netværksvært er tilgængelig:

#!/bin/bash
vært=$1″
if [ -z $host ]; derefter
ekkobrug: $0
udgang 1
være
ping -c 4 $host

hvis [$? -ækv 0]; derefter
echo $host er tilgængelig.
andet
echo $host er ikke tilgængelig.
være

Forklaring:

  1. Den tager et værtsnavn eller IP-adresse som argument og kontrollerer, om argumentet er angivet.
  2. Hvis der ikke er angivet noget argument, viser det en brugsmeddelelse og afsluttes.
  3. Den bruger ping-kommandoen med -c 4-indstillingen til at sende fire ICMP-ekko-anmodninger til den angivne vært.
  4. Efter at ping-kommandoen er kørt, kontrollerer den exit-statussen ($?). Hvis exit-statussen er 0, betyder det, at værten er tilgængelig, og scriptet udskriver en succesmeddelelse. Ellers udskriver den en fejlmeddelelse.

456

Bemærk : Vi skal angive et værtsnavn som argument, når vi kører scriptet. Her har vi brugt google.com

29) Skriv et Shell-script for at finde det største element i et array:

Her er et shell-script til at finde det bedste element i et array.

#!/bin/bash
# Erklære et array
matrix=(3 56 24 89 67)

# Initialiser en variabel for at gemme den maksimale værdi, startende med det første element

max=${array[0]}

# Iterér gennem arrayet

for num i ${array[@]}; gør

# Sammenlign hvert element med det aktuelle maksimum

if ((antal> maks)); derefter
max=$antal
være
Færdig

# Udskriv den maksimale værdi

echo Det maksimale element i arrayet er: $max

Forklaring:

  1. ` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. ` matrix=(3 56 24 89 67) `: Arrayet erklæres og initialiseres med værdier.
  3. ` max=${array[0]} `: `max` initialiseres med det første element i arrayet.
  4. ` for num i ${array[@]}; gør `: En `for`-løkke bruges til at iterere gennem elementerne i arrayet.
  5. ` if ((antal> maks)); derefter `: En `if`-sætning kontrollerer, om det aktuelle element `num` er større end det aktuelle maksimum `max`.
  6. ` max=$num`: Hvis`num ` er større end `max`, er `max` opdateret med værdien num.
  7. ` Færdig `: `For`-løkken er lukket.
  8. ` echo Det maksimale element i arrayet er: $max `: Endelig udskriver scriptet den maksimale værdi fundet i arrayet.
461

største antal

30) Skriv et script til at beregne summen af ​​elementer i et array.

#!/bin/bash

# Erklære et array

matrix=(1 65 22 19 94)

# Initialiser en variabel for at gemme summen

sum=0

# Iterér gennem arrayet og føj hvert element til summen

for num i ${array[@]}; gør
am=$((am + am))
Færdig

# Udskriv summen

echo Summen af ​​elementer i arrayet er: $sum

Forklaring:

` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.

` matrix=(1 65 22 19 94) `: Arrayet erklæres og initialiseres med værdier.

` sum=0 `:` sum ` initialiseres til nul for at holde summen af ​​elementer.

` for num i ${array[@]}; gør `: A ` til ` loop bruges til at iterere gennem elementerne i arrayet.

` am=$((am + am)) `: Inde i løkken, hvert element ` på en ` tilføjes til ` sum ` variabel.

` Færdig `: Den ` til ` sløjfen er lukket.

`echo Summen af ​​elementer i arrayet er: $sum`: Til sidst udskriver scriptet summen af ​​alle elementer i arrayet.

462

Summen af ​​elementer

Få mere at vide om Shell-scripts

Konklusion

Vi ved alle nørder, at shell-script er meget nyttigt for at øge arbejdsproduktiviteten såvel som det sparer tid. Så i denne artikel har vi dækket 30 meget nyttige og mest besnærende shell-scripts eksempler . Vi håber, at denne komplette vejledning om shell-scripting-eksempel hjælper dig med at forstå alt om shell-scripts.




echo Første argument:
echo Andet argument:

Hvis vi kører scriptet med `.example.sh hello_1 hello_2`, vil det udlæse:

cli argumenter

cli argumenter

11) Hvordan bruger du for-løkken til at gentage en liste med værdier?

Opret et scriptnavn `example.sh`.

#!/bin/bash

frugter = (æble banan kirsebær daddel)
for frugt i ${fruits[@]}; gør
echo Nuværende frugt: $fruit
Færdig

Forklaring:

`fruits=`-linjen opretter et array med navnet frugter med fire elementer: æble, banan, kirsebær og daddel.

  • for frugt i ${fruits[@]}; do: Denne linje starter en for-løkke. Her er hvad hver del betyder:
  • for frugt: Dette erklærer en loop-variabel kaldet frugt. I hver iteration af løkken vil frugt holde værdien af ​​det aktuelle element fra frugtarrayet.
  • ${fruits[@]}: Dette er en matrixudvidelse, der tager alle elementerne fra frugtarrayet. ${…}-syntaksen sikrer, at hvert element behandles som et separat element.
  • do: Dette nøgleord markerer begyndelsen af ​​løkketeksten.
  • echo Current fruit: $fruit: Inde i løkken bruger denne linje echo-kommandoen til at vise den aktuelle værdi af løkkevariablen frugt. Den udskriver en besked som Current fruit: apple for hver frugt i arrayet.
  • done: Dette nøgleord markerer slutningen af ​​løkkens krop. Det fortæller scriptet, at løkken er afsluttet.
for sløjfe

for sløjfe

12) Skriv et shell-script, der beregner summen af ​​heltal fra 1 til N ved hjælp af en loop.

Opret et scriptnavn `example.sh`.

#!/bin/bash

echo Indtast et tal (N):
læs N
sum=0
for ((i=1; i<=$N; i++)); gør
sum=$((sum + i))
Færdig
echo Summen af ​​heltal fra 1 til $N er: $sum

Forklaring:
Scriptet starter med at bede dig om at indtaste et tal (N) ved hjælp af read. Dette tal bestemmer, hvor mange gange løkken kører.

  1. Variablen sum initialiseres til 0. Denne variabel vil holde styr på summen af ​​heltal.
  2. For-løkken begynder med for (( i=1; i<=$N; i++ )). Denne sløjfestruktur bruges til at gentage et sæt handlinger et vist antal gange, i dette tilfælde fra 1 til værdien af ​​N.
  3. Inde i løkken sker disse ting:
    • i=1 sætter loop-variablen i til 1 i begyndelsen af ​​hver iteration.
    • Sløjfebetingelsen i<=$N kontrollerer, om i stadig er mindre end eller lig med det givne tal N.
    • Hvis betingelsen er sand, udføres loop body.
    • sum=$((sum + i)) beregner den nye værdi af sum ved at tilføje den aktuelle værdi af i. Dette summerer hele tallene fra 1 til den aktuelle i-værdi.
  4. Efter hver iteration øger i++ værdien af ​​i med 1.
  5. Sløjfen fortsætter med at køre, indtil betingelsen i<=$N bliver falsk (når i bliver større end N).
  6. Når løkken er færdig, viser scriptet summen af ​​heltal fra 1 til det indtastede tal N.

439

13) Opret et script, der søger efter et bestemt ord i en fil og tæller dets forekomster.

Opret et scriptnavn `word_count.sh`

#!/bin/bash

echo Indtast ordet for at søge efter:
læs target_word
echo Indtast filnavnet:
læs filnavn
count=$(grep -o -w $mål_ord $filnavn | wc -l)
echo Ordet '$target_word' vises $tæller gange i '$filnavn'.

Forklaring:

linux ændringsfil
  • echo Indtast ordet, der skal søges efter:: Denne linje viser en meddelelse, der beder brugeren om at indtaste et ord, de vil søge efter i en fil.
  • read target_word: Denne linje læser input fra brugeren og gemmer det i en variabel ved navn target_word.
  • echo Indtast filnavnet:: Denne linje viser en meddelelse, der beder brugeren om at indtaste navnet på den fil, de vil søge i.
  • læs filnavn: Denne linje læser input fra brugeren og gemmer det i en variabel med navnet filnavn.
  • count=$(grep -o -w $mål_ord $filnavn | wc -l): Denne linje udfører scriptets hovedarbejde. Lad os opdele det yderligere:
    • grep -o -w $target_word $filnavn: Denne del af kommandoen søger efter forekomster af target_word i det angivne filnavn. Valgmulighederne -o og -w sikrer, at kun hele ordmatches tælles.
    • |: Dette er et rør, som tager outputtet fra den forrige kommando og sender det som input til den næste kommando.
    • wc -l: Denne del af kommandoen bruger wc-kommandoen til at tælle antallet af linjer i inputtet. Valgmuligheden -l tæller specifikt linjerne.
    • Hele kommandoen beregner antallet af forekomster af target_word i filen og tildeler denne optælling til variablen antal

441

14) Forklar forskellene mellem standard output (stdout) og standardfejl (stderr).

Hovedforskellen mellem standardoutput (stdout) og standardfejl (stderr) er som følger:

  • Standard output (stdout): Dette er standardoutputstrømmen, hvor en kommandos almindelige output går. Det vises som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af>.
  • Standardfejl (stderr): Dette er outputstrømmen for fejlmeddelelser og advarsler. Det vises også som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af 2>.

15) Forklar begrebet betingede udsagn i shell scripting.

Betingede udsagn i shell-scripting give os mulighed for at træffe beslutninger og kontrollere flowet af vores script baseret på visse betingelser. De gør det muligt for vores script at udføre forskellige sæt kommandoer afhængigt af, om en bestemt betingelse er sand eller falsk. De primære betingede sætninger i shell-scripting er if-sætningen, elif-sætningen (valgfri) og else-sætningen (valgfri).

Her er den grundlæggende struktur af en betinget erklæring i shell-scripting:

if [betingelse]; derefter
# Kommandoer til at udføre, hvis betingelsen er sand
elif [en anden_tilstand]; derefter
# Kommandoer til at udføre, hvis another_condition er sand (valgfrit)
andet
# Kommandoer til at udføre, hvis ingen af ​​betingelserne er sande (valgfrit)
være

Forklaring:

  • [ condition ] = Kommando, der evaluerer betingelsen og returnerer en sand (0) eller falsk (ikke-nul) udgangsstatus.
  • then = Det er et nøgleord, der angiver, at kommandoerne efter det vil blive udført, hvis betingelsen evalueres til sand.
  • elif = (forkortelse for else if) Det er et afsnit, der giver os mulighed for at angive yderligere betingelser for at kontrollere.
  • else = det er en sektion, der indeholder kommandoer, der vil blive udført, hvis ingen af ​​betingelserne er sande.
  • fi = Det er et nøgleord, der markerer slutningen af ​​den betingede blok.

16) Hvordan læser du linjer fra en fil i et shell-script?

Til læse linjer fra en fil i et shell-script, kan vi bruge forskellige metoder, men en almindelig fremgangsmåde er at bruge en while-løkke i kombination med read-kommandoen. Sådan kan vi gøre det:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Tjek om filen findes
if [ -e $fil ]; derefter
mens IFS= læser -r linje; gør
echo Linje læst: $line
# Tilføj din behandlingslogik her
færdig <$fil
andet
echo Filen blev ikke fundet: $fil
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
  2. file=/home/jayeshkumar/jayesh.txt: Denne linje definerer variabelfilen og tildeler den fulde sti til filen jayesh.txt i mappen /home/jayeshkumar. Skift denne sti, så den matcher den faktiske sti til den fil, du vil læse.
  3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Den kontrollerer, om filen angivet af variablen $file eksisterer. Flaget -e kontrollerer for fileksistens.
  4. mens IFS= læser -r linje; do: Denne linje starter en while-løkke, der læser linjer fra filen.
    • IFS=: IFS (Internal Field Separator) er sat til en tom værdi for at bevare førende og efterfølgende mellemrum.
    • read -r line: Dette læser den aktuelle linje fra filen og gemmer den i den variable linje.
  5. echo Line read: $line: Denne linje udskriver indholdet af den linje, der blev læst fra filen. Variablen $line indeholder den aktuelle linjes indhold.
  6. # Tilføj din behandlingslogik her: Dette er en pladsholderkommentar, hvor du kan tilføje din egen logik til at behandle hver linje. For eksempel kan du analysere linjen, udtrække information eller udføre specifikke handlinger baseret på indholdet.
  7. done <$file: Dette markerer slutningen af ​​while-løkken. < $filen omdirigerer indholdet af filen, der skal læses af løkken.
  8. else: Hvis filen ikke eksisterer (betingelsen i if-sætningen er falsk), udfører scriptet koden under else-grenen.
  9. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der indikerer, at den angivne fil ikke blev fundet.
  10. fi: Denne linje markerer slutningen af ​​if-sætningen.
læse fil

læse fil

Her brugte vi ` pwd ` kommando for at få stien til den aktuelle mappe.

17) Skriv en funktion i et shell-script, der beregner fakultetet af et givet tal.

Her er manuskriptetudregn faktorenaf et givet tal.

#!/bin/bash
# Definer en funktion til at beregne factorial
beregne_faktor() {
num=
fakta=1
for ((i=1; i<=tal; i++)); gør
fakta=$((faktum * i))
Færdig
ekko $fakta
}
# Bed brugeren om at indtaste et nummer
echo Indtast et tal:
læs input_num
# Kald calculate_fatorial-funktionen med det indtastede nummer
factorial_result=$(calculate_fatorial $input_num)
# Vis det faktorielle resultat
echo Factorial af $input_num er: $factorial_result

Forklaring:

  1. Scriptet starter med shebang-linjen #!/bin/bash for at angive tolken.
  2. calculate_fatorial() er defineret som en funktion. Det kræver et argument, num, som er det tal, som faktoren skal beregnes for.
  3. Inde i funktionen initialiseres fakta til 1. Denne variabel vil gemme det faktorielle resultat.
  4. For-løkken itererer fra 1 til det givne tal (num). I hver iteration multipliceres den aktuelle værdi af fakta med loop-indekset i.
  5. Når løkken er fuldført, indeholder faktavariablen den beregnede faktor.
  6. Scriptet beder brugeren om at indtaste et tal ved hjælp af read.
  7. calculate_fatorial-funktionen kaldes med det brugerangivne tal, og resultatet gemmes i variablen factorial_result.
  8. Til sidst viser scriptet det beregnede faktorielle resultat.
Faktoriel

Faktoriel

18) Hvordan håndterer du signaler som Ctrl+C i et shell-script?

I et shell-script kan du håndtere signaler som Ctrl+C (også kendt som SIGINT) ved at bruge trap-kommandoen. Ctrl+C genererer et SIGINT-signal, når brugeren trykker på det for at afbryde det kørende script eller program. Ved at bruge trap-kommandoen kan du specificere handlinger, der skal udføres, når et bestemt signal modtages. Sådan håndterer du signaler som Ctrl+C i et shell-script:

#!/bin/bash
Ryd op() {
echo Script afbrudt. Udfører oprydning...
# Tilføj dine oprydningshandlinger her
udgang 1
}
# Opsæt en fælde for at kalde oprydningsfunktionen, når Ctrl+C (SIGINT) modtages
fældeoprydning SIGINT
# Resten af ​​dit script
ekko kører...
sove 10
ekko Færdig.

Håndtering af signaler er vigtig for at gøre scripts robuste og sikre, at de håndterer uventede afbrydelser elegant. Du kan tilpasse oprydningsfunktionen, så den matcher dine specifikke behov, såsom at lukke filer, stoppe processer eller logge oplysninger, før scriptet afsluttes.

Forklaring:

  1. #!/bin/bash: Denne shebang-linje specificerer den fortolker, der skal bruges til at køre scriptet.
  2. cleanup() { … }: Dette definerer en funktion ved navn cleanup. Inde i denne funktion kan du inkludere alle handlinger, der skal udføres, når scriptet afbrydes, såsom at lukke filer, frigive ressourcer eller udføre andre oprydningsopgaver.
  3. trap cleanup SIGINT: Trappe-kommandoen bruges til at opsætte en signalhåndtering. I dette tilfælde specificerer den, at når SIGINT-signalet (Ctrl+C) modtages, skal oprydningsfunktionen udføres.
  4. echo Running…, sleep 10, echo Finished.: Dette er blot eksempelkommandoer til at simulere udførelsen af ​​et script.

446

19) Opret et script, der tjekker for og fjerner duplikerede linjer i en tekstfil.

Her er vores linux-script, hvor vi fjerner duplikerede linjer fra en tekstfil.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sorter $input_fil | uniq> $output_fil
echo Duplikerede linjer blev fjernet.

Forklaring:

  1. Scriptet starter med en shebang (#!/bin/bash), som angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. Variablen input_file er sat til navnet på inputfilen, der indeholder duplikerede linjer (ændre dette til dit faktiske inputfilnavn).
  3. Variablen output_file er sat til navnet på outputfilen, hvor duplikaterne vil blive fjernet (ændre dette til dit ønskede outputfilnavn).
  4. Scriptet bruger sorteringskommandoen til at sortere linjerne i inputfilen. Sortering af linjerne sikrer, at duplikerede linjer grupperes sammen.
  5. De sorterede linjer sendes derefter gennem uniq-kommandoen, som fjerner på hinanden følgende duplikerede linjer. Outputtet fra denne proces omdirigeres til outputfilen.
  6. Når dubletterne er fjernet, udskriver scriptet en succesmeddelelse.
fjernelse af dobbelt linje

duplikatlinjefjernelse

Her bruger vi ` kat ` for at vise teksten inde i tekstfilen.

20) Skriv et script, der genererer en sikker tilfældig adgangskode.

Her er vores script til at generere en sikker tilfældig adgangskode.

#!/bin/bash
# Funktion til at generere en tilfældig adgangskode
generere_adgangskode() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Kald funktionen og gem den genererede adgangskode
password=$(generer_adgangskode)
echo Genereret adgangskode: $password

Bemærk: Brugeren kan derfor ændre længden af ​​adgangskoden ved at erstatte tallet '12'.

Forklaring:

  1. Scriptet starter med en shebang (#!/bin/bash), hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
  2. Generer_password-funktionen er defineret til at generere en tilfældig adgangskode. Sådan fungerer det:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 opdeler de filtrerede tilfældige data i linjer med bredde på 12 tegn hver.
    • head -n 1 vælger den første linje, hvilket i praksis giver os en tilfældig sekvens af tegn med længden 12.
  3. Adgangskodevariablen tildeles resultatet af at kalde funktionen gener_password.
  4. Til sidst vises den genererede adgangskode ved hjælp af ekko.

448

21) Skriv et shell-script, der beregner den samlede størrelse af alle filer i en mappe.

Her er et shell-script til at beregne den samlede størrelse af alle filer i en mappe.

#!/bin/bash
mappe=/sti/til/din/mappe
total_size=$(du -csh $directory | grep total | awk ‘{print }’)
echo Samlet størrelse af filer i $mappe: $total_size

Forklaring:

  1. Scriptet starter med #!/bin/bash shebang, hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
  2. Bibliotekvariablen er sat til stien til den mappe, som du vil beregne den samlede filstørrelse for. Erstat /sti/til/din/mappe med den faktiske sti.
  3. Kommandoen du bruges til at estimere brugen af ​​filplads. De anvendte muligheder er:
    • -c: Fremstil en totalsum.
    • -s: Vis kun den samlede størrelse af den angivne mappe.
    • -h: Udskriftsstørrelser i et format, der kan læses af mennesker (f.eks. KB, MB, GB).
  4. Outputtet fra du sendes til grep total for at bortfiltrere linjen, der indeholder den samlede størrelse.
  5. awk '{print }' bruges til at udtrække det første felt (samlet størrelse) fra linjen.
  6. Den beregnede samlede størrelse gemmes i variablen total_size.
  7. Endelig viser scriptet den samlede størrelse ved hjælp af ekko.
Samlet størrelse af filer

Samlet størrelse af filer

Her brugte vi ` pwd ` kommando for at se den aktuelle mappesti.

22) Forklar forskellen mellem if- og elif-sætninger i shell-scripting.

Feature `hvis` Staiftement `elif`-erklæring
Formål Forklar forskellen mellem if- og elif-sætninger i shell-scripting. Giver alternative betingelser for at kontrollere, hvornår den oprindelige, hvis betingelsen er falsk.
brug Brugt til den oprindelige tilstand. Brugt efter den indledende if-tilstand for at kontrollere yderligere forhold.
antal blokke Kan kun have én hvis blok. Kan have flere elif-blokke, men kun én anden blok (valgfrit).
Udførelse Udfører den kodeblok, der er knyttet til if-sætningen, hvis betingelsen er sand. Hvis betingelsen er falsk, udføres den anden blok (hvis den findes) (valgfrit). Kontrollerer hver elif tilstand i rækkefølge. Hvis én elif-betingelse er sand, udføres den tilsvarende kodeblok, og scriptet afslutter hele den betingede blok. Hvis ingen af ​​elif-betingelserne er sande, udføres else-blokken (hvis den er til stede).
Indlejrede strukturer Kan indlejres i andre if-, elif- eller else-blokke. Kan ikke indlejres i en anden elif-blok, men kan bruges i en if eller else-blok.

Lad os forstå det med et eksempel.

#!/bin/bash
nummer=5
if [$nummer -gt 10]; derefter
echo $nummer er større end 10
andet
echo $nummer er ikke større end 10
være
ekko ---
if [$nummer -gt 10]; derefter
echo $nummer er større end 10
elif [$nummer -eq 10]; derefter
echo $nummer er lig med 10
andet
echo $nummer er mindre end 10
være

Forklaring:

I dette eksempel kontrollerer den første if-blok, om tallet er større end 10. Hvis ikke, udskriver den en meddelelse, der angiver, at tallet ikke er større end 10. Den anden blok med elif-sætninger kontrollerer flere betingelser sekventielt, indtil en af ​​dem er sand. I dette tilfælde, da værdien af ​​nummer er 5, vil outputtet være:

if_elif forskel

if_elif forskel

23) Hvordan bruger du en while-løkke til gentagne gange at udføre kommandoer?

En while-løkke bruges i shell-scripting til gentagne gange at udføre et sæt kommandoer, så længe en specificeret betingelse er sand. Sløjfen fortsætter med at udføre kommandoerne, indtil betingelsen bliver falsk.

Her er den grundlæggende syntaks for en while-løkke:

mens [betingelse]; gør
# Kommandoer, der skal udføres
Færdig

Forklaring:

  1. `While`-løkken starter med nøgleordet `while` efterfulgt af en betingelse omsluttet af firkantede parenteser `[ ]`.
  2. Sløjfens krop, som indeholder de kommandoer, der skal udføres, er omsluttet af nøgleordene 'do' og 'done'.
  3. Løkken tjekker først tilstanden. Hvis betingelsen er sand, udføres kommandoerne i loop-legemet. Efter at loop-kroppen er udført, kontrolleres betingelsen igen, og processen gentages, indtil betingelsen bliver falsk.

Eksempel: Hvis vi ønsker at udskrive tal fra 1 til 5

#!/bin/bash
tæller=1
while [ $tæller -le 5 ]; gør
ekkonummer: $counter
tæller=$((tæller + 1))
Færdig

Forklaring:

  • Tællervariablen er sat til 1.
  • While-løkken kontrollerer, om værdien af ​​tælleren er mindre end eller lig med 5. Så længe denne betingelse er sand, fortsætter løkken med at udføre.
  • Inde i løkken udskrives den aktuelle værdi af tælleren ved hjælp af ekko.
  • Tælleren øges med 1 ved hjælp af udtrykket $((tæller + 1)).
mens loop

mens loop

forbindelser i java

24) Opret et shell-script, der finder og viser alle tomme filer i en mappe.

Shell-script, som du kan bruge til at finde og liste alle tomme filer i en mappe ved hjælp af kommandoerne `find` og `stat`:

#!/bin/bash
mappe=″
if [-z $mappe]; derefter
ekkobrug:

For alle Linux-distributioner er shell-scriptet som en tryllestav, der automatiserer processen, sparer brugere tid og øger produktiviteten. Denne skal scripting tutorial vil introducere dig til de 25 plus skal scripting eksempler.

Men før vi går videre til emnet shell scripting eksempler, lad os forstå shell-script og de faktiske anvendelsestilfælde af shell-scripting.

Hvad er Shell Script?

Nå, skallen er en CLI ( kommandolinjefortolker ), som kører i et tekstvindue, hvor brugere kan administrere og udføre shell-kommandoer. På den anden side, processen med at skrive et sæt kommandoer, der skal udføres på et Linux-system. En fil, der indeholder sådanne instruktioner, kaldes et bash-script.

Brug af Shell Scripts

Nedenfor er nogle almindelige anvendelser af Shell Script:

  • Opgaveautomatisering – Det kan bruges til at automatisere gentagne opgaver som almindelige sikkerhedskopier og softwareinstallationsopgaver.
  • Tilpasning – Man kan bruge shell-scripts til at designe sit kommandolinjemiljø og nemt udføre sin opgave efter behov.
  • Filhåndtering – Shell-scripts kan også bruges til at administrere og manipulere filer og mapper, såsom flytning, kopiering, omdøbning eller sletning af filer.

Shell Script eksempler i Linux

1) Hvad indikerer shebang (#!) i begyndelsen af ​​et shell-script?

Det shebang (#!) i begyndelsen af ​​et script angiver den fortolker, der skal bruges til at udføre scriptet. Det fortæller systemet, hvilken shell eller fortolker der skal fortolke scriptets kommandoer.

For eksempel: Antag, at vi har et script ved navn myscript.sh skrevet i Bash-skallen:

shebang

shebang

I dette eksempel:

  • #!/bin/bash i begyndelsen af ​​scriptet indikerer, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  • Ekkokommandoerne bruges til at udskrive beskeder til terminalen.

2) Hvordan kører du et shell-script fra kommandolinjen?

For at køre et shell-script fra kommandolinjen skal vi følge disse trin:

  • Sørg for, at scriptfilen har eksekverbare tilladelser ved hjælp af chmod kommando :
chmod +x myscript.sh>
  • Udfør scriptet med dets filnavn:
./myscript.sh>

Her skal du udskifte myscrtipt.sh med dit manuskriptnavn.

3) Skriv et shell-script, der udskriver techcodeview.com til terminalen.

Opret et scriptnavn `myscript.sh` (vi bruger ` fordi ` editor, du kan vælge enhver editor)

vim myscript.sh>

#!/bin/bash
# Dette script udskriver techcodeview.com til terminalen
echo techcodeview.com

Print navn

Print navn

Vi gør vores script eksekverbart ved at bruge `chmod +x`, kør derefter med `./myscipt.sh` og få vores ønskede output techcodeview.com.

4) Forklar formålet med echo-kommandoen i shell-scripting.

Det ekko kommando bruges til at vise tekst eller variabler på terminalen. Det bruges almindeligvis til udskrivning af meddelelser, variable værdier og generering af programoutput.

434

ekko kommando

I dette eksempel har vi eksekveret `echo` på terminalen direkte, da det fungerer på samme måde inde i shell-scriptet.

5) Hvordan kan du tildele en værdi til en variabel i et shell-script?

Variabler tildeles værdier ved hjælp af tildelingsoperatoren =.

For eksempel:

#!/bin/bash
# Tildeling af en værdi til en variabel
navn=Jayesh
alder=21
echo $navn $age

Forklaring:

  • Navnevariablen tildeles værdien Jayesh.
  • Aldersvariablen tildeles værdien 21.
  • echo bruges til at udskrive og `$name` `$age` bruges til at kalde værdien gemt i variablerne.

435

6) Skriv et shell-script, der tager en brugers navn som input og hilser på dem.

Opret et scriptnavn `example.sh`.

#!/bin/bash
# Spørg brugeren om deres navn
echo Hvad er dit navn?
læs navn
# Hils brugeren
echo Hej, $navn! Dejligt at møde dig.

Forklaring:

  • #!/bin/bash: Dette er shebang-linjen. Det fortæller systemet at bruge Bash-fortolkeren til at udføre scriptet.
  • # Spørg brugeren om deres navn: Dette er en kommentar. Det giver kontekst om den kommende kode. Kommentarer ignoreres af tolken.
  • echo Hvad er dit navn?: Echo-kommandoen bruges til at vise teksten i dobbelte anførselstegn på terminalen.
  • read name: Read-kommandoen venter på, at brugeren indtaster tekst og gemmer den i variabelnavnet.
  • echo Hej, $navn! Rart at møde dig.: Denne linje bruger ekko-kommandoen til at udskrive en hilsen, der inkluderer værdien af ​​navnevariablen, som blev indsamlet fra brugerens input.

436

7) Hvordan tilføjer du kommentarer til et shell-script?

Kommentarer i shell-scripting bruges til at give forklaringer eller kontekst til koden. De ignoreres af tolken og er kun beregnet til mennesker, der læser manuskriptet. Du kan tilføje kommentarer ved at bruge #-symbolet.

#!/bin/bash
# Dette er en kommentar, der forklarer formålet med scriptet
ekko gfg

8) Opret et shell-script, der kontrollerer, om der findes en fil i den aktuelle mappe.

Her er et script, der kontrollerer, om en fil med navnet example.txt findes i den aktuelle mappe:

#!/bin/bash
file=example.txt
# Tjek om filen findes
if [ -e $fil ]; derefter
echo Filen findes: $file
andet
echo Filen blev ikke fundet: $fil
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
  2. file=example.txt: Denne linje definerer variabelfilen og tildeler værdien example.txt til den. Du kan erstatte dette med navnet på den fil, du vil søge efter.
  3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Betingelsen [-e $file] kontrollerer, om filen, der er angivet af værdien af ​​filvariablen, eksisterer. Flaget -e bruges til at kontrollere, om filen eksisterer.
  4. echo File exists: $file: Hvis betingelsen er sand (dvs. filen eksisterer), udskriver denne linje en meddelelse, der angiver, at filen eksisterer, sammen med filens navn.
  5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), udfører scriptet koden under else-grenen.
  6. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der angiver, at den angivne fil ikke blev fundet, sammen med filens navn.
  7. fi: Denne linje markerer slutningen af ​​if-sætningen.
Finder fil

Finder fil

9) Hvad er forskellen mellem enkelte anførselstegn (') og dobbelte anførselstegn () i shell-scripting?

Enkelte anførselstegn (') og dobbelte anførselstegn () bruges til at omslutte strenge i shell-scripting, men de har forskellig adfærd:

  • Enkelte citater: Alt mellem enkelte citater behandles som en bogstavelig streng. Variabelnavne og de fleste specialtegn udvides ikke.
  • Dobbelte anførselstegn: Variabler og visse specialtegn inden for dobbelte anførselstegn udvides. Indholdet er underlagt variabel substitution og kommandosubstitution.

#!/bin/bash

abcd=Hej
echo '$abcd' # Output: $abcd
echo $abcd # Output: Hej

10) Hvordan kan du bruge kommandolinjeargumenter i et shell-script?

Kommandolinjeargumenter er værdier, der leveres til et script, når det udføres. De kan tilgås i scriptet ved hjælp af specielle variabler som $1, $2 osv., hvor $1 repræsenterer det første argument, $2 repræsenterer det andet argument, og så videre.

For eksempel: Hvis vores scriptnavn i `eksempel.sh`

#!/bin/bash

echo Script navn: $0
echo Første argument: $1
echo Andet argument: $2

Hvis vi kører scriptet med `.example.sh hello_1 hello_2`, vil det udlæse:

cli argumenter

cli argumenter

11) Hvordan bruger du for-løkken til at gentage en liste med værdier?

Opret et scriptnavn `example.sh`.

#!/bin/bash

frugter = (æble banan kirsebær daddel)
for frugt i ${fruits[@]}; gør
echo Nuværende frugt: $fruit
Færdig

Forklaring:

`fruits=`-linjen opretter et array med navnet frugter med fire elementer: æble, banan, kirsebær og daddel.

  • for frugt i ${fruits[@]}; do: Denne linje starter en for-løkke. Her er hvad hver del betyder:
  • for frugt: Dette erklærer en loop-variabel kaldet frugt. I hver iteration af løkken vil frugt holde værdien af ​​det aktuelle element fra frugtarrayet.
  • ${fruits[@]}: Dette er en matrixudvidelse, der tager alle elementerne fra frugtarrayet. ${…}-syntaksen sikrer, at hvert element behandles som et separat element.
  • do: Dette nøgleord markerer begyndelsen af ​​løkketeksten.
  • echo Current fruit: $fruit: Inde i løkken bruger denne linje echo-kommandoen til at vise den aktuelle værdi af løkkevariablen frugt. Den udskriver en besked som Current fruit: apple for hver frugt i arrayet.
  • done: Dette nøgleord markerer slutningen af ​​løkkens krop. Det fortæller scriptet, at løkken er afsluttet.
for sløjfe

for sløjfe

12) Skriv et shell-script, der beregner summen af ​​heltal fra 1 til N ved hjælp af en loop.

Opret et scriptnavn `example.sh`.

#!/bin/bash

echo Indtast et tal (N):
læs N
sum=0
for ((i=1; i<=$N; i++)); gør
sum=$((sum + i))
Færdig
echo Summen af ​​heltal fra 1 til $N er: $sum

Forklaring:
Scriptet starter med at bede dig om at indtaste et tal (N) ved hjælp af read. Dette tal bestemmer, hvor mange gange løkken kører.

  1. Variablen sum initialiseres til 0. Denne variabel vil holde styr på summen af ​​heltal.
  2. For-løkken begynder med for (( i=1; i<=$N; i++ )). Denne sløjfestruktur bruges til at gentage et sæt handlinger et vist antal gange, i dette tilfælde fra 1 til værdien af ​​N.
  3. Inde i løkken sker disse ting:
    • i=1 sætter loop-variablen i til 1 i begyndelsen af ​​hver iteration.
    • Sløjfebetingelsen i<=$N kontrollerer, om i stadig er mindre end eller lig med det givne tal N.
    • Hvis betingelsen er sand, udføres loop body.
    • sum=$((sum + i)) beregner den nye værdi af sum ved at tilføje den aktuelle værdi af i. Dette summerer hele tallene fra 1 til den aktuelle i-værdi.
  4. Efter hver iteration øger i++ værdien af ​​i med 1.
  5. Sløjfen fortsætter med at køre, indtil betingelsen i<=$N bliver falsk (når i bliver større end N).
  6. Når løkken er færdig, viser scriptet summen af ​​heltal fra 1 til det indtastede tal N.

439

13) Opret et script, der søger efter et bestemt ord i en fil og tæller dets forekomster.

Opret et scriptnavn `word_count.sh`

#!/bin/bash

echo Indtast ordet for at søge efter:
læs target_word
echo Indtast filnavnet:
læs filnavn
count=$(grep -o -w $mål_ord $filnavn | wc -l)
echo Ordet '$target_word' vises $tæller gange i '$filnavn'.

Forklaring:

  • echo Indtast ordet, der skal søges efter:: Denne linje viser en meddelelse, der beder brugeren om at indtaste et ord, de vil søge efter i en fil.
  • read target_word: Denne linje læser input fra brugeren og gemmer det i en variabel ved navn target_word.
  • echo Indtast filnavnet:: Denne linje viser en meddelelse, der beder brugeren om at indtaste navnet på den fil, de vil søge i.
  • læs filnavn: Denne linje læser input fra brugeren og gemmer det i en variabel med navnet filnavn.
  • count=$(grep -o -w $mål_ord $filnavn | wc -l): Denne linje udfører scriptets hovedarbejde. Lad os opdele det yderligere:
    • grep -o -w $target_word $filnavn: Denne del af kommandoen søger efter forekomster af target_word i det angivne filnavn. Valgmulighederne -o og -w sikrer, at kun hele ordmatches tælles.
    • |: Dette er et rør, som tager outputtet fra den forrige kommando og sender det som input til den næste kommando.
    • wc -l: Denne del af kommandoen bruger wc-kommandoen til at tælle antallet af linjer i inputtet. Valgmuligheden -l tæller specifikt linjerne.
    • Hele kommandoen beregner antallet af forekomster af target_word i filen og tildeler denne optælling til variablen antal

441

14) Forklar forskellene mellem standard output (stdout) og standardfejl (stderr).

Hovedforskellen mellem standardoutput (stdout) og standardfejl (stderr) er som følger:

  • Standard output (stdout): Dette er standardoutputstrømmen, hvor en kommandos almindelige output går. Det vises som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af>.
  • Standardfejl (stderr): Dette er outputstrømmen for fejlmeddelelser og advarsler. Det vises også som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af 2>.

15) Forklar begrebet betingede udsagn i shell scripting.

Betingede udsagn i shell-scripting give os mulighed for at træffe beslutninger og kontrollere flowet af vores script baseret på visse betingelser. De gør det muligt for vores script at udføre forskellige sæt kommandoer afhængigt af, om en bestemt betingelse er sand eller falsk. De primære betingede sætninger i shell-scripting er if-sætningen, elif-sætningen (valgfri) og else-sætningen (valgfri).

Her er den grundlæggende struktur af en betinget erklæring i shell-scripting:

if [betingelse]; derefter
# Kommandoer til at udføre, hvis betingelsen er sand
elif [en anden_tilstand]; derefter
# Kommandoer til at udføre, hvis another_condition er sand (valgfrit)
andet
# Kommandoer til at udføre, hvis ingen af ​​betingelserne er sande (valgfrit)
være

Forklaring:

  • [ condition ] = Kommando, der evaluerer betingelsen og returnerer en sand (0) eller falsk (ikke-nul) udgangsstatus.
  • then = Det er et nøgleord, der angiver, at kommandoerne efter det vil blive udført, hvis betingelsen evalueres til sand.
  • elif = (forkortelse for else if) Det er et afsnit, der giver os mulighed for at angive yderligere betingelser for at kontrollere.
  • else = det er en sektion, der indeholder kommandoer, der vil blive udført, hvis ingen af ​​betingelserne er sande.
  • fi = Det er et nøgleord, der markerer slutningen af ​​den betingede blok.

16) Hvordan læser du linjer fra en fil i et shell-script?

Til læse linjer fra en fil i et shell-script, kan vi bruge forskellige metoder, men en almindelig fremgangsmåde er at bruge en while-løkke i kombination med read-kommandoen. Sådan kan vi gøre det:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Tjek om filen findes
if [ -e $fil ]; derefter
mens IFS= læser -r linje; gør
echo Linje læst: $line
# Tilføj din behandlingslogik her
færdig <$fil
andet
echo Filen blev ikke fundet: $fil
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
  2. file=/home/jayeshkumar/jayesh.txt: Denne linje definerer variabelfilen og tildeler den fulde sti til filen jayesh.txt i mappen /home/jayeshkumar. Skift denne sti, så den matcher den faktiske sti til den fil, du vil læse.
  3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Den kontrollerer, om filen angivet af variablen $file eksisterer. Flaget -e kontrollerer for fileksistens.
  4. mens IFS= læser -r linje; do: Denne linje starter en while-løkke, der læser linjer fra filen.
    • IFS=: IFS (Internal Field Separator) er sat til en tom værdi for at bevare førende og efterfølgende mellemrum.
    • read -r line: Dette læser den aktuelle linje fra filen og gemmer den i den variable linje.
  5. echo Line read: $line: Denne linje udskriver indholdet af den linje, der blev læst fra filen. Variablen $line indeholder den aktuelle linjes indhold.
  6. # Tilføj din behandlingslogik her: Dette er en pladsholderkommentar, hvor du kan tilføje din egen logik til at behandle hver linje. For eksempel kan du analysere linjen, udtrække information eller udføre specifikke handlinger baseret på indholdet.
  7. done <$file: Dette markerer slutningen af ​​while-løkken. < $filen omdirigerer indholdet af filen, der skal læses af løkken.
  8. else: Hvis filen ikke eksisterer (betingelsen i if-sætningen er falsk), udfører scriptet koden under else-grenen.
  9. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der indikerer, at den angivne fil ikke blev fundet.
  10. fi: Denne linje markerer slutningen af ​​if-sætningen.
læse fil

læse fil

Her brugte vi ` pwd ` kommando for at få stien til den aktuelle mappe.

17) Skriv en funktion i et shell-script, der beregner fakultetet af et givet tal.

Her er manuskriptetudregn faktorenaf et givet tal.

#!/bin/bash
# Definer en funktion til at beregne factorial
beregne_faktor() {
num=$1
fakta=1
for ((i=1; i<=tal; i++)); gør
fakta=$((faktum * i))
Færdig
ekko $fakta
}
# Bed brugeren om at indtaste et nummer
echo Indtast et tal:
læs input_num
# Kald calculate_fatorial-funktionen med det indtastede nummer
factorial_result=$(calculate_fatorial $input_num)
# Vis det faktorielle resultat
echo Factorial af $input_num er: $factorial_result

Forklaring:

  1. Scriptet starter med shebang-linjen #!/bin/bash for at angive tolken.
  2. calculate_fatorial() er defineret som en funktion. Det kræver et argument, num, som er det tal, som faktoren skal beregnes for.
  3. Inde i funktionen initialiseres fakta til 1. Denne variabel vil gemme det faktorielle resultat.
  4. For-løkken itererer fra 1 til det givne tal (num). I hver iteration multipliceres den aktuelle værdi af fakta med loop-indekset i.
  5. Når løkken er fuldført, indeholder faktavariablen den beregnede faktor.
  6. Scriptet beder brugeren om at indtaste et tal ved hjælp af read.
  7. calculate_fatorial-funktionen kaldes med det brugerangivne tal, og resultatet gemmes i variablen factorial_result.
  8. Til sidst viser scriptet det beregnede faktorielle resultat.
Faktoriel

Faktoriel

18) Hvordan håndterer du signaler som Ctrl+C i et shell-script?

I et shell-script kan du håndtere signaler som Ctrl+C (også kendt som SIGINT) ved at bruge trap-kommandoen. Ctrl+C genererer et SIGINT-signal, når brugeren trykker på det for at afbryde det kørende script eller program. Ved at bruge trap-kommandoen kan du specificere handlinger, der skal udføres, når et bestemt signal modtages. Sådan håndterer du signaler som Ctrl+C i et shell-script:

#!/bin/bash
Ryd op() {
echo Script afbrudt. Udfører oprydning...
# Tilføj dine oprydningshandlinger her
udgang 1
}
# Opsæt en fælde for at kalde oprydningsfunktionen, når Ctrl+C (SIGINT) modtages
fældeoprydning SIGINT
# Resten af ​​dit script
ekko kører...
sove 10
ekko Færdig.

Håndtering af signaler er vigtig for at gøre scripts robuste og sikre, at de håndterer uventede afbrydelser elegant. Du kan tilpasse oprydningsfunktionen, så den matcher dine specifikke behov, såsom at lukke filer, stoppe processer eller logge oplysninger, før scriptet afsluttes.

Forklaring:

  1. #!/bin/bash: Denne shebang-linje specificerer den fortolker, der skal bruges til at køre scriptet.
  2. cleanup() { … }: Dette definerer en funktion ved navn cleanup. Inde i denne funktion kan du inkludere alle handlinger, der skal udføres, når scriptet afbrydes, såsom at lukke filer, frigive ressourcer eller udføre andre oprydningsopgaver.
  3. trap cleanup SIGINT: Trappe-kommandoen bruges til at opsætte en signalhåndtering. I dette tilfælde specificerer den, at når SIGINT-signalet (Ctrl+C) modtages, skal oprydningsfunktionen udføres.
  4. echo Running…, sleep 10, echo Finished.: Dette er blot eksempelkommandoer til at simulere udførelsen af ​​et script.

446

19) Opret et script, der tjekker for og fjerner duplikerede linjer i en tekstfil.

Her er vores linux-script, hvor vi fjerner duplikerede linjer fra en tekstfil.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sorter $input_fil | uniq> $output_fil
echo Duplikerede linjer blev fjernet.

Forklaring:

  1. Scriptet starter med en shebang (#!/bin/bash), som angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. Variablen input_file er sat til navnet på inputfilen, der indeholder duplikerede linjer (ændre dette til dit faktiske inputfilnavn).
  3. Variablen output_file er sat til navnet på outputfilen, hvor duplikaterne vil blive fjernet (ændre dette til dit ønskede outputfilnavn).
  4. Scriptet bruger sorteringskommandoen til at sortere linjerne i inputfilen. Sortering af linjerne sikrer, at duplikerede linjer grupperes sammen.
  5. De sorterede linjer sendes derefter gennem uniq-kommandoen, som fjerner på hinanden følgende duplikerede linjer. Outputtet fra denne proces omdirigeres til outputfilen.
  6. Når dubletterne er fjernet, udskriver scriptet en succesmeddelelse.
fjernelse af dobbelt linje

duplikatlinjefjernelse

Her bruger vi ` kat ` for at vise teksten inde i tekstfilen.

20) Skriv et script, der genererer en sikker tilfældig adgangskode.

Her er vores script til at generere en sikker tilfældig adgangskode.

#!/bin/bash
# Funktion til at generere en tilfældig adgangskode
generere_adgangskode() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Kald funktionen og gem den genererede adgangskode
password=$(generer_adgangskode)
echo Genereret adgangskode: $password

Bemærk: Brugeren kan derfor ændre længden af ​​adgangskoden ved at erstatte tallet '12'.

Forklaring:

  1. Scriptet starter med en shebang (#!/bin/bash), hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
  2. Generer_password-funktionen er defineret til at generere en tilfældig adgangskode. Sådan fungerer det:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 opdeler de filtrerede tilfældige data i linjer med bredde på 12 tegn hver.
    • head -n 1 vælger den første linje, hvilket i praksis giver os en tilfældig sekvens af tegn med længden 12.
  3. Adgangskodevariablen tildeles resultatet af at kalde funktionen gener_password.
  4. Til sidst vises den genererede adgangskode ved hjælp af ekko.

448

21) Skriv et shell-script, der beregner den samlede størrelse af alle filer i en mappe.

Her er et shell-script til at beregne den samlede størrelse af alle filer i en mappe.

#!/bin/bash
mappe=/sti/til/din/mappe
total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
echo Samlet størrelse af filer i $mappe: $total_size

Forklaring:

  1. Scriptet starter med #!/bin/bash shebang, hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
  2. Bibliotekvariablen er sat til stien til den mappe, som du vil beregne den samlede filstørrelse for. Erstat /sti/til/din/mappe med den faktiske sti.
  3. Kommandoen du bruges til at estimere brugen af ​​filplads. De anvendte muligheder er:
    • -c: Fremstil en totalsum.
    • -s: Vis kun den samlede størrelse af den angivne mappe.
    • -h: Udskriftsstørrelser i et format, der kan læses af mennesker (f.eks. KB, MB, GB).
  4. Outputtet fra du sendes til grep total for at bortfiltrere linjen, der indeholder den samlede størrelse.
  5. awk '{print $1}' bruges til at udtrække det første felt (samlet størrelse) fra linjen.
  6. Den beregnede samlede størrelse gemmes i variablen total_size.
  7. Endelig viser scriptet den samlede størrelse ved hjælp af ekko.
Samlet størrelse af filer

Samlet størrelse af filer

Her brugte vi ` pwd ` kommando for at se den aktuelle mappesti.

22) Forklar forskellen mellem if- og elif-sætninger i shell-scripting.

Feature `hvis` Staiftement `elif`-erklæring
Formål Forklar forskellen mellem if- og elif-sætninger i shell-scripting. Giver alternative betingelser for at kontrollere, hvornår den oprindelige, hvis betingelsen er falsk.
brug Brugt til den oprindelige tilstand. Brugt efter den indledende if-tilstand for at kontrollere yderligere forhold.
antal blokke Kan kun have én hvis blok. Kan have flere elif-blokke, men kun én anden blok (valgfrit).
Udførelse Udfører den kodeblok, der er knyttet til if-sætningen, hvis betingelsen er sand. Hvis betingelsen er falsk, udføres den anden blok (hvis den findes) (valgfrit). Kontrollerer hver elif tilstand i rækkefølge. Hvis én elif-betingelse er sand, udføres den tilsvarende kodeblok, og scriptet afslutter hele den betingede blok. Hvis ingen af ​​elif-betingelserne er sande, udføres else-blokken (hvis den er til stede).
Indlejrede strukturer Kan indlejres i andre if-, elif- eller else-blokke. Kan ikke indlejres i en anden elif-blok, men kan bruges i en if eller else-blok.

Lad os forstå det med et eksempel.

#!/bin/bash
nummer=5
if [$nummer -gt 10]; derefter
echo $nummer er større end 10
andet
echo $nummer er ikke større end 10
være
ekko ---
if [$nummer -gt 10]; derefter
echo $nummer er større end 10
elif [$nummer -eq 10]; derefter
echo $nummer er lig med 10
andet
echo $nummer er mindre end 10
være

Forklaring:

I dette eksempel kontrollerer den første if-blok, om tallet er større end 10. Hvis ikke, udskriver den en meddelelse, der angiver, at tallet ikke er større end 10. Den anden blok med elif-sætninger kontrollerer flere betingelser sekventielt, indtil en af ​​dem er sand. I dette tilfælde, da værdien af ​​nummer er 5, vil outputtet være:

if_elif forskel

if_elif forskel

23) Hvordan bruger du en while-løkke til gentagne gange at udføre kommandoer?

En while-løkke bruges i shell-scripting til gentagne gange at udføre et sæt kommandoer, så længe en specificeret betingelse er sand. Sløjfen fortsætter med at udføre kommandoerne, indtil betingelsen bliver falsk.

Her er den grundlæggende syntaks for en while-løkke:

mens [betingelse]; gør
# Kommandoer, der skal udføres
Færdig

Forklaring:

  1. `While`-løkken starter med nøgleordet `while` efterfulgt af en betingelse omsluttet af firkantede parenteser `[ ]`.
  2. Sløjfens krop, som indeholder de kommandoer, der skal udføres, er omsluttet af nøgleordene 'do' og 'done'.
  3. Løkken tjekker først tilstanden. Hvis betingelsen er sand, udføres kommandoerne i loop-legemet. Efter at loop-kroppen er udført, kontrolleres betingelsen igen, og processen gentages, indtil betingelsen bliver falsk.

Eksempel: Hvis vi ønsker at udskrive tal fra 1 til 5

#!/bin/bash
tæller=1
while [ $tæller -le 5 ]; gør
ekkonummer: $counter
tæller=$((tæller + 1))
Færdig

Forklaring:

  • Tællervariablen er sat til 1.
  • While-løkken kontrollerer, om værdien af ​​tælleren er mindre end eller lig med 5. Så længe denne betingelse er sand, fortsætter løkken med at udføre.
  • Inde i løkken udskrives den aktuelle værdi af tælleren ved hjælp af ekko.
  • Tælleren øges med 1 ved hjælp af udtrykket $((tæller + 1)).
mens loop

mens loop

24) Opret et shell-script, der finder og viser alle tomme filer i en mappe.

Shell-script, som du kan bruge til at finde og liste alle tomme filer i en mappe ved hjælp af kommandoerne `find` og `stat`:

#!/bin/bash
mappe=$1″
if [-z $mappe]; derefter
ekkobrug: $0
udgang 1
være

hvis [! -d $katalog ]; derefter
echo Error: '$directory' er ikke en gyldig mappe.
udgang 1
være
echo tomme filer i $directory:
find $katalog -type f -tom

Forklaring:

  1. ` #!/bin/bash `: Dette kaldes en shebang, og det fortæller operativsystemet at bruge Bash-skallen til at fortolke og udføre scriptet.
  2. ` mappe=$1″ `: Denne linje tildeler det første kommandolinjeargument (angivet med $1) til variablen ` vejviser `.
  3. ` if [-z $mappe]; derefter `: Denne linje starter en if-sætning, der kontrollerer om ` vejviser ` variabel er tom (-z tester for en tom streng).
  4. ` ekkobrug: $0 `: Hvis mappen er tom, udskriver denne linje en brugsmeddelelse, hvor ` $0 ` repræsenterer scriptets navn.
  5. ` udgang 1 `: Denne linje afslutter scriptet med en exitkode på ` 1 `, hvilket indikerer en fejl.
  6. ` være `: Denne linje markerer slutningen af ​​` hvis ` erklæring.
  7. ` hvis [! -d $katalog ]; derefter `: Dette starter en anden if-sætning for at kontrollere, om den angivne mappe eksisterer (` -d ` tester for en mappe).
  8. ` echo Error: '$directory' er ikke en gyldig mappe. `: Hvis den angivne mappe ikke eksisterer, udskriver denne linje en fejlmeddelelse.
  9. ` udgang 1 `: Afslutter scriptet med en exit-kode på ` 1 `.
  10. ` være `: Markerer slutningen af ​​den anden ` hvis` udmelding.
  11. ` echo tomme filer i $directory: `: Hvis alt er gyldigt indtil videre, udskriver denne linje en meddelelse, der angiver, at scriptet vil vise tomme filer i den angivne mappe.
  12. ` find $katalog -type f -tom `: Denne linje bruger ` Find ` kommando til at søge efter tomme filer (` -tom `) af typen almindelige filer (` -type f `) i den angivne mappe. Det viser derefter disse tomme filer.
Finder tomme filer

Finder tomme filer

Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det nuværende bibliotek home/jayeshkumar/

25) Hvad er formålet med read-kommandoen i shell-scripting?

Read-kommandoen i shell-scripting lader scriptet bede dig om information. Det er ligesom når en computer stiller dig et spørgsmål og venter på dit svar. Dette er nyttigt til scripts, der kræver, at du skriver noget, eller når scriptet skal arbejde med information fra filer. Read-kommandoen hjælper scriptet med at stoppe og vente på, hvad du skriver, og så kan det bruge disse oplysninger til at gøre flere ting i scriptet.

Syntaks for læsekommando:

read variable_name>

Eksempel : Hvis vi ønsker at tage navn som input fra brugeren for at udskrive det.

#!/bin/bash
echo Indtast venligst dit navn:
læs navn
echo Hej, $navn!

453

læs nam

Sammenfattende bruges read-kommandoen til at fange brugerinput eller data fra filer i shell-scripts, hvilket gør scripts mere interaktive og alsidige.

26) Skriv et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

Her er et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

#!/bin/bash
mappe=$1″
if [-z $mappe]; derefter
ekkobrug: $0
udgang 1
være

hvis [! -d $katalog ]; derefter

echo Error: '$directory' er ikke en gyldig mappe.
udgang 1
være

cd $katalog || udgang 1

for fil i *; gør
if [-f $fil ]; derefter
newname=$(ekko $fil | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
være
Færdig

Forklaring:

  1. #!/bin/bash : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. mappe=$1″ : Denne linje tildeler det første kommandolinjeargument til den variable mappe.
  3. if [-z $mappe]; derefter : Denne linje kontrollerer, om biblioteksvariablen er tom (intet argument angivet ved kørsel af scriptet).
  4. ekkobrug: $0 : Hvis mappen er tom, udskriver denne linje en brugsmeddelelse med scriptets navn ($0).
  5. udgang 1 : Denne linje afslutter scriptet med en exitkode på 1, hvilket indikerer, at der er opstået en fejl.
  6. f i: Dette markerer slutningen af ​​den første if-sætning.
  7. hvis [! -d $katalog ]; derefter : Denne linje kontrollerer, om den angivne mappe ikke eksisterer (-d tester for en mappe).
  8. echo Error: '$directory' er ikke en gyldig mappe. : Hvis den angivne mappe ikke findes, udskriver denne linje en fejlmeddelelse.
  9. udgang 1 : Afslutter scriptet med en exitkode på 1.
  10. være : Markerer slutningen af ​​den anden if-sætning.
  11. cd $katalog || udgang 1 : Ændrer den aktuelle arbejdsmappe til den angivne mappe. Hvis mappeændringen mislykkes (f.eks. ikke-eksisterende mappe), afsluttes scriptet med en fejlkode.
  12. for fil i *; gør: jeg for fil i *; gør: starter en loop, der itererer over alle elementer i den aktuelle mappe (* matcher alle filnavne).
  13. if [-f $fil ]; derefter : Kontrollerer, om det aktuelle loop-iterationselement er en almindelig fil (-f tester for en almindelig fil).
  14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer det aktuelle filnavn ($file) til små bogstaver ved hjælp af tr-kommandoen og gemmer resultatet i newname-variablen.
  15. [ $file != $newname ] && mv $file $newname : Sammenligner det originale filnavn med det nye lille filnavn. Hvis de er forskellige, omdøber den filen ved hjælp af mv-kommandoen.
  16. være : Markerer slutningen af ​​den indre if-sætning.
  17. Færdig : Markerer slutningen af ​​løkken.

454

Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det aktuelle bibliotek home/jayeshkumar/test

27) Hvordan kan du bruge aritmetiske operationer i et shell-script?

Aritmetiske operationer kan udføres i et shell-script ved hjælp af forskellige indbyggede metoder. Skallen giver mekanismer til simple aritmetiske beregninger ved hjælp af aritmetisk udvidelse som:

  1. Aritmetisk udvidelse ($((…)))
  2. Bruger kommandoen expr
  3. Brug let Command

Her er vores Shell-script, der forklarer alle tre metoder til aritmetiske operationer.

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

#Aritmetisk udvidelse ($((…)))

resultat=$((tal1 + tal2))
echo Sum: $resultat

#Bruger kommandoen expr

sum=$(udg. $num1 + $num2)
echo Sum: $sum

#Brug let Command

lad sum = num1 + num2
echo Sum: $sum

Forklaring:

  1. `#!/bin/bash` : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. `tal1=10` og ` num2=5` : Disse linjer tildeler værdierne 10 og 5 til variablerne ` nummer1 ` og ` nummer 2 `, henholdsvis.
  3. `#Aritmetisk udvidelse ($((...)))` : Dette er en kommentar, der angiver starten på afsnittet, der demonstrerer aritmetisk udvidelse.
  4. `resultat=$((tal1 + tal2))` : Denne linje bruger aritmetisk ekspansion til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` resultat ` variabel.
  5. `ekko Sum: $resultat` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` resultat ` variabel.
  6. `#Using expr Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` udtr ` kommando til aritmetiske operationer.
  7. `sum=$(udtr. $num1 + $num2)` : Denne linje bruger ` udtr ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` sum ` variabel. Bemærk, at ` udtr ` kommando kræver mellemrum omkring operatørerne.
  8. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
  9. `#Brug let Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` lade ` kommando til aritmetiske operationer.
  10. `lad sum = num1 + num2″` : Denne linje bruger ` lade ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og tildeler resultatet til ` sum ` variabel. Den ` lade ` kommandoen kræver ikke mellemrum omkring operatørerne.
  11. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
aritmetik

aritmetik

28) Opret et script, der kontrollerer, om en netværksvært er tilgængelig.

Her er et simpelt shell-script, der bruger ping-kommandoen til at kontrollere, om en netværksvært er tilgængelig:

#!/bin/bash
vært=$1″
if [ -z $host ]; derefter
ekkobrug: $0
udgang 1
være
ping -c 4 $host

hvis [$? -ækv 0]; derefter
echo $host er tilgængelig.
andet
echo $host er ikke tilgængelig.
være

Forklaring:

  1. Den tager et værtsnavn eller IP-adresse som argument og kontrollerer, om argumentet er angivet.
  2. Hvis der ikke er angivet noget argument, viser det en brugsmeddelelse og afsluttes.
  3. Den bruger ping-kommandoen med -c 4-indstillingen til at sende fire ICMP-ekko-anmodninger til den angivne vært.
  4. Efter at ping-kommandoen er kørt, kontrollerer den exit-statussen ($?). Hvis exit-statussen er 0, betyder det, at værten er tilgængelig, og scriptet udskriver en succesmeddelelse. Ellers udskriver den en fejlmeddelelse.

456

Bemærk : Vi skal angive et værtsnavn som argument, når vi kører scriptet. Her har vi brugt google.com

29) Skriv et Shell-script for at finde det største element i et array:

Her er et shell-script til at finde det bedste element i et array.

#!/bin/bash
# Erklære et array
matrix=(3 56 24 89 67)

# Initialiser en variabel for at gemme den maksimale værdi, startende med det første element

max=${array[0]}

# Iterér gennem arrayet

for num i ${array[@]}; gør

# Sammenlign hvert element med det aktuelle maksimum

if ((antal> maks)); derefter
max=$antal
være
Færdig

# Udskriv den maksimale værdi

echo Det maksimale element i arrayet er: $max

Forklaring:

  1. ` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. ` matrix=(3 56 24 89 67) `: Arrayet erklæres og initialiseres med værdier.
  3. ` max=${array[0]} `: `max` initialiseres med det første element i arrayet.
  4. ` for num i ${array[@]}; gør `: En `for`-løkke bruges til at iterere gennem elementerne i arrayet.
  5. ` if ((antal> maks)); derefter `: En `if`-sætning kontrollerer, om det aktuelle element `num` er større end det aktuelle maksimum `max`.
  6. ` max=$num`: Hvis`num ` er større end `max`, er `max` opdateret med værdien num.
  7. ` Færdig `: `For`-løkken er lukket.
  8. ` echo Det maksimale element i arrayet er: $max `: Endelig udskriver scriptet den maksimale værdi fundet i arrayet.
461

største antal

30) Skriv et script til at beregne summen af ​​elementer i et array.

#!/bin/bash

# Erklære et array

matrix=(1 65 22 19 94)

# Initialiser en variabel for at gemme summen

sum=0

# Iterér gennem arrayet og føj hvert element til summen

for num i ${array[@]}; gør
am=$((am + am))
Færdig

# Udskriv summen

echo Summen af ​​elementer i arrayet er: $sum

Forklaring:

` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.

` matrix=(1 65 22 19 94) `: Arrayet erklæres og initialiseres med værdier.

` sum=0 `:` sum ` initialiseres til nul for at holde summen af ​​elementer.

` for num i ${array[@]}; gør `: A ` til ` loop bruges til at iterere gennem elementerne i arrayet.

` am=$((am + am)) `: Inde i løkken, hvert element ` på en ` tilføjes til ` sum ` variabel.

` Færdig `: Den ` til ` sløjfen er lukket.

`echo Summen af ​​elementer i arrayet er: $sum`: Til sidst udskriver scriptet summen af ​​alle elementer i arrayet.

462

Summen af ​​elementer

Få mere at vide om Shell-scripts

Konklusion

Vi ved alle nørder, at shell-script er meget nyttigt for at øge arbejdsproduktiviteten såvel som det sparer tid. Så i denne artikel har vi dækket 30 meget nyttige og mest besnærende shell-scripts eksempler . Vi håber, at denne komplette vejledning om shell-scripting-eksempel hjælper dig med at forstå alt om shell-scripts.




udgang 1
være

hvis [! -d $katalog ]; derefter
echo Error: '$directory' er ikke en gyldig mappe.
udgang 1
være
echo tomme filer i $directory:
find $katalog -type f -tom

Forklaring:

  1. ` #!/bin/bash `: Dette kaldes en shebang, og det fortæller operativsystemet at bruge Bash-skallen til at fortolke og udføre scriptet.
  2. ` mappe=″ `: Denne linje tildeler det første kommandolinjeargument (angivet med ) til variablen ` vejviser `.
  3. ` if [-z $mappe]; derefter `: Denne linje starter en if-sætning, der kontrollerer om ` vejviser ` variabel er tom (-z tester for en tom streng).
  4. ` ekkobrug:

    For alle Linux-distributioner er shell-scriptet som en tryllestav, der automatiserer processen, sparer brugere tid og øger produktiviteten. Denne skal scripting tutorial vil introducere dig til de 25 plus skal scripting eksempler.

    Men før vi går videre til emnet shell scripting eksempler, lad os forstå shell-script og de faktiske anvendelsestilfælde af shell-scripting.

    Hvad er Shell Script?

    Nå, skallen er en CLI ( kommandolinjefortolker ), som kører i et tekstvindue, hvor brugere kan administrere og udføre shell-kommandoer. På den anden side, processen med at skrive et sæt kommandoer, der skal udføres på et Linux-system. En fil, der indeholder sådanne instruktioner, kaldes et bash-script.

    Brug af Shell Scripts

    Nedenfor er nogle almindelige anvendelser af Shell Script:

    • Opgaveautomatisering – Det kan bruges til at automatisere gentagne opgaver som almindelige sikkerhedskopier og softwareinstallationsopgaver.
    • Tilpasning – Man kan bruge shell-scripts til at designe sit kommandolinjemiljø og nemt udføre sin opgave efter behov.
    • Filhåndtering – Shell-scripts kan også bruges til at administrere og manipulere filer og mapper, såsom flytning, kopiering, omdøbning eller sletning af filer.

    Shell Script eksempler i Linux

    1) Hvad indikerer shebang (#!) i begyndelsen af ​​et shell-script?

    Det shebang (#!) i begyndelsen af ​​et script angiver den fortolker, der skal bruges til at udføre scriptet. Det fortæller systemet, hvilken shell eller fortolker der skal fortolke scriptets kommandoer.

    For eksempel: Antag, at vi har et script ved navn myscript.sh skrevet i Bash-skallen:

    shebang

    shebang

    I dette eksempel:

    • #!/bin/bash i begyndelsen af ​​scriptet indikerer, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    • Ekkokommandoerne bruges til at udskrive beskeder til terminalen.

    2) Hvordan kører du et shell-script fra kommandolinjen?

    For at køre et shell-script fra kommandolinjen skal vi følge disse trin:

    • Sørg for, at scriptfilen har eksekverbare tilladelser ved hjælp af chmod kommando :
    chmod +x myscript.sh>
    • Udfør scriptet med dets filnavn:
    ./myscript.sh>

    Her skal du udskifte myscrtipt.sh med dit manuskriptnavn.

    3) Skriv et shell-script, der udskriver techcodeview.com til terminalen.

    Opret et scriptnavn `myscript.sh` (vi bruger ` fordi ` editor, du kan vælge enhver editor)

    vim myscript.sh>

    #!/bin/bash
    # Dette script udskriver techcodeview.com til terminalen
    echo techcodeview.com

    Print navn

    Print navn

    Vi gør vores script eksekverbart ved at bruge `chmod +x`, kør derefter med `./myscipt.sh` og få vores ønskede output techcodeview.com.

    4) Forklar formålet med echo-kommandoen i shell-scripting.

    Det ekko kommando bruges til at vise tekst eller variabler på terminalen. Det bruges almindeligvis til udskrivning af meddelelser, variable værdier og generering af programoutput.

    434

    ekko kommando

    I dette eksempel har vi eksekveret `echo` på terminalen direkte, da det fungerer på samme måde inde i shell-scriptet.

    5) Hvordan kan du tildele en værdi til en variabel i et shell-script?

    Variabler tildeles værdier ved hjælp af tildelingsoperatoren =.

    For eksempel:

    #!/bin/bash
    # Tildeling af en værdi til en variabel
    navn=Jayesh
    alder=21
    echo $navn $age

    Forklaring:

    • Navnevariablen tildeles værdien Jayesh.
    • Aldersvariablen tildeles værdien 21.
    • echo bruges til at udskrive og `$name` `$age` bruges til at kalde værdien gemt i variablerne.

    435

    6) Skriv et shell-script, der tager en brugers navn som input og hilser på dem.

    Opret et scriptnavn `example.sh`.

    #!/bin/bash
    # Spørg brugeren om deres navn
    echo Hvad er dit navn?
    læs navn
    # Hils brugeren
    echo Hej, $navn! Dejligt at møde dig.

    Forklaring:

    • #!/bin/bash: Dette er shebang-linjen. Det fortæller systemet at bruge Bash-fortolkeren til at udføre scriptet.
    • # Spørg brugeren om deres navn: Dette er en kommentar. Det giver kontekst om den kommende kode. Kommentarer ignoreres af tolken.
    • echo Hvad er dit navn?: Echo-kommandoen bruges til at vise teksten i dobbelte anførselstegn på terminalen.
    • read name: Read-kommandoen venter på, at brugeren indtaster tekst og gemmer den i variabelnavnet.
    • echo Hej, $navn! Rart at møde dig.: Denne linje bruger ekko-kommandoen til at udskrive en hilsen, der inkluderer værdien af ​​navnevariablen, som blev indsamlet fra brugerens input.

    436

    7) Hvordan tilføjer du kommentarer til et shell-script?

    Kommentarer i shell-scripting bruges til at give forklaringer eller kontekst til koden. De ignoreres af tolken og er kun beregnet til mennesker, der læser manuskriptet. Du kan tilføje kommentarer ved at bruge #-symbolet.

    #!/bin/bash
    # Dette er en kommentar, der forklarer formålet med scriptet
    ekko gfg

    8) Opret et shell-script, der kontrollerer, om der findes en fil i den aktuelle mappe.

    Her er et script, der kontrollerer, om en fil med navnet example.txt findes i den aktuelle mappe:

    #!/bin/bash
    file=example.txt
    # Tjek om filen findes
    if [ -e $fil ]; derefter
    echo Filen findes: $file
    andet
    echo Filen blev ikke fundet: $fil
    være

    Forklaring:

    1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
    2. file=example.txt: Denne linje definerer variabelfilen og tildeler værdien example.txt til den. Du kan erstatte dette med navnet på den fil, du vil søge efter.
    3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Betingelsen [-e $file] kontrollerer, om filen, der er angivet af værdien af ​​filvariablen, eksisterer. Flaget -e bruges til at kontrollere, om filen eksisterer.
    4. echo File exists: $file: Hvis betingelsen er sand (dvs. filen eksisterer), udskriver denne linje en meddelelse, der angiver, at filen eksisterer, sammen med filens navn.
    5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), udfører scriptet koden under else-grenen.
    6. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der angiver, at den angivne fil ikke blev fundet, sammen med filens navn.
    7. fi: Denne linje markerer slutningen af ​​if-sætningen.
    Finder fil

    Finder fil

    9) Hvad er forskellen mellem enkelte anførselstegn (') og dobbelte anførselstegn () i shell-scripting?

    Enkelte anførselstegn (') og dobbelte anførselstegn () bruges til at omslutte strenge i shell-scripting, men de har forskellig adfærd:

    • Enkelte citater: Alt mellem enkelte citater behandles som en bogstavelig streng. Variabelnavne og de fleste specialtegn udvides ikke.
    • Dobbelte anførselstegn: Variabler og visse specialtegn inden for dobbelte anførselstegn udvides. Indholdet er underlagt variabel substitution og kommandosubstitution.

    #!/bin/bash

    abcd=Hej
    echo '$abcd' # Output: $abcd
    echo $abcd # Output: Hej

    10) Hvordan kan du bruge kommandolinjeargumenter i et shell-script?

    Kommandolinjeargumenter er værdier, der leveres til et script, når det udføres. De kan tilgås i scriptet ved hjælp af specielle variabler som $1, $2 osv., hvor $1 repræsenterer det første argument, $2 repræsenterer det andet argument, og så videre.

    For eksempel: Hvis vores scriptnavn i `eksempel.sh`

    #!/bin/bash

    echo Script navn: $0
    echo Første argument: $1
    echo Andet argument: $2

    Hvis vi kører scriptet med `.example.sh hello_1 hello_2`, vil det udlæse:

    cli argumenter

    cli argumenter

    11) Hvordan bruger du for-løkken til at gentage en liste med værdier?

    Opret et scriptnavn `example.sh`.

    #!/bin/bash

    frugter = (æble banan kirsebær daddel)
    for frugt i ${fruits[@]}; gør
    echo Nuværende frugt: $fruit
    Færdig

    Forklaring:

    `fruits=`-linjen opretter et array med navnet frugter med fire elementer: æble, banan, kirsebær og daddel.

    • for frugt i ${fruits[@]}; do: Denne linje starter en for-løkke. Her er hvad hver del betyder:
    • for frugt: Dette erklærer en loop-variabel kaldet frugt. I hver iteration af løkken vil frugt holde værdien af ​​det aktuelle element fra frugtarrayet.
    • ${fruits[@]}: Dette er en matrixudvidelse, der tager alle elementerne fra frugtarrayet. ${…}-syntaksen sikrer, at hvert element behandles som et separat element.
    • do: Dette nøgleord markerer begyndelsen af ​​løkketeksten.
    • echo Current fruit: $fruit: Inde i løkken bruger denne linje echo-kommandoen til at vise den aktuelle værdi af løkkevariablen frugt. Den udskriver en besked som Current fruit: apple for hver frugt i arrayet.
    • done: Dette nøgleord markerer slutningen af ​​løkkens krop. Det fortæller scriptet, at løkken er afsluttet.
    for sløjfe

    for sløjfe

    12) Skriv et shell-script, der beregner summen af ​​heltal fra 1 til N ved hjælp af en loop.

    Opret et scriptnavn `example.sh`.

    #!/bin/bash

    echo Indtast et tal (N):
    læs N
    sum=0
    for ((i=1; i<=$N; i++)); gør
    sum=$((sum + i))
    Færdig
    echo Summen af ​​heltal fra 1 til $N er: $sum

    Forklaring:
    Scriptet starter med at bede dig om at indtaste et tal (N) ved hjælp af read. Dette tal bestemmer, hvor mange gange løkken kører.

    1. Variablen sum initialiseres til 0. Denne variabel vil holde styr på summen af ​​heltal.
    2. For-løkken begynder med for (( i=1; i<=$N; i++ )). Denne sløjfestruktur bruges til at gentage et sæt handlinger et vist antal gange, i dette tilfælde fra 1 til værdien af ​​N.
    3. Inde i løkken sker disse ting:
      • i=1 sætter loop-variablen i til 1 i begyndelsen af ​​hver iteration.
      • Sløjfebetingelsen i<=$N kontrollerer, om i stadig er mindre end eller lig med det givne tal N.
      • Hvis betingelsen er sand, udføres loop body.
      • sum=$((sum + i)) beregner den nye værdi af sum ved at tilføje den aktuelle værdi af i. Dette summerer hele tallene fra 1 til den aktuelle i-værdi.
    4. Efter hver iteration øger i++ værdien af ​​i med 1.
    5. Sløjfen fortsætter med at køre, indtil betingelsen i<=$N bliver falsk (når i bliver større end N).
    6. Når løkken er færdig, viser scriptet summen af ​​heltal fra 1 til det indtastede tal N.

    439

    13) Opret et script, der søger efter et bestemt ord i en fil og tæller dets forekomster.

    Opret et scriptnavn `word_count.sh`

    #!/bin/bash

    echo Indtast ordet for at søge efter:
    læs target_word
    echo Indtast filnavnet:
    læs filnavn
    count=$(grep -o -w $mål_ord $filnavn | wc -l)
    echo Ordet '$target_word' vises $tæller gange i '$filnavn'.

    Forklaring:

    • echo Indtast ordet, der skal søges efter:: Denne linje viser en meddelelse, der beder brugeren om at indtaste et ord, de vil søge efter i en fil.
    • read target_word: Denne linje læser input fra brugeren og gemmer det i en variabel ved navn target_word.
    • echo Indtast filnavnet:: Denne linje viser en meddelelse, der beder brugeren om at indtaste navnet på den fil, de vil søge i.
    • læs filnavn: Denne linje læser input fra brugeren og gemmer det i en variabel med navnet filnavn.
    • count=$(grep -o -w $mål_ord $filnavn | wc -l): Denne linje udfører scriptets hovedarbejde. Lad os opdele det yderligere:
      • grep -o -w $target_word $filnavn: Denne del af kommandoen søger efter forekomster af target_word i det angivne filnavn. Valgmulighederne -o og -w sikrer, at kun hele ordmatches tælles.
      • |: Dette er et rør, som tager outputtet fra den forrige kommando og sender det som input til den næste kommando.
      • wc -l: Denne del af kommandoen bruger wc-kommandoen til at tælle antallet af linjer i inputtet. Valgmuligheden -l tæller specifikt linjerne.
      • Hele kommandoen beregner antallet af forekomster af target_word i filen og tildeler denne optælling til variablen antal

    441

    14) Forklar forskellene mellem standard output (stdout) og standardfejl (stderr).

    Hovedforskellen mellem standardoutput (stdout) og standardfejl (stderr) er som følger:

    • Standard output (stdout): Dette er standardoutputstrømmen, hvor en kommandos almindelige output går. Det vises som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af>.
    • Standardfejl (stderr): Dette er outputstrømmen for fejlmeddelelser og advarsler. Det vises også som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af 2>.

    15) Forklar begrebet betingede udsagn i shell scripting.

    Betingede udsagn i shell-scripting give os mulighed for at træffe beslutninger og kontrollere flowet af vores script baseret på visse betingelser. De gør det muligt for vores script at udføre forskellige sæt kommandoer afhængigt af, om en bestemt betingelse er sand eller falsk. De primære betingede sætninger i shell-scripting er if-sætningen, elif-sætningen (valgfri) og else-sætningen (valgfri).

    Her er den grundlæggende struktur af en betinget erklæring i shell-scripting:

    if [betingelse]; derefter
    # Kommandoer til at udføre, hvis betingelsen er sand
    elif [en anden_tilstand]; derefter
    # Kommandoer til at udføre, hvis another_condition er sand (valgfrit)
    andet
    # Kommandoer til at udføre, hvis ingen af ​​betingelserne er sande (valgfrit)
    være

    Forklaring:

    • [ condition ] = Kommando, der evaluerer betingelsen og returnerer en sand (0) eller falsk (ikke-nul) udgangsstatus.
    • then = Det er et nøgleord, der angiver, at kommandoerne efter det vil blive udført, hvis betingelsen evalueres til sand.
    • elif = (forkortelse for else if) Det er et afsnit, der giver os mulighed for at angive yderligere betingelser for at kontrollere.
    • else = det er en sektion, der indeholder kommandoer, der vil blive udført, hvis ingen af ​​betingelserne er sande.
    • fi = Det er et nøgleord, der markerer slutningen af ​​den betingede blok.

    16) Hvordan læser du linjer fra en fil i et shell-script?

    Til læse linjer fra en fil i et shell-script, kan vi bruge forskellige metoder, men en almindelig fremgangsmåde er at bruge en while-løkke i kombination med read-kommandoen. Sådan kan vi gøre det:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Tjek om filen findes
    if [ -e $fil ]; derefter
    mens IFS= læser -r linje; gør
    echo Linje læst: $line
    # Tilføj din behandlingslogik her
    færdig <$fil
    andet
    echo Filen blev ikke fundet: $fil
    være

    Forklaring:

    1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
    2. file=/home/jayeshkumar/jayesh.txt: Denne linje definerer variabelfilen og tildeler den fulde sti til filen jayesh.txt i mappen /home/jayeshkumar. Skift denne sti, så den matcher den faktiske sti til den fil, du vil læse.
    3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Den kontrollerer, om filen angivet af variablen $file eksisterer. Flaget -e kontrollerer for fileksistens.
    4. mens IFS= læser -r linje; do: Denne linje starter en while-løkke, der læser linjer fra filen.
      • IFS=: IFS (Internal Field Separator) er sat til en tom værdi for at bevare førende og efterfølgende mellemrum.
      • read -r line: Dette læser den aktuelle linje fra filen og gemmer den i den variable linje.
    5. echo Line read: $line: Denne linje udskriver indholdet af den linje, der blev læst fra filen. Variablen $line indeholder den aktuelle linjes indhold.
    6. # Tilføj din behandlingslogik her: Dette er en pladsholderkommentar, hvor du kan tilføje din egen logik til at behandle hver linje. For eksempel kan du analysere linjen, udtrække information eller udføre specifikke handlinger baseret på indholdet.
    7. done <$file: Dette markerer slutningen af ​​while-løkken. < $filen omdirigerer indholdet af filen, der skal læses af løkken.
    8. else: Hvis filen ikke eksisterer (betingelsen i if-sætningen er falsk), udfører scriptet koden under else-grenen.
    9. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der indikerer, at den angivne fil ikke blev fundet.
    10. fi: Denne linje markerer slutningen af ​​if-sætningen.
    læse fil

    læse fil

    Her brugte vi ` pwd ` kommando for at få stien til den aktuelle mappe.

    17) Skriv en funktion i et shell-script, der beregner fakultetet af et givet tal.

    Her er manuskriptetudregn faktorenaf et givet tal.

    #!/bin/bash
    # Definer en funktion til at beregne factorial
    beregne_faktor() {
    num=$1
    fakta=1
    for ((i=1; i<=tal; i++)); gør
    fakta=$((faktum * i))
    Færdig
    ekko $fakta
    }
    # Bed brugeren om at indtaste et nummer
    echo Indtast et tal:
    læs input_num
    # Kald calculate_fatorial-funktionen med det indtastede nummer
    factorial_result=$(calculate_fatorial $input_num)
    # Vis det faktorielle resultat
    echo Factorial af $input_num er: $factorial_result

    Forklaring:

    1. Scriptet starter med shebang-linjen #!/bin/bash for at angive tolken.
    2. calculate_fatorial() er defineret som en funktion. Det kræver et argument, num, som er det tal, som faktoren skal beregnes for.
    3. Inde i funktionen initialiseres fakta til 1. Denne variabel vil gemme det faktorielle resultat.
    4. For-løkken itererer fra 1 til det givne tal (num). I hver iteration multipliceres den aktuelle værdi af fakta med loop-indekset i.
    5. Når løkken er fuldført, indeholder faktavariablen den beregnede faktor.
    6. Scriptet beder brugeren om at indtaste et tal ved hjælp af read.
    7. calculate_fatorial-funktionen kaldes med det brugerangivne tal, og resultatet gemmes i variablen factorial_result.
    8. Til sidst viser scriptet det beregnede faktorielle resultat.
    Faktoriel

    Faktoriel

    18) Hvordan håndterer du signaler som Ctrl+C i et shell-script?

    I et shell-script kan du håndtere signaler som Ctrl+C (også kendt som SIGINT) ved at bruge trap-kommandoen. Ctrl+C genererer et SIGINT-signal, når brugeren trykker på det for at afbryde det kørende script eller program. Ved at bruge trap-kommandoen kan du specificere handlinger, der skal udføres, når et bestemt signal modtages. Sådan håndterer du signaler som Ctrl+C i et shell-script:

    #!/bin/bash
    Ryd op() {
    echo Script afbrudt. Udfører oprydning...
    # Tilføj dine oprydningshandlinger her
    udgang 1
    }
    # Opsæt en fælde for at kalde oprydningsfunktionen, når Ctrl+C (SIGINT) modtages
    fældeoprydning SIGINT
    # Resten af ​​dit script
    ekko kører...
    sove 10
    ekko Færdig.

    Håndtering af signaler er vigtig for at gøre scripts robuste og sikre, at de håndterer uventede afbrydelser elegant. Du kan tilpasse oprydningsfunktionen, så den matcher dine specifikke behov, såsom at lukke filer, stoppe processer eller logge oplysninger, før scriptet afsluttes.

    Forklaring:

    1. #!/bin/bash: Denne shebang-linje specificerer den fortolker, der skal bruges til at køre scriptet.
    2. cleanup() { … }: Dette definerer en funktion ved navn cleanup. Inde i denne funktion kan du inkludere alle handlinger, der skal udføres, når scriptet afbrydes, såsom at lukke filer, frigive ressourcer eller udføre andre oprydningsopgaver.
    3. trap cleanup SIGINT: Trappe-kommandoen bruges til at opsætte en signalhåndtering. I dette tilfælde specificerer den, at når SIGINT-signalet (Ctrl+C) modtages, skal oprydningsfunktionen udføres.
    4. echo Running…, sleep 10, echo Finished.: Dette er blot eksempelkommandoer til at simulere udførelsen af ​​et script.

    446

    19) Opret et script, der tjekker for og fjerner duplikerede linjer i en tekstfil.

    Her er vores linux-script, hvor vi fjerner duplikerede linjer fra en tekstfil.

    #!/bin/bash
    input_file=input.txt
    output_file=output.txt
    sorter $input_fil | uniq> $output_fil
    echo Duplikerede linjer blev fjernet.

    Forklaring:

    1. Scriptet starter med en shebang (#!/bin/bash), som angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    2. Variablen input_file er sat til navnet på inputfilen, der indeholder duplikerede linjer (ændre dette til dit faktiske inputfilnavn).
    3. Variablen output_file er sat til navnet på outputfilen, hvor duplikaterne vil blive fjernet (ændre dette til dit ønskede outputfilnavn).
    4. Scriptet bruger sorteringskommandoen til at sortere linjerne i inputfilen. Sortering af linjerne sikrer, at duplikerede linjer grupperes sammen.
    5. De sorterede linjer sendes derefter gennem uniq-kommandoen, som fjerner på hinanden følgende duplikerede linjer. Outputtet fra denne proces omdirigeres til outputfilen.
    6. Når dubletterne er fjernet, udskriver scriptet en succesmeddelelse.
    fjernelse af dobbelt linje

    duplikatlinjefjernelse

    Her bruger vi ` kat ` for at vise teksten inde i tekstfilen.

    20) Skriv et script, der genererer en sikker tilfældig adgangskode.

    Her er vores script til at generere en sikker tilfældig adgangskode.

    #!/bin/bash
    # Funktion til at generere en tilfældig adgangskode
    generere_adgangskode() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Kald funktionen og gem den genererede adgangskode
    password=$(generer_adgangskode)
    echo Genereret adgangskode: $password

    Bemærk: Brugeren kan derfor ændre længden af ​​adgangskoden ved at erstatte tallet '12'.

    Forklaring:

    1. Scriptet starter med en shebang (#!/bin/bash), hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
    2. Generer_password-funktionen er defineret til at generere en tilfældig adgangskode. Sådan fungerer det:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 opdeler de filtrerede tilfældige data i linjer med bredde på 12 tegn hver.
      • head -n 1 vælger den første linje, hvilket i praksis giver os en tilfældig sekvens af tegn med længden 12.
    3. Adgangskodevariablen tildeles resultatet af at kalde funktionen gener_password.
    4. Til sidst vises den genererede adgangskode ved hjælp af ekko.

    448

    21) Skriv et shell-script, der beregner den samlede størrelse af alle filer i en mappe.

    Her er et shell-script til at beregne den samlede størrelse af alle filer i en mappe.

    #!/bin/bash
    mappe=/sti/til/din/mappe
    total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
    echo Samlet størrelse af filer i $mappe: $total_size

    Forklaring:

    1. Scriptet starter med #!/bin/bash shebang, hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
    2. Bibliotekvariablen er sat til stien til den mappe, som du vil beregne den samlede filstørrelse for. Erstat /sti/til/din/mappe med den faktiske sti.
    3. Kommandoen du bruges til at estimere brugen af ​​filplads. De anvendte muligheder er:
      • -c: Fremstil en totalsum.
      • -s: Vis kun den samlede størrelse af den angivne mappe.
      • -h: Udskriftsstørrelser i et format, der kan læses af mennesker (f.eks. KB, MB, GB).
    4. Outputtet fra du sendes til grep total for at bortfiltrere linjen, der indeholder den samlede størrelse.
    5. awk '{print $1}' bruges til at udtrække det første felt (samlet størrelse) fra linjen.
    6. Den beregnede samlede størrelse gemmes i variablen total_size.
    7. Endelig viser scriptet den samlede størrelse ved hjælp af ekko.
    Samlet størrelse af filer

    Samlet størrelse af filer

    Her brugte vi ` pwd ` kommando for at se den aktuelle mappesti.

    22) Forklar forskellen mellem if- og elif-sætninger i shell-scripting.

    Feature `hvis` Staiftement `elif`-erklæring
    Formål Forklar forskellen mellem if- og elif-sætninger i shell-scripting. Giver alternative betingelser for at kontrollere, hvornår den oprindelige, hvis betingelsen er falsk.
    brug Brugt til den oprindelige tilstand. Brugt efter den indledende if-tilstand for at kontrollere yderligere forhold.
    antal blokke Kan kun have én hvis blok. Kan have flere elif-blokke, men kun én anden blok (valgfrit).
    Udførelse Udfører den kodeblok, der er knyttet til if-sætningen, hvis betingelsen er sand. Hvis betingelsen er falsk, udføres den anden blok (hvis den findes) (valgfrit). Kontrollerer hver elif tilstand i rækkefølge. Hvis én elif-betingelse er sand, udføres den tilsvarende kodeblok, og scriptet afslutter hele den betingede blok. Hvis ingen af ​​elif-betingelserne er sande, udføres else-blokken (hvis den er til stede).
    Indlejrede strukturer Kan indlejres i andre if-, elif- eller else-blokke. Kan ikke indlejres i en anden elif-blok, men kan bruges i en if eller else-blok.

    Lad os forstå det med et eksempel.

    #!/bin/bash
    nummer=5
    if [$nummer -gt 10]; derefter
    echo $nummer er større end 10
    andet
    echo $nummer er ikke større end 10
    være
    ekko ---
    if [$nummer -gt 10]; derefter
    echo $nummer er større end 10
    elif [$nummer -eq 10]; derefter
    echo $nummer er lig med 10
    andet
    echo $nummer er mindre end 10
    være

    Forklaring:

    I dette eksempel kontrollerer den første if-blok, om tallet er større end 10. Hvis ikke, udskriver den en meddelelse, der angiver, at tallet ikke er større end 10. Den anden blok med elif-sætninger kontrollerer flere betingelser sekventielt, indtil en af ​​dem er sand. I dette tilfælde, da værdien af ​​nummer er 5, vil outputtet være:

    if_elif forskel

    if_elif forskel

    23) Hvordan bruger du en while-løkke til gentagne gange at udføre kommandoer?

    En while-løkke bruges i shell-scripting til gentagne gange at udføre et sæt kommandoer, så længe en specificeret betingelse er sand. Sløjfen fortsætter med at udføre kommandoerne, indtil betingelsen bliver falsk.

    Her er den grundlæggende syntaks for en while-løkke:

    mens [betingelse]; gør
    # Kommandoer, der skal udføres
    Færdig

    Forklaring:

    1. `While`-løkken starter med nøgleordet `while` efterfulgt af en betingelse omsluttet af firkantede parenteser `[ ]`.
    2. Sløjfens krop, som indeholder de kommandoer, der skal udføres, er omsluttet af nøgleordene 'do' og 'done'.
    3. Løkken tjekker først tilstanden. Hvis betingelsen er sand, udføres kommandoerne i loop-legemet. Efter at loop-kroppen er udført, kontrolleres betingelsen igen, og processen gentages, indtil betingelsen bliver falsk.

    Eksempel: Hvis vi ønsker at udskrive tal fra 1 til 5

    #!/bin/bash
    tæller=1
    while [ $tæller -le 5 ]; gør
    ekkonummer: $counter
    tæller=$((tæller + 1))
    Færdig

    Forklaring:

    • Tællervariablen er sat til 1.
    • While-løkken kontrollerer, om værdien af ​​tælleren er mindre end eller lig med 5. Så længe denne betingelse er sand, fortsætter løkken med at udføre.
    • Inde i løkken udskrives den aktuelle værdi af tælleren ved hjælp af ekko.
    • Tælleren øges med 1 ved hjælp af udtrykket $((tæller + 1)).
    mens loop

    mens loop

    24) Opret et shell-script, der finder og viser alle tomme filer i en mappe.

    Shell-script, som du kan bruge til at finde og liste alle tomme filer i en mappe ved hjælp af kommandoerne `find` og `stat`:

    #!/bin/bash
    mappe=$1″
    if [-z $mappe]; derefter
    ekkobrug: $0
    udgang 1
    være

    hvis [! -d $katalog ]; derefter
    echo Error: '$directory' er ikke en gyldig mappe.
    udgang 1
    være
    echo tomme filer i $directory:
    find $katalog -type f -tom

    Forklaring:

    1. ` #!/bin/bash `: Dette kaldes en shebang, og det fortæller operativsystemet at bruge Bash-skallen til at fortolke og udføre scriptet.
    2. ` mappe=$1″ `: Denne linje tildeler det første kommandolinjeargument (angivet med $1) til variablen ` vejviser `.
    3. ` if [-z $mappe]; derefter `: Denne linje starter en if-sætning, der kontrollerer om ` vejviser ` variabel er tom (-z tester for en tom streng).
    4. ` ekkobrug: $0 `: Hvis mappen er tom, udskriver denne linje en brugsmeddelelse, hvor ` $0 ` repræsenterer scriptets navn.
    5. ` udgang 1 `: Denne linje afslutter scriptet med en exitkode på ` 1 `, hvilket indikerer en fejl.
    6. ` være `: Denne linje markerer slutningen af ​​` hvis ` erklæring.
    7. ` hvis [! -d $katalog ]; derefter `: Dette starter en anden if-sætning for at kontrollere, om den angivne mappe eksisterer (` -d ` tester for en mappe).
    8. ` echo Error: '$directory' er ikke en gyldig mappe. `: Hvis den angivne mappe ikke eksisterer, udskriver denne linje en fejlmeddelelse.
    9. ` udgang 1 `: Afslutter scriptet med en exit-kode på ` 1 `.
    10. ` være `: Markerer slutningen af ​​den anden ` hvis` udmelding.
    11. ` echo tomme filer i $directory: `: Hvis alt er gyldigt indtil videre, udskriver denne linje en meddelelse, der angiver, at scriptet vil vise tomme filer i den angivne mappe.
    12. ` find $katalog -type f -tom `: Denne linje bruger ` Find ` kommando til at søge efter tomme filer (` -tom `) af typen almindelige filer (` -type f `) i den angivne mappe. Det viser derefter disse tomme filer.
    Finder tomme filer

    Finder tomme filer

    Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det nuværende bibliotek home/jayeshkumar/

    25) Hvad er formålet med read-kommandoen i shell-scripting?

    Read-kommandoen i shell-scripting lader scriptet bede dig om information. Det er ligesom når en computer stiller dig et spørgsmål og venter på dit svar. Dette er nyttigt til scripts, der kræver, at du skriver noget, eller når scriptet skal arbejde med information fra filer. Read-kommandoen hjælper scriptet med at stoppe og vente på, hvad du skriver, og så kan det bruge disse oplysninger til at gøre flere ting i scriptet.

    Syntaks for læsekommando:

    read variable_name>

    Eksempel : Hvis vi ønsker at tage navn som input fra brugeren for at udskrive det.

    #!/bin/bash
    echo Indtast venligst dit navn:
    læs navn
    echo Hej, $navn!

    453

    læs nam

    Sammenfattende bruges read-kommandoen til at fange brugerinput eller data fra filer i shell-scripts, hvilket gør scripts mere interaktive og alsidige.

    26) Skriv et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

    Her er et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

    #!/bin/bash
    mappe=$1″
    if [-z $mappe]; derefter
    ekkobrug: $0
    udgang 1
    være

    hvis [! -d $katalog ]; derefter

    echo Error: '$directory' er ikke en gyldig mappe.
    udgang 1
    være

    cd $katalog || udgang 1

    for fil i *; gør
    if [-f $fil ]; derefter
    newname=$(ekko $fil | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    være
    Færdig

    Forklaring:

    1. #!/bin/bash : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    2. mappe=$1″ : Denne linje tildeler det første kommandolinjeargument til den variable mappe.
    3. if [-z $mappe]; derefter : Denne linje kontrollerer, om biblioteksvariablen er tom (intet argument angivet ved kørsel af scriptet).
    4. ekkobrug: $0 : Hvis mappen er tom, udskriver denne linje en brugsmeddelelse med scriptets navn ($0).
    5. udgang 1 : Denne linje afslutter scriptet med en exitkode på 1, hvilket indikerer, at der er opstået en fejl.
    6. f i: Dette markerer slutningen af ​​den første if-sætning.
    7. hvis [! -d $katalog ]; derefter : Denne linje kontrollerer, om den angivne mappe ikke eksisterer (-d tester for en mappe).
    8. echo Error: '$directory' er ikke en gyldig mappe. : Hvis den angivne mappe ikke findes, udskriver denne linje en fejlmeddelelse.
    9. udgang 1 : Afslutter scriptet med en exitkode på 1.
    10. være : Markerer slutningen af ​​den anden if-sætning.
    11. cd $katalog || udgang 1 : Ændrer den aktuelle arbejdsmappe til den angivne mappe. Hvis mappeændringen mislykkes (f.eks. ikke-eksisterende mappe), afsluttes scriptet med en fejlkode.
    12. for fil i *; gør: jeg for fil i *; gør: starter en loop, der itererer over alle elementer i den aktuelle mappe (* matcher alle filnavne).
    13. if [-f $fil ]; derefter : Kontrollerer, om det aktuelle loop-iterationselement er en almindelig fil (-f tester for en almindelig fil).
    14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer det aktuelle filnavn ($file) til små bogstaver ved hjælp af tr-kommandoen og gemmer resultatet i newname-variablen.
    15. [ $file != $newname ] && mv $file $newname : Sammenligner det originale filnavn med det nye lille filnavn. Hvis de er forskellige, omdøber den filen ved hjælp af mv-kommandoen.
    16. være : Markerer slutningen af ​​den indre if-sætning.
    17. Færdig : Markerer slutningen af ​​løkken.

    454

    Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det aktuelle bibliotek home/jayeshkumar/test

    27) Hvordan kan du bruge aritmetiske operationer i et shell-script?

    Aritmetiske operationer kan udføres i et shell-script ved hjælp af forskellige indbyggede metoder. Skallen giver mekanismer til simple aritmetiske beregninger ved hjælp af aritmetisk udvidelse som:

    1. Aritmetisk udvidelse ($((…)))
    2. Bruger kommandoen expr
    3. Brug let Command

    Her er vores Shell-script, der forklarer alle tre metoder til aritmetiske operationer.

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

    #Aritmetisk udvidelse ($((…)))

    resultat=$((tal1 + tal2))
    echo Sum: $resultat

    #Bruger kommandoen expr

    sum=$(udg. $num1 + $num2)
    echo Sum: $sum

    #Brug let Command

    lad sum = num1 + num2
    echo Sum: $sum

    Forklaring:

    1. `#!/bin/bash` : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    2. `tal1=10` og ` num2=5` : Disse linjer tildeler værdierne 10 og 5 til variablerne ` nummer1 ` og ` nummer 2 `, henholdsvis.
    3. `#Aritmetisk udvidelse ($((...)))` : Dette er en kommentar, der angiver starten på afsnittet, der demonstrerer aritmetisk udvidelse.
    4. `resultat=$((tal1 + tal2))` : Denne linje bruger aritmetisk ekspansion til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` resultat ` variabel.
    5. `ekko Sum: $resultat` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` resultat ` variabel.
    6. `#Using expr Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` udtr ` kommando til aritmetiske operationer.
    7. `sum=$(udtr. $num1 + $num2)` : Denne linje bruger ` udtr ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` sum ` variabel. Bemærk, at ` udtr ` kommando kræver mellemrum omkring operatørerne.
    8. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
    9. `#Brug let Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` lade ` kommando til aritmetiske operationer.
    10. `lad sum = num1 + num2″` : Denne linje bruger ` lade ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og tildeler resultatet til ` sum ` variabel. Den ` lade ` kommandoen kræver ikke mellemrum omkring operatørerne.
    11. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
    aritmetik

    aritmetik

    28) Opret et script, der kontrollerer, om en netværksvært er tilgængelig.

    Her er et simpelt shell-script, der bruger ping-kommandoen til at kontrollere, om en netværksvært er tilgængelig:

    #!/bin/bash
    vært=$1″
    if [ -z $host ]; derefter
    ekkobrug: $0
    udgang 1
    være
    ping -c 4 $host

    hvis [$? -ækv 0]; derefter
    echo $host er tilgængelig.
    andet
    echo $host er ikke tilgængelig.
    være

    Forklaring:

    1. Den tager et værtsnavn eller IP-adresse som argument og kontrollerer, om argumentet er angivet.
    2. Hvis der ikke er angivet noget argument, viser det en brugsmeddelelse og afsluttes.
    3. Den bruger ping-kommandoen med -c 4-indstillingen til at sende fire ICMP-ekko-anmodninger til den angivne vært.
    4. Efter at ping-kommandoen er kørt, kontrollerer den exit-statussen ($?). Hvis exit-statussen er 0, betyder det, at værten er tilgængelig, og scriptet udskriver en succesmeddelelse. Ellers udskriver den en fejlmeddelelse.

    456

    Bemærk : Vi skal angive et værtsnavn som argument, når vi kører scriptet. Her har vi brugt google.com

    29) Skriv et Shell-script for at finde det største element i et array:

    Her er et shell-script til at finde det bedste element i et array.

    #!/bin/bash
    # Erklære et array
    matrix=(3 56 24 89 67)

    # Initialiser en variabel for at gemme den maksimale værdi, startende med det første element

    max=${array[0]}

    # Iterér gennem arrayet

    for num i ${array[@]}; gør

    # Sammenlign hvert element med det aktuelle maksimum

    if ((antal> maks)); derefter
    max=$antal
    være
    Færdig

    # Udskriv den maksimale værdi

    echo Det maksimale element i arrayet er: $max

    Forklaring:

    1. ` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    2. ` matrix=(3 56 24 89 67) `: Arrayet erklæres og initialiseres med værdier.
    3. ` max=${array[0]} `: `max` initialiseres med det første element i arrayet.
    4. ` for num i ${array[@]}; gør `: En `for`-løkke bruges til at iterere gennem elementerne i arrayet.
    5. ` if ((antal> maks)); derefter `: En `if`-sætning kontrollerer, om det aktuelle element `num` er større end det aktuelle maksimum `max`.
    6. ` max=$num`: Hvis`num ` er større end `max`, er `max` opdateret med værdien num.
    7. ` Færdig `: `For`-løkken er lukket.
    8. ` echo Det maksimale element i arrayet er: $max `: Endelig udskriver scriptet den maksimale værdi fundet i arrayet.
    461

    største antal

    30) Skriv et script til at beregne summen af ​​elementer i et array.

    #!/bin/bash

    # Erklære et array

    matrix=(1 65 22 19 94)

    # Initialiser en variabel for at gemme summen

    sum=0

    # Iterér gennem arrayet og føj hvert element til summen

    for num i ${array[@]}; gør
    am=$((am + am))
    Færdig

    # Udskriv summen

    echo Summen af ​​elementer i arrayet er: $sum

    Forklaring:

    ` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.

    ` matrix=(1 65 22 19 94) `: Arrayet erklæres og initialiseres med værdier.

    ` sum=0 `:` sum ` initialiseres til nul for at holde summen af ​​elementer.

    ` for num i ${array[@]}; gør `: A ` til ` loop bruges til at iterere gennem elementerne i arrayet.

    ` am=$((am + am)) `: Inde i løkken, hvert element ` på en ` tilføjes til ` sum ` variabel.

    ` Færdig `: Den ` til ` sløjfen er lukket.

    `echo Summen af ​​elementer i arrayet er: $sum`: Til sidst udskriver scriptet summen af ​​alle elementer i arrayet.

    462

    Summen af ​​elementer

    Få mere at vide om Shell-scripts

    Konklusion

    Vi ved alle nørder, at shell-script er meget nyttigt for at øge arbejdsproduktiviteten såvel som det sparer tid. Så i denne artikel har vi dækket 30 meget nyttige og mest besnærende shell-scripts eksempler . Vi håber, at denne komplette vejledning om shell-scripting-eksempel hjælper dig med at forstå alt om shell-scripts.



    `: Hvis mappen er tom, udskriver denne linje en brugsmeddelelse, hvor `

    For alle Linux-distributioner er shell-scriptet som en tryllestav, der automatiserer processen, sparer brugere tid og øger produktiviteten. Denne skal scripting tutorial vil introducere dig til de 25 plus skal scripting eksempler.

    Men før vi går videre til emnet shell scripting eksempler, lad os forstå shell-script og de faktiske anvendelsestilfælde af shell-scripting.

    Hvad er Shell Script?

    Nå, skallen er en CLI ( kommandolinjefortolker ), som kører i et tekstvindue, hvor brugere kan administrere og udføre shell-kommandoer. På den anden side, processen med at skrive et sæt kommandoer, der skal udføres på et Linux-system. En fil, der indeholder sådanne instruktioner, kaldes et bash-script.

    Brug af Shell Scripts

    Nedenfor er nogle almindelige anvendelser af Shell Script:

    • Opgaveautomatisering – Det kan bruges til at automatisere gentagne opgaver som almindelige sikkerhedskopier og softwareinstallationsopgaver.
    • Tilpasning – Man kan bruge shell-scripts til at designe sit kommandolinjemiljø og nemt udføre sin opgave efter behov.
    • Filhåndtering – Shell-scripts kan også bruges til at administrere og manipulere filer og mapper, såsom flytning, kopiering, omdøbning eller sletning af filer.

    Shell Script eksempler i Linux

    1) Hvad indikerer shebang (#!) i begyndelsen af ​​et shell-script?

    Det shebang (#!) i begyndelsen af ​​et script angiver den fortolker, der skal bruges til at udføre scriptet. Det fortæller systemet, hvilken shell eller fortolker der skal fortolke scriptets kommandoer.

    For eksempel: Antag, at vi har et script ved navn myscript.sh skrevet i Bash-skallen:

    shebang

    shebang

    I dette eksempel:

    • #!/bin/bash i begyndelsen af ​​scriptet indikerer, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    • Ekkokommandoerne bruges til at udskrive beskeder til terminalen.

    2) Hvordan kører du et shell-script fra kommandolinjen?

    For at køre et shell-script fra kommandolinjen skal vi følge disse trin:

    • Sørg for, at scriptfilen har eksekverbare tilladelser ved hjælp af chmod kommando :
    chmod +x myscript.sh>
    • Udfør scriptet med dets filnavn:
    ./myscript.sh>

    Her skal du udskifte myscrtipt.sh med dit manuskriptnavn.

    3) Skriv et shell-script, der udskriver techcodeview.com til terminalen.

    Opret et scriptnavn `myscript.sh` (vi bruger ` fordi ` editor, du kan vælge enhver editor)

    vim myscript.sh>

    #!/bin/bash
    # Dette script udskriver techcodeview.com til terminalen
    echo techcodeview.com

    Print navn

    Print navn

    Vi gør vores script eksekverbart ved at bruge `chmod +x`, kør derefter med `./myscipt.sh` og få vores ønskede output techcodeview.com.

    4) Forklar formålet med echo-kommandoen i shell-scripting.

    Det ekko kommando bruges til at vise tekst eller variabler på terminalen. Det bruges almindeligvis til udskrivning af meddelelser, variable værdier og generering af programoutput.

    434

    ekko kommando

    I dette eksempel har vi eksekveret `echo` på terminalen direkte, da det fungerer på samme måde inde i shell-scriptet.

    5) Hvordan kan du tildele en værdi til en variabel i et shell-script?

    Variabler tildeles værdier ved hjælp af tildelingsoperatoren =.

    For eksempel:

    #!/bin/bash
    # Tildeling af en værdi til en variabel
    navn=Jayesh
    alder=21
    echo $navn $age

    Forklaring:

    • Navnevariablen tildeles værdien Jayesh.
    • Aldersvariablen tildeles værdien 21.
    • echo bruges til at udskrive og `$name` `$age` bruges til at kalde værdien gemt i variablerne.

    435

    6) Skriv et shell-script, der tager en brugers navn som input og hilser på dem.

    Opret et scriptnavn `example.sh`.

    #!/bin/bash
    # Spørg brugeren om deres navn
    echo Hvad er dit navn?
    læs navn
    # Hils brugeren
    echo Hej, $navn! Dejligt at møde dig.

    Forklaring:

    • #!/bin/bash: Dette er shebang-linjen. Det fortæller systemet at bruge Bash-fortolkeren til at udføre scriptet.
    • # Spørg brugeren om deres navn: Dette er en kommentar. Det giver kontekst om den kommende kode. Kommentarer ignoreres af tolken.
    • echo Hvad er dit navn?: Echo-kommandoen bruges til at vise teksten i dobbelte anførselstegn på terminalen.
    • read name: Read-kommandoen venter på, at brugeren indtaster tekst og gemmer den i variabelnavnet.
    • echo Hej, $navn! Rart at møde dig.: Denne linje bruger ekko-kommandoen til at udskrive en hilsen, der inkluderer værdien af ​​navnevariablen, som blev indsamlet fra brugerens input.

    436

    7) Hvordan tilføjer du kommentarer til et shell-script?

    Kommentarer i shell-scripting bruges til at give forklaringer eller kontekst til koden. De ignoreres af tolken og er kun beregnet til mennesker, der læser manuskriptet. Du kan tilføje kommentarer ved at bruge #-symbolet.

    #!/bin/bash
    # Dette er en kommentar, der forklarer formålet med scriptet
    ekko gfg

    8) Opret et shell-script, der kontrollerer, om der findes en fil i den aktuelle mappe.

    Her er et script, der kontrollerer, om en fil med navnet example.txt findes i den aktuelle mappe:

    #!/bin/bash
    file=example.txt
    # Tjek om filen findes
    if [ -e $fil ]; derefter
    echo Filen findes: $file
    andet
    echo Filen blev ikke fundet: $fil
    være

    Forklaring:

    1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
    2. file=example.txt: Denne linje definerer variabelfilen og tildeler værdien example.txt til den. Du kan erstatte dette med navnet på den fil, du vil søge efter.
    3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Betingelsen [-e $file] kontrollerer, om filen, der er angivet af værdien af ​​filvariablen, eksisterer. Flaget -e bruges til at kontrollere, om filen eksisterer.
    4. echo File exists: $file: Hvis betingelsen er sand (dvs. filen eksisterer), udskriver denne linje en meddelelse, der angiver, at filen eksisterer, sammen med filens navn.
    5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), udfører scriptet koden under else-grenen.
    6. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der angiver, at den angivne fil ikke blev fundet, sammen med filens navn.
    7. fi: Denne linje markerer slutningen af ​​if-sætningen.
    Finder fil

    Finder fil

    9) Hvad er forskellen mellem enkelte anførselstegn (') og dobbelte anførselstegn () i shell-scripting?

    Enkelte anførselstegn (') og dobbelte anførselstegn () bruges til at omslutte strenge i shell-scripting, men de har forskellig adfærd:

    • Enkelte citater: Alt mellem enkelte citater behandles som en bogstavelig streng. Variabelnavne og de fleste specialtegn udvides ikke.
    • Dobbelte anførselstegn: Variabler og visse specialtegn inden for dobbelte anførselstegn udvides. Indholdet er underlagt variabel substitution og kommandosubstitution.

    #!/bin/bash

    abcd=Hej
    echo '$abcd' # Output: $abcd
    echo $abcd # Output: Hej

    10) Hvordan kan du bruge kommandolinjeargumenter i et shell-script?

    Kommandolinjeargumenter er værdier, der leveres til et script, når det udføres. De kan tilgås i scriptet ved hjælp af specielle variabler som $1, $2 osv., hvor $1 repræsenterer det første argument, $2 repræsenterer det andet argument, og så videre.

    For eksempel: Hvis vores scriptnavn i `eksempel.sh`

    #!/bin/bash

    echo Script navn: $0
    echo Første argument: $1
    echo Andet argument: $2

    Hvis vi kører scriptet med `.example.sh hello_1 hello_2`, vil det udlæse:

    cli argumenter

    cli argumenter

    11) Hvordan bruger du for-løkken til at gentage en liste med værdier?

    Opret et scriptnavn `example.sh`.

    #!/bin/bash

    frugter = (æble banan kirsebær daddel)
    for frugt i ${fruits[@]}; gør
    echo Nuværende frugt: $fruit
    Færdig

    Forklaring:

    `fruits=`-linjen opretter et array med navnet frugter med fire elementer: æble, banan, kirsebær og daddel.

    • for frugt i ${fruits[@]}; do: Denne linje starter en for-løkke. Her er hvad hver del betyder:
    • for frugt: Dette erklærer en loop-variabel kaldet frugt. I hver iteration af løkken vil frugt holde værdien af ​​det aktuelle element fra frugtarrayet.
    • ${fruits[@]}: Dette er en matrixudvidelse, der tager alle elementerne fra frugtarrayet. ${…}-syntaksen sikrer, at hvert element behandles som et separat element.
    • do: Dette nøgleord markerer begyndelsen af ​​løkketeksten.
    • echo Current fruit: $fruit: Inde i løkken bruger denne linje echo-kommandoen til at vise den aktuelle værdi af løkkevariablen frugt. Den udskriver en besked som Current fruit: apple for hver frugt i arrayet.
    • done: Dette nøgleord markerer slutningen af ​​løkkens krop. Det fortæller scriptet, at løkken er afsluttet.
    for sløjfe

    for sløjfe

    12) Skriv et shell-script, der beregner summen af ​​heltal fra 1 til N ved hjælp af en loop.

    Opret et scriptnavn `example.sh`.

    #!/bin/bash

    echo Indtast et tal (N):
    læs N
    sum=0
    for ((i=1; i<=$N; i++)); gør
    sum=$((sum + i))
    Færdig
    echo Summen af ​​heltal fra 1 til $N er: $sum

    Forklaring:
    Scriptet starter med at bede dig om at indtaste et tal (N) ved hjælp af read. Dette tal bestemmer, hvor mange gange løkken kører.

    1. Variablen sum initialiseres til 0. Denne variabel vil holde styr på summen af ​​heltal.
    2. For-løkken begynder med for (( i=1; i<=$N; i++ )). Denne sløjfestruktur bruges til at gentage et sæt handlinger et vist antal gange, i dette tilfælde fra 1 til værdien af ​​N.
    3. Inde i løkken sker disse ting:
      • i=1 sætter loop-variablen i til 1 i begyndelsen af ​​hver iteration.
      • Sløjfebetingelsen i<=$N kontrollerer, om i stadig er mindre end eller lig med det givne tal N.
      • Hvis betingelsen er sand, udføres loop body.
      • sum=$((sum + i)) beregner den nye værdi af sum ved at tilføje den aktuelle værdi af i. Dette summerer hele tallene fra 1 til den aktuelle i-værdi.
    4. Efter hver iteration øger i++ værdien af ​​i med 1.
    5. Sløjfen fortsætter med at køre, indtil betingelsen i<=$N bliver falsk (når i bliver større end N).
    6. Når løkken er færdig, viser scriptet summen af ​​heltal fra 1 til det indtastede tal N.

    439

    13) Opret et script, der søger efter et bestemt ord i en fil og tæller dets forekomster.

    Opret et scriptnavn `word_count.sh`

    #!/bin/bash

    echo Indtast ordet for at søge efter:
    læs target_word
    echo Indtast filnavnet:
    læs filnavn
    count=$(grep -o -w $mål_ord $filnavn | wc -l)
    echo Ordet '$target_word' vises $tæller gange i '$filnavn'.

    Forklaring:

    • echo Indtast ordet, der skal søges efter:: Denne linje viser en meddelelse, der beder brugeren om at indtaste et ord, de vil søge efter i en fil.
    • read target_word: Denne linje læser input fra brugeren og gemmer det i en variabel ved navn target_word.
    • echo Indtast filnavnet:: Denne linje viser en meddelelse, der beder brugeren om at indtaste navnet på den fil, de vil søge i.
    • læs filnavn: Denne linje læser input fra brugeren og gemmer det i en variabel med navnet filnavn.
    • count=$(grep -o -w $mål_ord $filnavn | wc -l): Denne linje udfører scriptets hovedarbejde. Lad os opdele det yderligere:
      • grep -o -w $target_word $filnavn: Denne del af kommandoen søger efter forekomster af target_word i det angivne filnavn. Valgmulighederne -o og -w sikrer, at kun hele ordmatches tælles.
      • |: Dette er et rør, som tager outputtet fra den forrige kommando og sender det som input til den næste kommando.
      • wc -l: Denne del af kommandoen bruger wc-kommandoen til at tælle antallet af linjer i inputtet. Valgmuligheden -l tæller specifikt linjerne.
      • Hele kommandoen beregner antallet af forekomster af target_word i filen og tildeler denne optælling til variablen antal

    441

    14) Forklar forskellene mellem standard output (stdout) og standardfejl (stderr).

    Hovedforskellen mellem standardoutput (stdout) og standardfejl (stderr) er som følger:

    • Standard output (stdout): Dette er standardoutputstrømmen, hvor en kommandos almindelige output går. Det vises som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af>.
    • Standardfejl (stderr): Dette er outputstrømmen for fejlmeddelelser og advarsler. Det vises også som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af 2>.

    15) Forklar begrebet betingede udsagn i shell scripting.

    Betingede udsagn i shell-scripting give os mulighed for at træffe beslutninger og kontrollere flowet af vores script baseret på visse betingelser. De gør det muligt for vores script at udføre forskellige sæt kommandoer afhængigt af, om en bestemt betingelse er sand eller falsk. De primære betingede sætninger i shell-scripting er if-sætningen, elif-sætningen (valgfri) og else-sætningen (valgfri).

    Her er den grundlæggende struktur af en betinget erklæring i shell-scripting:

    if [betingelse]; derefter
    # Kommandoer til at udføre, hvis betingelsen er sand
    elif [en anden_tilstand]; derefter
    # Kommandoer til at udføre, hvis another_condition er sand (valgfrit)
    andet
    # Kommandoer til at udføre, hvis ingen af ​​betingelserne er sande (valgfrit)
    være

    Forklaring:

    • [ condition ] = Kommando, der evaluerer betingelsen og returnerer en sand (0) eller falsk (ikke-nul) udgangsstatus.
    • then = Det er et nøgleord, der angiver, at kommandoerne efter det vil blive udført, hvis betingelsen evalueres til sand.
    • elif = (forkortelse for else if) Det er et afsnit, der giver os mulighed for at angive yderligere betingelser for at kontrollere.
    • else = det er en sektion, der indeholder kommandoer, der vil blive udført, hvis ingen af ​​betingelserne er sande.
    • fi = Det er et nøgleord, der markerer slutningen af ​​den betingede blok.

    16) Hvordan læser du linjer fra en fil i et shell-script?

    Til læse linjer fra en fil i et shell-script, kan vi bruge forskellige metoder, men en almindelig fremgangsmåde er at bruge en while-løkke i kombination med read-kommandoen. Sådan kan vi gøre det:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Tjek om filen findes
    if [ -e $fil ]; derefter
    mens IFS= læser -r linje; gør
    echo Linje læst: $line
    # Tilføj din behandlingslogik her
    færdig <$fil
    andet
    echo Filen blev ikke fundet: $fil
    være

    Forklaring:

    1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
    2. file=/home/jayeshkumar/jayesh.txt: Denne linje definerer variabelfilen og tildeler den fulde sti til filen jayesh.txt i mappen /home/jayeshkumar. Skift denne sti, så den matcher den faktiske sti til den fil, du vil læse.
    3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Den kontrollerer, om filen angivet af variablen $file eksisterer. Flaget -e kontrollerer for fileksistens.
    4. mens IFS= læser -r linje; do: Denne linje starter en while-løkke, der læser linjer fra filen.
      • IFS=: IFS (Internal Field Separator) er sat til en tom værdi for at bevare førende og efterfølgende mellemrum.
      • read -r line: Dette læser den aktuelle linje fra filen og gemmer den i den variable linje.
    5. echo Line read: $line: Denne linje udskriver indholdet af den linje, der blev læst fra filen. Variablen $line indeholder den aktuelle linjes indhold.
    6. # Tilføj din behandlingslogik her: Dette er en pladsholderkommentar, hvor du kan tilføje din egen logik til at behandle hver linje. For eksempel kan du analysere linjen, udtrække information eller udføre specifikke handlinger baseret på indholdet.
    7. done <$file: Dette markerer slutningen af ​​while-løkken. < $filen omdirigerer indholdet af filen, der skal læses af løkken.
    8. else: Hvis filen ikke eksisterer (betingelsen i if-sætningen er falsk), udfører scriptet koden under else-grenen.
    9. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der indikerer, at den angivne fil ikke blev fundet.
    10. fi: Denne linje markerer slutningen af ​​if-sætningen.
    læse fil

    læse fil

    Her brugte vi ` pwd ` kommando for at få stien til den aktuelle mappe.

    17) Skriv en funktion i et shell-script, der beregner fakultetet af et givet tal.

    Her er manuskriptetudregn faktorenaf et givet tal.

    #!/bin/bash
    # Definer en funktion til at beregne factorial
    beregne_faktor() {
    num=$1
    fakta=1
    for ((i=1; i<=tal; i++)); gør
    fakta=$((faktum * i))
    Færdig
    ekko $fakta
    }
    # Bed brugeren om at indtaste et nummer
    echo Indtast et tal:
    læs input_num
    # Kald calculate_fatorial-funktionen med det indtastede nummer
    factorial_result=$(calculate_fatorial $input_num)
    # Vis det faktorielle resultat
    echo Factorial af $input_num er: $factorial_result

    Forklaring:

    1. Scriptet starter med shebang-linjen #!/bin/bash for at angive tolken.
    2. calculate_fatorial() er defineret som en funktion. Det kræver et argument, num, som er det tal, som faktoren skal beregnes for.
    3. Inde i funktionen initialiseres fakta til 1. Denne variabel vil gemme det faktorielle resultat.
    4. For-løkken itererer fra 1 til det givne tal (num). I hver iteration multipliceres den aktuelle værdi af fakta med loop-indekset i.
    5. Når løkken er fuldført, indeholder faktavariablen den beregnede faktor.
    6. Scriptet beder brugeren om at indtaste et tal ved hjælp af read.
    7. calculate_fatorial-funktionen kaldes med det brugerangivne tal, og resultatet gemmes i variablen factorial_result.
    8. Til sidst viser scriptet det beregnede faktorielle resultat.
    Faktoriel

    Faktoriel

    18) Hvordan håndterer du signaler som Ctrl+C i et shell-script?

    I et shell-script kan du håndtere signaler som Ctrl+C (også kendt som SIGINT) ved at bruge trap-kommandoen. Ctrl+C genererer et SIGINT-signal, når brugeren trykker på det for at afbryde det kørende script eller program. Ved at bruge trap-kommandoen kan du specificere handlinger, der skal udføres, når et bestemt signal modtages. Sådan håndterer du signaler som Ctrl+C i et shell-script:

    #!/bin/bash
    Ryd op() {
    echo Script afbrudt. Udfører oprydning...
    # Tilføj dine oprydningshandlinger her
    udgang 1
    }
    # Opsæt en fælde for at kalde oprydningsfunktionen, når Ctrl+C (SIGINT) modtages
    fældeoprydning SIGINT
    # Resten af ​​dit script
    ekko kører...
    sove 10
    ekko Færdig.

    Håndtering af signaler er vigtig for at gøre scripts robuste og sikre, at de håndterer uventede afbrydelser elegant. Du kan tilpasse oprydningsfunktionen, så den matcher dine specifikke behov, såsom at lukke filer, stoppe processer eller logge oplysninger, før scriptet afsluttes.

    Forklaring:

    1. #!/bin/bash: Denne shebang-linje specificerer den fortolker, der skal bruges til at køre scriptet.
    2. cleanup() { … }: Dette definerer en funktion ved navn cleanup. Inde i denne funktion kan du inkludere alle handlinger, der skal udføres, når scriptet afbrydes, såsom at lukke filer, frigive ressourcer eller udføre andre oprydningsopgaver.
    3. trap cleanup SIGINT: Trappe-kommandoen bruges til at opsætte en signalhåndtering. I dette tilfælde specificerer den, at når SIGINT-signalet (Ctrl+C) modtages, skal oprydningsfunktionen udføres.
    4. echo Running…, sleep 10, echo Finished.: Dette er blot eksempelkommandoer til at simulere udførelsen af ​​et script.

    446

    19) Opret et script, der tjekker for og fjerner duplikerede linjer i en tekstfil.

    Her er vores linux-script, hvor vi fjerner duplikerede linjer fra en tekstfil.

    #!/bin/bash
    input_file=input.txt
    output_file=output.txt
    sorter $input_fil | uniq> $output_fil
    echo Duplikerede linjer blev fjernet.

    Forklaring:

    1. Scriptet starter med en shebang (#!/bin/bash), som angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    2. Variablen input_file er sat til navnet på inputfilen, der indeholder duplikerede linjer (ændre dette til dit faktiske inputfilnavn).
    3. Variablen output_file er sat til navnet på outputfilen, hvor duplikaterne vil blive fjernet (ændre dette til dit ønskede outputfilnavn).
    4. Scriptet bruger sorteringskommandoen til at sortere linjerne i inputfilen. Sortering af linjerne sikrer, at duplikerede linjer grupperes sammen.
    5. De sorterede linjer sendes derefter gennem uniq-kommandoen, som fjerner på hinanden følgende duplikerede linjer. Outputtet fra denne proces omdirigeres til outputfilen.
    6. Når dubletterne er fjernet, udskriver scriptet en succesmeddelelse.
    fjernelse af dobbelt linje

    duplikatlinjefjernelse

    Her bruger vi ` kat ` for at vise teksten inde i tekstfilen.

    20) Skriv et script, der genererer en sikker tilfældig adgangskode.

    Her er vores script til at generere en sikker tilfældig adgangskode.

    #!/bin/bash
    # Funktion til at generere en tilfældig adgangskode
    generere_adgangskode() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Kald funktionen og gem den genererede adgangskode
    password=$(generer_adgangskode)
    echo Genereret adgangskode: $password

    Bemærk: Brugeren kan derfor ændre længden af ​​adgangskoden ved at erstatte tallet '12'.

    Forklaring:

    1. Scriptet starter med en shebang (#!/bin/bash), hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
    2. Generer_password-funktionen er defineret til at generere en tilfældig adgangskode. Sådan fungerer det:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 opdeler de filtrerede tilfældige data i linjer med bredde på 12 tegn hver.
      • head -n 1 vælger den første linje, hvilket i praksis giver os en tilfældig sekvens af tegn med længden 12.
    3. Adgangskodevariablen tildeles resultatet af at kalde funktionen gener_password.
    4. Til sidst vises den genererede adgangskode ved hjælp af ekko.

    448

    21) Skriv et shell-script, der beregner den samlede størrelse af alle filer i en mappe.

    Her er et shell-script til at beregne den samlede størrelse af alle filer i en mappe.

    #!/bin/bash
    mappe=/sti/til/din/mappe
    total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
    echo Samlet størrelse af filer i $mappe: $total_size

    Forklaring:

    1. Scriptet starter med #!/bin/bash shebang, hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
    2. Bibliotekvariablen er sat til stien til den mappe, som du vil beregne den samlede filstørrelse for. Erstat /sti/til/din/mappe med den faktiske sti.
    3. Kommandoen du bruges til at estimere brugen af ​​filplads. De anvendte muligheder er:
      • -c: Fremstil en totalsum.
      • -s: Vis kun den samlede størrelse af den angivne mappe.
      • -h: Udskriftsstørrelser i et format, der kan læses af mennesker (f.eks. KB, MB, GB).
    4. Outputtet fra du sendes til grep total for at bortfiltrere linjen, der indeholder den samlede størrelse.
    5. awk '{print $1}' bruges til at udtrække det første felt (samlet størrelse) fra linjen.
    6. Den beregnede samlede størrelse gemmes i variablen total_size.
    7. Endelig viser scriptet den samlede størrelse ved hjælp af ekko.
    Samlet størrelse af filer

    Samlet størrelse af filer

    Her brugte vi ` pwd ` kommando for at se den aktuelle mappesti.

    22) Forklar forskellen mellem if- og elif-sætninger i shell-scripting.

    Feature `hvis` Staiftement `elif`-erklæring
    Formål Forklar forskellen mellem if- og elif-sætninger i shell-scripting. Giver alternative betingelser for at kontrollere, hvornår den oprindelige, hvis betingelsen er falsk.
    brug Brugt til den oprindelige tilstand. Brugt efter den indledende if-tilstand for at kontrollere yderligere forhold.
    antal blokke Kan kun have én hvis blok. Kan have flere elif-blokke, men kun én anden blok (valgfrit).
    Udførelse Udfører den kodeblok, der er knyttet til if-sætningen, hvis betingelsen er sand. Hvis betingelsen er falsk, udføres den anden blok (hvis den findes) (valgfrit). Kontrollerer hver elif tilstand i rækkefølge. Hvis én elif-betingelse er sand, udføres den tilsvarende kodeblok, og scriptet afslutter hele den betingede blok. Hvis ingen af ​​elif-betingelserne er sande, udføres else-blokken (hvis den er til stede).
    Indlejrede strukturer Kan indlejres i andre if-, elif- eller else-blokke. Kan ikke indlejres i en anden elif-blok, men kan bruges i en if eller else-blok.

    Lad os forstå det med et eksempel.

    #!/bin/bash
    nummer=5
    if [$nummer -gt 10]; derefter
    echo $nummer er større end 10
    andet
    echo $nummer er ikke større end 10
    være
    ekko ---
    if [$nummer -gt 10]; derefter
    echo $nummer er større end 10
    elif [$nummer -eq 10]; derefter
    echo $nummer er lig med 10
    andet
    echo $nummer er mindre end 10
    være

    Forklaring:

    I dette eksempel kontrollerer den første if-blok, om tallet er større end 10. Hvis ikke, udskriver den en meddelelse, der angiver, at tallet ikke er større end 10. Den anden blok med elif-sætninger kontrollerer flere betingelser sekventielt, indtil en af ​​dem er sand. I dette tilfælde, da værdien af ​​nummer er 5, vil outputtet være:

    if_elif forskel

    if_elif forskel

    23) Hvordan bruger du en while-løkke til gentagne gange at udføre kommandoer?

    En while-løkke bruges i shell-scripting til gentagne gange at udføre et sæt kommandoer, så længe en specificeret betingelse er sand. Sløjfen fortsætter med at udføre kommandoerne, indtil betingelsen bliver falsk.

    Her er den grundlæggende syntaks for en while-løkke:

    mens [betingelse]; gør
    # Kommandoer, der skal udføres
    Færdig

    Forklaring:

    1. `While`-løkken starter med nøgleordet `while` efterfulgt af en betingelse omsluttet af firkantede parenteser `[ ]`.
    2. Sløjfens krop, som indeholder de kommandoer, der skal udføres, er omsluttet af nøgleordene 'do' og 'done'.
    3. Løkken tjekker først tilstanden. Hvis betingelsen er sand, udføres kommandoerne i loop-legemet. Efter at loop-kroppen er udført, kontrolleres betingelsen igen, og processen gentages, indtil betingelsen bliver falsk.

    Eksempel: Hvis vi ønsker at udskrive tal fra 1 til 5

    #!/bin/bash
    tæller=1
    while [ $tæller -le 5 ]; gør
    ekkonummer: $counter
    tæller=$((tæller + 1))
    Færdig

    Forklaring:

    • Tællervariablen er sat til 1.
    • While-løkken kontrollerer, om værdien af ​​tælleren er mindre end eller lig med 5. Så længe denne betingelse er sand, fortsætter løkken med at udføre.
    • Inde i løkken udskrives den aktuelle værdi af tælleren ved hjælp af ekko.
    • Tælleren øges med 1 ved hjælp af udtrykket $((tæller + 1)).
    mens loop

    mens loop

    24) Opret et shell-script, der finder og viser alle tomme filer i en mappe.

    Shell-script, som du kan bruge til at finde og liste alle tomme filer i en mappe ved hjælp af kommandoerne `find` og `stat`:

    #!/bin/bash
    mappe=$1″
    if [-z $mappe]; derefter
    ekkobrug: $0
    udgang 1
    være

    hvis [! -d $katalog ]; derefter
    echo Error: '$directory' er ikke en gyldig mappe.
    udgang 1
    være
    echo tomme filer i $directory:
    find $katalog -type f -tom

    Forklaring:

    1. ` #!/bin/bash `: Dette kaldes en shebang, og det fortæller operativsystemet at bruge Bash-skallen til at fortolke og udføre scriptet.
    2. ` mappe=$1″ `: Denne linje tildeler det første kommandolinjeargument (angivet med $1) til variablen ` vejviser `.
    3. ` if [-z $mappe]; derefter `: Denne linje starter en if-sætning, der kontrollerer om ` vejviser ` variabel er tom (-z tester for en tom streng).
    4. ` ekkobrug: $0 `: Hvis mappen er tom, udskriver denne linje en brugsmeddelelse, hvor ` $0 ` repræsenterer scriptets navn.
    5. ` udgang 1 `: Denne linje afslutter scriptet med en exitkode på ` 1 `, hvilket indikerer en fejl.
    6. ` være `: Denne linje markerer slutningen af ​​` hvis ` erklæring.
    7. ` hvis [! -d $katalog ]; derefter `: Dette starter en anden if-sætning for at kontrollere, om den angivne mappe eksisterer (` -d ` tester for en mappe).
    8. ` echo Error: '$directory' er ikke en gyldig mappe. `: Hvis den angivne mappe ikke eksisterer, udskriver denne linje en fejlmeddelelse.
    9. ` udgang 1 `: Afslutter scriptet med en exit-kode på ` 1 `.
    10. ` være `: Markerer slutningen af ​​den anden ` hvis` udmelding.
    11. ` echo tomme filer i $directory: `: Hvis alt er gyldigt indtil videre, udskriver denne linje en meddelelse, der angiver, at scriptet vil vise tomme filer i den angivne mappe.
    12. ` find $katalog -type f -tom `: Denne linje bruger ` Find ` kommando til at søge efter tomme filer (` -tom `) af typen almindelige filer (` -type f `) i den angivne mappe. Det viser derefter disse tomme filer.
    Finder tomme filer

    Finder tomme filer

    Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det nuværende bibliotek home/jayeshkumar/

    25) Hvad er formålet med read-kommandoen i shell-scripting?

    Read-kommandoen i shell-scripting lader scriptet bede dig om information. Det er ligesom når en computer stiller dig et spørgsmål og venter på dit svar. Dette er nyttigt til scripts, der kræver, at du skriver noget, eller når scriptet skal arbejde med information fra filer. Read-kommandoen hjælper scriptet med at stoppe og vente på, hvad du skriver, og så kan det bruge disse oplysninger til at gøre flere ting i scriptet.

    Syntaks for læsekommando:

    read variable_name>

    Eksempel : Hvis vi ønsker at tage navn som input fra brugeren for at udskrive det.

    #!/bin/bash
    echo Indtast venligst dit navn:
    læs navn
    echo Hej, $navn!

    453

    læs nam

    Sammenfattende bruges read-kommandoen til at fange brugerinput eller data fra filer i shell-scripts, hvilket gør scripts mere interaktive og alsidige.

    26) Skriv et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

    Her er et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

    #!/bin/bash
    mappe=$1″
    if [-z $mappe]; derefter
    ekkobrug: $0
    udgang 1
    være

    hvis [! -d $katalog ]; derefter

    echo Error: '$directory' er ikke en gyldig mappe.
    udgang 1
    være

    cd $katalog || udgang 1

    for fil i *; gør
    if [-f $fil ]; derefter
    newname=$(ekko $fil | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    være
    Færdig

    Forklaring:

    1. #!/bin/bash : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    2. mappe=$1″ : Denne linje tildeler det første kommandolinjeargument til den variable mappe.
    3. if [-z $mappe]; derefter : Denne linje kontrollerer, om biblioteksvariablen er tom (intet argument angivet ved kørsel af scriptet).
    4. ekkobrug: $0 : Hvis mappen er tom, udskriver denne linje en brugsmeddelelse med scriptets navn ($0).
    5. udgang 1 : Denne linje afslutter scriptet med en exitkode på 1, hvilket indikerer, at der er opstået en fejl.
    6. f i: Dette markerer slutningen af ​​den første if-sætning.
    7. hvis [! -d $katalog ]; derefter : Denne linje kontrollerer, om den angivne mappe ikke eksisterer (-d tester for en mappe).
    8. echo Error: '$directory' er ikke en gyldig mappe. : Hvis den angivne mappe ikke findes, udskriver denne linje en fejlmeddelelse.
    9. udgang 1 : Afslutter scriptet med en exitkode på 1.
    10. være : Markerer slutningen af ​​den anden if-sætning.
    11. cd $katalog || udgang 1 : Ændrer den aktuelle arbejdsmappe til den angivne mappe. Hvis mappeændringen mislykkes (f.eks. ikke-eksisterende mappe), afsluttes scriptet med en fejlkode.
    12. for fil i *; gør: jeg for fil i *; gør: starter en loop, der itererer over alle elementer i den aktuelle mappe (* matcher alle filnavne).
    13. if [-f $fil ]; derefter : Kontrollerer, om det aktuelle loop-iterationselement er en almindelig fil (-f tester for en almindelig fil).
    14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer det aktuelle filnavn ($file) til små bogstaver ved hjælp af tr-kommandoen og gemmer resultatet i newname-variablen.
    15. [ $file != $newname ] && mv $file $newname : Sammenligner det originale filnavn med det nye lille filnavn. Hvis de er forskellige, omdøber den filen ved hjælp af mv-kommandoen.
    16. være : Markerer slutningen af ​​den indre if-sætning.
    17. Færdig : Markerer slutningen af ​​løkken.

    454

    Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det aktuelle bibliotek home/jayeshkumar/test

    27) Hvordan kan du bruge aritmetiske operationer i et shell-script?

    Aritmetiske operationer kan udføres i et shell-script ved hjælp af forskellige indbyggede metoder. Skallen giver mekanismer til simple aritmetiske beregninger ved hjælp af aritmetisk udvidelse som:

    1. Aritmetisk udvidelse ($((…)))
    2. Bruger kommandoen expr
    3. Brug let Command

    Her er vores Shell-script, der forklarer alle tre metoder til aritmetiske operationer.

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

    #Aritmetisk udvidelse ($((…)))

    resultat=$((tal1 + tal2))
    echo Sum: $resultat

    #Bruger kommandoen expr

    sum=$(udg. $num1 + $num2)
    echo Sum: $sum

    #Brug let Command

    lad sum = num1 + num2
    echo Sum: $sum

    Forklaring:

    1. `#!/bin/bash` : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    2. `tal1=10` og ` num2=5` : Disse linjer tildeler værdierne 10 og 5 til variablerne ` nummer1 ` og ` nummer 2 `, henholdsvis.
    3. `#Aritmetisk udvidelse ($((...)))` : Dette er en kommentar, der angiver starten på afsnittet, der demonstrerer aritmetisk udvidelse.
    4. `resultat=$((tal1 + tal2))` : Denne linje bruger aritmetisk ekspansion til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` resultat ` variabel.
    5. `ekko Sum: $resultat` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` resultat ` variabel.
    6. `#Using expr Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` udtr ` kommando til aritmetiske operationer.
    7. `sum=$(udtr. $num1 + $num2)` : Denne linje bruger ` udtr ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` sum ` variabel. Bemærk, at ` udtr ` kommando kræver mellemrum omkring operatørerne.
    8. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
    9. `#Brug let Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` lade ` kommando til aritmetiske operationer.
    10. `lad sum = num1 + num2″` : Denne linje bruger ` lade ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og tildeler resultatet til ` sum ` variabel. Den ` lade ` kommandoen kræver ikke mellemrum omkring operatørerne.
    11. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
    aritmetik

    aritmetik

    28) Opret et script, der kontrollerer, om en netværksvært er tilgængelig.

    Her er et simpelt shell-script, der bruger ping-kommandoen til at kontrollere, om en netværksvært er tilgængelig:

    #!/bin/bash
    vært=$1″
    if [ -z $host ]; derefter
    ekkobrug: $0
    udgang 1
    være
    ping -c 4 $host

    hvis [$? -ækv 0]; derefter
    echo $host er tilgængelig.
    andet
    echo $host er ikke tilgængelig.
    være

    Forklaring:

    1. Den tager et værtsnavn eller IP-adresse som argument og kontrollerer, om argumentet er angivet.
    2. Hvis der ikke er angivet noget argument, viser det en brugsmeddelelse og afsluttes.
    3. Den bruger ping-kommandoen med -c 4-indstillingen til at sende fire ICMP-ekko-anmodninger til den angivne vært.
    4. Efter at ping-kommandoen er kørt, kontrollerer den exit-statussen ($?). Hvis exit-statussen er 0, betyder det, at værten er tilgængelig, og scriptet udskriver en succesmeddelelse. Ellers udskriver den en fejlmeddelelse.

    456

    Bemærk : Vi skal angive et værtsnavn som argument, når vi kører scriptet. Her har vi brugt google.com

    29) Skriv et Shell-script for at finde det største element i et array:

    Her er et shell-script til at finde det bedste element i et array.

    #!/bin/bash
    # Erklære et array
    matrix=(3 56 24 89 67)

    # Initialiser en variabel for at gemme den maksimale værdi, startende med det første element

    max=${array[0]}

    # Iterér gennem arrayet

    for num i ${array[@]}; gør

    # Sammenlign hvert element med det aktuelle maksimum

    if ((antal> maks)); derefter
    max=$antal
    være
    Færdig

    # Udskriv den maksimale værdi

    echo Det maksimale element i arrayet er: $max

    Forklaring:

    1. ` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    2. ` matrix=(3 56 24 89 67) `: Arrayet erklæres og initialiseres med værdier.
    3. ` max=${array[0]} `: `max` initialiseres med det første element i arrayet.
    4. ` for num i ${array[@]}; gør `: En `for`-løkke bruges til at iterere gennem elementerne i arrayet.
    5. ` if ((antal> maks)); derefter `: En `if`-sætning kontrollerer, om det aktuelle element `num` er større end det aktuelle maksimum `max`.
    6. ` max=$num`: Hvis`num ` er større end `max`, er `max` opdateret med værdien num.
    7. ` Færdig `: `For`-løkken er lukket.
    8. ` echo Det maksimale element i arrayet er: $max `: Endelig udskriver scriptet den maksimale værdi fundet i arrayet.
    461

    største antal

    30) Skriv et script til at beregne summen af ​​elementer i et array.

    #!/bin/bash

    # Erklære et array

    matrix=(1 65 22 19 94)

    # Initialiser en variabel for at gemme summen

    sum=0

    # Iterér gennem arrayet og føj hvert element til summen

    for num i ${array[@]}; gør
    am=$((am + am))
    Færdig

    # Udskriv summen

    echo Summen af ​​elementer i arrayet er: $sum

    Forklaring:

    ` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.

    ` matrix=(1 65 22 19 94) `: Arrayet erklæres og initialiseres med værdier.

    ` sum=0 `:` sum ` initialiseres til nul for at holde summen af ​​elementer.

    ` for num i ${array[@]}; gør `: A ` til ` loop bruges til at iterere gennem elementerne i arrayet.

    ` am=$((am + am)) `: Inde i løkken, hvert element ` på en ` tilføjes til ` sum ` variabel.

    ` Færdig `: Den ` til ` sløjfen er lukket.

    `echo Summen af ​​elementer i arrayet er: $sum`: Til sidst udskriver scriptet summen af ​​alle elementer i arrayet.

    462

    Summen af ​​elementer

    Få mere at vide om Shell-scripts

    Konklusion

    Vi ved alle nørder, at shell-script er meget nyttigt for at øge arbejdsproduktiviteten såvel som det sparer tid. Så i denne artikel har vi dækket 30 meget nyttige og mest besnærende shell-scripts eksempler . Vi håber, at denne komplette vejledning om shell-scripting-eksempel hjælper dig med at forstå alt om shell-scripts.



    ` repræsenterer scriptets navn.
  5. ` udgang 1 `: Denne linje afslutter scriptet med en exitkode på ` 1 `, hvilket indikerer en fejl.
  6. ` være `: Denne linje markerer slutningen af ​​` hvis ` erklæring.
  7. ` hvis [! -d $katalog ]; derefter `: Dette starter en anden if-sætning for at kontrollere, om den angivne mappe eksisterer (` -d ` tester for en mappe).
  8. ` echo Error: '$directory' er ikke en gyldig mappe. `: Hvis den angivne mappe ikke eksisterer, udskriver denne linje en fejlmeddelelse.
  9. ` udgang 1 `: Afslutter scriptet med en exit-kode på ` 1 `.
  10. ` være `: Markerer slutningen af ​​den anden ` hvis` udmelding.
  11. ` echo tomme filer i $directory: `: Hvis alt er gyldigt indtil videre, udskriver denne linje en meddelelse, der angiver, at scriptet vil vise tomme filer i den angivne mappe.
  12. ` find $katalog -type f -tom `: Denne linje bruger ` Find ` kommando til at søge efter tomme filer (` -tom `) af typen almindelige filer (` -type f `) i den angivne mappe. Det viser derefter disse tomme filer.
Finder tomme filer

Finder tomme filer

Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det nuværende bibliotek home/jayeshkumar/

25) Hvad er formålet med read-kommandoen i shell-scripting?

Read-kommandoen i shell-scripting lader scriptet bede dig om information. Det er ligesom når en computer stiller dig et spørgsmål og venter på dit svar. Dette er nyttigt til scripts, der kræver, at du skriver noget, eller når scriptet skal arbejde med information fra filer. Read-kommandoen hjælper scriptet med at stoppe og vente på, hvad du skriver, og så kan det bruge disse oplysninger til at gøre flere ting i scriptet.

Syntaks for læsekommando:

read variable_name>

Eksempel : Hvis vi ønsker at tage navn som input fra brugeren for at udskrive det.

#!/bin/bash
echo Indtast venligst dit navn:
læs navn
echo Hej, $navn!

453

læs nam

Sammenfattende bruges read-kommandoen til at fange brugerinput eller data fra filer i shell-scripts, hvilket gør scripts mere interaktive og alsidige.

26) Skriv et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

Her er et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

#!/bin/bash
mappe=″
if [-z $mappe]; derefter
ekkobrug:

For alle Linux-distributioner er shell-scriptet som en tryllestav, der automatiserer processen, sparer brugere tid og øger produktiviteten. Denne skal scripting tutorial vil introducere dig til de 25 plus skal scripting eksempler.

Men før vi går videre til emnet shell scripting eksempler, lad os forstå shell-script og de faktiske anvendelsestilfælde af shell-scripting.

Hvad er Shell Script?

Nå, skallen er en CLI ( kommandolinjefortolker ), som kører i et tekstvindue, hvor brugere kan administrere og udføre shell-kommandoer. På den anden side, processen med at skrive et sæt kommandoer, der skal udføres på et Linux-system. En fil, der indeholder sådanne instruktioner, kaldes et bash-script.

Brug af Shell Scripts

Nedenfor er nogle almindelige anvendelser af Shell Script:

  • Opgaveautomatisering – Det kan bruges til at automatisere gentagne opgaver som almindelige sikkerhedskopier og softwareinstallationsopgaver.
  • Tilpasning – Man kan bruge shell-scripts til at designe sit kommandolinjemiljø og nemt udføre sin opgave efter behov.
  • Filhåndtering – Shell-scripts kan også bruges til at administrere og manipulere filer og mapper, såsom flytning, kopiering, omdøbning eller sletning af filer.

Shell Script eksempler i Linux

1) Hvad indikerer shebang (#!) i begyndelsen af ​​et shell-script?

Det shebang (#!) i begyndelsen af ​​et script angiver den fortolker, der skal bruges til at udføre scriptet. Det fortæller systemet, hvilken shell eller fortolker der skal fortolke scriptets kommandoer.

For eksempel: Antag, at vi har et script ved navn myscript.sh skrevet i Bash-skallen:

shebang

shebang

I dette eksempel:

  • #!/bin/bash i begyndelsen af ​​scriptet indikerer, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  • Ekkokommandoerne bruges til at udskrive beskeder til terminalen.

2) Hvordan kører du et shell-script fra kommandolinjen?

For at køre et shell-script fra kommandolinjen skal vi følge disse trin:

  • Sørg for, at scriptfilen har eksekverbare tilladelser ved hjælp af chmod kommando :
chmod +x myscript.sh>
  • Udfør scriptet med dets filnavn:
./myscript.sh>

Her skal du udskifte myscrtipt.sh med dit manuskriptnavn.

3) Skriv et shell-script, der udskriver techcodeview.com til terminalen.

Opret et scriptnavn `myscript.sh` (vi bruger ` fordi ` editor, du kan vælge enhver editor)

vim myscript.sh>

#!/bin/bash
# Dette script udskriver techcodeview.com til terminalen
echo techcodeview.com

Print navn

Print navn

Vi gør vores script eksekverbart ved at bruge `chmod +x`, kør derefter med `./myscipt.sh` og få vores ønskede output techcodeview.com.

4) Forklar formålet med echo-kommandoen i shell-scripting.

Det ekko kommando bruges til at vise tekst eller variabler på terminalen. Det bruges almindeligvis til udskrivning af meddelelser, variable værdier og generering af programoutput.

434

ekko kommando

I dette eksempel har vi eksekveret `echo` på terminalen direkte, da det fungerer på samme måde inde i shell-scriptet.

5) Hvordan kan du tildele en værdi til en variabel i et shell-script?

Variabler tildeles værdier ved hjælp af tildelingsoperatoren =.

For eksempel:

#!/bin/bash
# Tildeling af en værdi til en variabel
navn=Jayesh
alder=21
echo $navn $age

Forklaring:

  • Navnevariablen tildeles værdien Jayesh.
  • Aldersvariablen tildeles værdien 21.
  • echo bruges til at udskrive og `$name` `$age` bruges til at kalde værdien gemt i variablerne.

435

6) Skriv et shell-script, der tager en brugers navn som input og hilser på dem.

Opret et scriptnavn `example.sh`.

#!/bin/bash
# Spørg brugeren om deres navn
echo Hvad er dit navn?
læs navn
# Hils brugeren
echo Hej, $navn! Dejligt at møde dig.

Forklaring:

  • #!/bin/bash: Dette er shebang-linjen. Det fortæller systemet at bruge Bash-fortolkeren til at udføre scriptet.
  • # Spørg brugeren om deres navn: Dette er en kommentar. Det giver kontekst om den kommende kode. Kommentarer ignoreres af tolken.
  • echo Hvad er dit navn?: Echo-kommandoen bruges til at vise teksten i dobbelte anførselstegn på terminalen.
  • read name: Read-kommandoen venter på, at brugeren indtaster tekst og gemmer den i variabelnavnet.
  • echo Hej, $navn! Rart at møde dig.: Denne linje bruger ekko-kommandoen til at udskrive en hilsen, der inkluderer værdien af ​​navnevariablen, som blev indsamlet fra brugerens input.

436

7) Hvordan tilføjer du kommentarer til et shell-script?

Kommentarer i shell-scripting bruges til at give forklaringer eller kontekst til koden. De ignoreres af tolken og er kun beregnet til mennesker, der læser manuskriptet. Du kan tilføje kommentarer ved at bruge #-symbolet.

#!/bin/bash
# Dette er en kommentar, der forklarer formålet med scriptet
ekko gfg

8) Opret et shell-script, der kontrollerer, om der findes en fil i den aktuelle mappe.

Her er et script, der kontrollerer, om en fil med navnet example.txt findes i den aktuelle mappe:

#!/bin/bash
file=example.txt
# Tjek om filen findes
if [ -e $fil ]; derefter
echo Filen findes: $file
andet
echo Filen blev ikke fundet: $fil
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
  2. file=example.txt: Denne linje definerer variabelfilen og tildeler værdien example.txt til den. Du kan erstatte dette med navnet på den fil, du vil søge efter.
  3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Betingelsen [-e $file] kontrollerer, om filen, der er angivet af værdien af ​​filvariablen, eksisterer. Flaget -e bruges til at kontrollere, om filen eksisterer.
  4. echo File exists: $file: Hvis betingelsen er sand (dvs. filen eksisterer), udskriver denne linje en meddelelse, der angiver, at filen eksisterer, sammen med filens navn.
  5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), udfører scriptet koden under else-grenen.
  6. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der angiver, at den angivne fil ikke blev fundet, sammen med filens navn.
  7. fi: Denne linje markerer slutningen af ​​if-sætningen.
Finder fil

Finder fil

9) Hvad er forskellen mellem enkelte anførselstegn (') og dobbelte anførselstegn () i shell-scripting?

Enkelte anførselstegn (') og dobbelte anførselstegn () bruges til at omslutte strenge i shell-scripting, men de har forskellig adfærd:

  • Enkelte citater: Alt mellem enkelte citater behandles som en bogstavelig streng. Variabelnavne og de fleste specialtegn udvides ikke.
  • Dobbelte anførselstegn: Variabler og visse specialtegn inden for dobbelte anførselstegn udvides. Indholdet er underlagt variabel substitution og kommandosubstitution.

#!/bin/bash

abcd=Hej
echo '$abcd' # Output: $abcd
echo $abcd # Output: Hej

10) Hvordan kan du bruge kommandolinjeargumenter i et shell-script?

Kommandolinjeargumenter er værdier, der leveres til et script, når det udføres. De kan tilgås i scriptet ved hjælp af specielle variabler som $1, $2 osv., hvor $1 repræsenterer det første argument, $2 repræsenterer det andet argument, og så videre.

For eksempel: Hvis vores scriptnavn i `eksempel.sh`

#!/bin/bash

echo Script navn: $0
echo Første argument: $1
echo Andet argument: $2

Hvis vi kører scriptet med `.example.sh hello_1 hello_2`, vil det udlæse:

cli argumenter

cli argumenter

11) Hvordan bruger du for-løkken til at gentage en liste med værdier?

Opret et scriptnavn `example.sh`.

#!/bin/bash

frugter = (æble banan kirsebær daddel)
for frugt i ${fruits[@]}; gør
echo Nuværende frugt: $fruit
Færdig

Forklaring:

`fruits=`-linjen opretter et array med navnet frugter med fire elementer: æble, banan, kirsebær og daddel.

  • for frugt i ${fruits[@]}; do: Denne linje starter en for-løkke. Her er hvad hver del betyder:
  • for frugt: Dette erklærer en loop-variabel kaldet frugt. I hver iteration af løkken vil frugt holde værdien af ​​det aktuelle element fra frugtarrayet.
  • ${fruits[@]}: Dette er en matrixudvidelse, der tager alle elementerne fra frugtarrayet. ${…}-syntaksen sikrer, at hvert element behandles som et separat element.
  • do: Dette nøgleord markerer begyndelsen af ​​løkketeksten.
  • echo Current fruit: $fruit: Inde i løkken bruger denne linje echo-kommandoen til at vise den aktuelle værdi af løkkevariablen frugt. Den udskriver en besked som Current fruit: apple for hver frugt i arrayet.
  • done: Dette nøgleord markerer slutningen af ​​løkkens krop. Det fortæller scriptet, at løkken er afsluttet.
for sløjfe

for sløjfe

12) Skriv et shell-script, der beregner summen af ​​heltal fra 1 til N ved hjælp af en loop.

Opret et scriptnavn `example.sh`.

#!/bin/bash

echo Indtast et tal (N):
læs N
sum=0
for ((i=1; i<=$N; i++)); gør
sum=$((sum + i))
Færdig
echo Summen af ​​heltal fra 1 til $N er: $sum

Forklaring:
Scriptet starter med at bede dig om at indtaste et tal (N) ved hjælp af read. Dette tal bestemmer, hvor mange gange løkken kører.

  1. Variablen sum initialiseres til 0. Denne variabel vil holde styr på summen af ​​heltal.
  2. For-løkken begynder med for (( i=1; i<=$N; i++ )). Denne sløjfestruktur bruges til at gentage et sæt handlinger et vist antal gange, i dette tilfælde fra 1 til værdien af ​​N.
  3. Inde i løkken sker disse ting:
    • i=1 sætter loop-variablen i til 1 i begyndelsen af ​​hver iteration.
    • Sløjfebetingelsen i<=$N kontrollerer, om i stadig er mindre end eller lig med det givne tal N.
    • Hvis betingelsen er sand, udføres loop body.
    • sum=$((sum + i)) beregner den nye værdi af sum ved at tilføje den aktuelle værdi af i. Dette summerer hele tallene fra 1 til den aktuelle i-værdi.
  4. Efter hver iteration øger i++ værdien af ​​i med 1.
  5. Sløjfen fortsætter med at køre, indtil betingelsen i<=$N bliver falsk (når i bliver større end N).
  6. Når løkken er færdig, viser scriptet summen af ​​heltal fra 1 til det indtastede tal N.

439

13) Opret et script, der søger efter et bestemt ord i en fil og tæller dets forekomster.

Opret et scriptnavn `word_count.sh`

#!/bin/bash

echo Indtast ordet for at søge efter:
læs target_word
echo Indtast filnavnet:
læs filnavn
count=$(grep -o -w $mål_ord $filnavn | wc -l)
echo Ordet '$target_word' vises $tæller gange i '$filnavn'.

Forklaring:

  • echo Indtast ordet, der skal søges efter:: Denne linje viser en meddelelse, der beder brugeren om at indtaste et ord, de vil søge efter i en fil.
  • read target_word: Denne linje læser input fra brugeren og gemmer det i en variabel ved navn target_word.
  • echo Indtast filnavnet:: Denne linje viser en meddelelse, der beder brugeren om at indtaste navnet på den fil, de vil søge i.
  • læs filnavn: Denne linje læser input fra brugeren og gemmer det i en variabel med navnet filnavn.
  • count=$(grep -o -w $mål_ord $filnavn | wc -l): Denne linje udfører scriptets hovedarbejde. Lad os opdele det yderligere:
    • grep -o -w $target_word $filnavn: Denne del af kommandoen søger efter forekomster af target_word i det angivne filnavn. Valgmulighederne -o og -w sikrer, at kun hele ordmatches tælles.
    • |: Dette er et rør, som tager outputtet fra den forrige kommando og sender det som input til den næste kommando.
    • wc -l: Denne del af kommandoen bruger wc-kommandoen til at tælle antallet af linjer i inputtet. Valgmuligheden -l tæller specifikt linjerne.
    • Hele kommandoen beregner antallet af forekomster af target_word i filen og tildeler denne optælling til variablen antal

441

14) Forklar forskellene mellem standard output (stdout) og standardfejl (stderr).

Hovedforskellen mellem standardoutput (stdout) og standardfejl (stderr) er som følger:

  • Standard output (stdout): Dette er standardoutputstrømmen, hvor en kommandos almindelige output går. Det vises som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af>.
  • Standardfejl (stderr): Dette er outputstrømmen for fejlmeddelelser og advarsler. Det vises også som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af 2>.

15) Forklar begrebet betingede udsagn i shell scripting.

Betingede udsagn i shell-scripting give os mulighed for at træffe beslutninger og kontrollere flowet af vores script baseret på visse betingelser. De gør det muligt for vores script at udføre forskellige sæt kommandoer afhængigt af, om en bestemt betingelse er sand eller falsk. De primære betingede sætninger i shell-scripting er if-sætningen, elif-sætningen (valgfri) og else-sætningen (valgfri).

Her er den grundlæggende struktur af en betinget erklæring i shell-scripting:

if [betingelse]; derefter
# Kommandoer til at udføre, hvis betingelsen er sand
elif [en anden_tilstand]; derefter
# Kommandoer til at udføre, hvis another_condition er sand (valgfrit)
andet
# Kommandoer til at udføre, hvis ingen af ​​betingelserne er sande (valgfrit)
være

Forklaring:

  • [ condition ] = Kommando, der evaluerer betingelsen og returnerer en sand (0) eller falsk (ikke-nul) udgangsstatus.
  • then = Det er et nøgleord, der angiver, at kommandoerne efter det vil blive udført, hvis betingelsen evalueres til sand.
  • elif = (forkortelse for else if) Det er et afsnit, der giver os mulighed for at angive yderligere betingelser for at kontrollere.
  • else = det er en sektion, der indeholder kommandoer, der vil blive udført, hvis ingen af ​​betingelserne er sande.
  • fi = Det er et nøgleord, der markerer slutningen af ​​den betingede blok.

16) Hvordan læser du linjer fra en fil i et shell-script?

Til læse linjer fra en fil i et shell-script, kan vi bruge forskellige metoder, men en almindelig fremgangsmåde er at bruge en while-løkke i kombination med read-kommandoen. Sådan kan vi gøre det:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Tjek om filen findes
if [ -e $fil ]; derefter
mens IFS= læser -r linje; gør
echo Linje læst: $line
# Tilføj din behandlingslogik her
færdig <$fil
andet
echo Filen blev ikke fundet: $fil
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
  2. file=/home/jayeshkumar/jayesh.txt: Denne linje definerer variabelfilen og tildeler den fulde sti til filen jayesh.txt i mappen /home/jayeshkumar. Skift denne sti, så den matcher den faktiske sti til den fil, du vil læse.
  3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Den kontrollerer, om filen angivet af variablen $file eksisterer. Flaget -e kontrollerer for fileksistens.
  4. mens IFS= læser -r linje; do: Denne linje starter en while-løkke, der læser linjer fra filen.
    • IFS=: IFS (Internal Field Separator) er sat til en tom værdi for at bevare førende og efterfølgende mellemrum.
    • read -r line: Dette læser den aktuelle linje fra filen og gemmer den i den variable linje.
  5. echo Line read: $line: Denne linje udskriver indholdet af den linje, der blev læst fra filen. Variablen $line indeholder den aktuelle linjes indhold.
  6. # Tilføj din behandlingslogik her: Dette er en pladsholderkommentar, hvor du kan tilføje din egen logik til at behandle hver linje. For eksempel kan du analysere linjen, udtrække information eller udføre specifikke handlinger baseret på indholdet.
  7. done <$file: Dette markerer slutningen af ​​while-løkken. < $filen omdirigerer indholdet af filen, der skal læses af løkken.
  8. else: Hvis filen ikke eksisterer (betingelsen i if-sætningen er falsk), udfører scriptet koden under else-grenen.
  9. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der indikerer, at den angivne fil ikke blev fundet.
  10. fi: Denne linje markerer slutningen af ​​if-sætningen.
læse fil

læse fil

Her brugte vi ` pwd ` kommando for at få stien til den aktuelle mappe.

17) Skriv en funktion i et shell-script, der beregner fakultetet af et givet tal.

Her er manuskriptetudregn faktorenaf et givet tal.

#!/bin/bash
# Definer en funktion til at beregne factorial
beregne_faktor() {
num=$1
fakta=1
for ((i=1; i<=tal; i++)); gør
fakta=$((faktum * i))
Færdig
ekko $fakta
}
# Bed brugeren om at indtaste et nummer
echo Indtast et tal:
læs input_num
# Kald calculate_fatorial-funktionen med det indtastede nummer
factorial_result=$(calculate_fatorial $input_num)
# Vis det faktorielle resultat
echo Factorial af $input_num er: $factorial_result

Forklaring:

  1. Scriptet starter med shebang-linjen #!/bin/bash for at angive tolken.
  2. calculate_fatorial() er defineret som en funktion. Det kræver et argument, num, som er det tal, som faktoren skal beregnes for.
  3. Inde i funktionen initialiseres fakta til 1. Denne variabel vil gemme det faktorielle resultat.
  4. For-løkken itererer fra 1 til det givne tal (num). I hver iteration multipliceres den aktuelle værdi af fakta med loop-indekset i.
  5. Når løkken er fuldført, indeholder faktavariablen den beregnede faktor.
  6. Scriptet beder brugeren om at indtaste et tal ved hjælp af read.
  7. calculate_fatorial-funktionen kaldes med det brugerangivne tal, og resultatet gemmes i variablen factorial_result.
  8. Til sidst viser scriptet det beregnede faktorielle resultat.
Faktoriel

Faktoriel

18) Hvordan håndterer du signaler som Ctrl+C i et shell-script?

I et shell-script kan du håndtere signaler som Ctrl+C (også kendt som SIGINT) ved at bruge trap-kommandoen. Ctrl+C genererer et SIGINT-signal, når brugeren trykker på det for at afbryde det kørende script eller program. Ved at bruge trap-kommandoen kan du specificere handlinger, der skal udføres, når et bestemt signal modtages. Sådan håndterer du signaler som Ctrl+C i et shell-script:

#!/bin/bash
Ryd op() {
echo Script afbrudt. Udfører oprydning...
# Tilføj dine oprydningshandlinger her
udgang 1
}
# Opsæt en fælde for at kalde oprydningsfunktionen, når Ctrl+C (SIGINT) modtages
fældeoprydning SIGINT
# Resten af ​​dit script
ekko kører...
sove 10
ekko Færdig.

Håndtering af signaler er vigtig for at gøre scripts robuste og sikre, at de håndterer uventede afbrydelser elegant. Du kan tilpasse oprydningsfunktionen, så den matcher dine specifikke behov, såsom at lukke filer, stoppe processer eller logge oplysninger, før scriptet afsluttes.

Forklaring:

  1. #!/bin/bash: Denne shebang-linje specificerer den fortolker, der skal bruges til at køre scriptet.
  2. cleanup() { … }: Dette definerer en funktion ved navn cleanup. Inde i denne funktion kan du inkludere alle handlinger, der skal udføres, når scriptet afbrydes, såsom at lukke filer, frigive ressourcer eller udføre andre oprydningsopgaver.
  3. trap cleanup SIGINT: Trappe-kommandoen bruges til at opsætte en signalhåndtering. I dette tilfælde specificerer den, at når SIGINT-signalet (Ctrl+C) modtages, skal oprydningsfunktionen udføres.
  4. echo Running…, sleep 10, echo Finished.: Dette er blot eksempelkommandoer til at simulere udførelsen af ​​et script.

446

19) Opret et script, der tjekker for og fjerner duplikerede linjer i en tekstfil.

Her er vores linux-script, hvor vi fjerner duplikerede linjer fra en tekstfil.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sorter $input_fil | uniq> $output_fil
echo Duplikerede linjer blev fjernet.

Forklaring:

  1. Scriptet starter med en shebang (#!/bin/bash), som angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. Variablen input_file er sat til navnet på inputfilen, der indeholder duplikerede linjer (ændre dette til dit faktiske inputfilnavn).
  3. Variablen output_file er sat til navnet på outputfilen, hvor duplikaterne vil blive fjernet (ændre dette til dit ønskede outputfilnavn).
  4. Scriptet bruger sorteringskommandoen til at sortere linjerne i inputfilen. Sortering af linjerne sikrer, at duplikerede linjer grupperes sammen.
  5. De sorterede linjer sendes derefter gennem uniq-kommandoen, som fjerner på hinanden følgende duplikerede linjer. Outputtet fra denne proces omdirigeres til outputfilen.
  6. Når dubletterne er fjernet, udskriver scriptet en succesmeddelelse.
fjernelse af dobbelt linje

duplikatlinjefjernelse

Her bruger vi ` kat ` for at vise teksten inde i tekstfilen.

20) Skriv et script, der genererer en sikker tilfældig adgangskode.

Her er vores script til at generere en sikker tilfældig adgangskode.

#!/bin/bash
# Funktion til at generere en tilfældig adgangskode
generere_adgangskode() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Kald funktionen og gem den genererede adgangskode
password=$(generer_adgangskode)
echo Genereret adgangskode: $password

Bemærk: Brugeren kan derfor ændre længden af ​​adgangskoden ved at erstatte tallet '12'.

Forklaring:

  1. Scriptet starter med en shebang (#!/bin/bash), hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
  2. Generer_password-funktionen er defineret til at generere en tilfældig adgangskode. Sådan fungerer det:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 opdeler de filtrerede tilfældige data i linjer med bredde på 12 tegn hver.
    • head -n 1 vælger den første linje, hvilket i praksis giver os en tilfældig sekvens af tegn med længden 12.
  3. Adgangskodevariablen tildeles resultatet af at kalde funktionen gener_password.
  4. Til sidst vises den genererede adgangskode ved hjælp af ekko.

448

21) Skriv et shell-script, der beregner den samlede størrelse af alle filer i en mappe.

Her er et shell-script til at beregne den samlede størrelse af alle filer i en mappe.

#!/bin/bash
mappe=/sti/til/din/mappe
total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
echo Samlet størrelse af filer i $mappe: $total_size

Forklaring:

  1. Scriptet starter med #!/bin/bash shebang, hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
  2. Bibliotekvariablen er sat til stien til den mappe, som du vil beregne den samlede filstørrelse for. Erstat /sti/til/din/mappe med den faktiske sti.
  3. Kommandoen du bruges til at estimere brugen af ​​filplads. De anvendte muligheder er:
    • -c: Fremstil en totalsum.
    • -s: Vis kun den samlede størrelse af den angivne mappe.
    • -h: Udskriftsstørrelser i et format, der kan læses af mennesker (f.eks. KB, MB, GB).
  4. Outputtet fra du sendes til grep total for at bortfiltrere linjen, der indeholder den samlede størrelse.
  5. awk '{print $1}' bruges til at udtrække det første felt (samlet størrelse) fra linjen.
  6. Den beregnede samlede størrelse gemmes i variablen total_size.
  7. Endelig viser scriptet den samlede størrelse ved hjælp af ekko.
Samlet størrelse af filer

Samlet størrelse af filer

Her brugte vi ` pwd ` kommando for at se den aktuelle mappesti.

22) Forklar forskellen mellem if- og elif-sætninger i shell-scripting.

Feature `hvis` Staiftement `elif`-erklæring
Formål Forklar forskellen mellem if- og elif-sætninger i shell-scripting. Giver alternative betingelser for at kontrollere, hvornår den oprindelige, hvis betingelsen er falsk.
brug Brugt til den oprindelige tilstand. Brugt efter den indledende if-tilstand for at kontrollere yderligere forhold.
antal blokke Kan kun have én hvis blok. Kan have flere elif-blokke, men kun én anden blok (valgfrit).
Udførelse Udfører den kodeblok, der er knyttet til if-sætningen, hvis betingelsen er sand. Hvis betingelsen er falsk, udføres den anden blok (hvis den findes) (valgfrit). Kontrollerer hver elif tilstand i rækkefølge. Hvis én elif-betingelse er sand, udføres den tilsvarende kodeblok, og scriptet afslutter hele den betingede blok. Hvis ingen af ​​elif-betingelserne er sande, udføres else-blokken (hvis den er til stede).
Indlejrede strukturer Kan indlejres i andre if-, elif- eller else-blokke. Kan ikke indlejres i en anden elif-blok, men kan bruges i en if eller else-blok.

Lad os forstå det med et eksempel.

#!/bin/bash
nummer=5
if [$nummer -gt 10]; derefter
echo $nummer er større end 10
andet
echo $nummer er ikke større end 10
være
ekko ---
if [$nummer -gt 10]; derefter
echo $nummer er større end 10
elif [$nummer -eq 10]; derefter
echo $nummer er lig med 10
andet
echo $nummer er mindre end 10
være

Forklaring:

I dette eksempel kontrollerer den første if-blok, om tallet er større end 10. Hvis ikke, udskriver den en meddelelse, der angiver, at tallet ikke er større end 10. Den anden blok med elif-sætninger kontrollerer flere betingelser sekventielt, indtil en af ​​dem er sand. I dette tilfælde, da værdien af ​​nummer er 5, vil outputtet være:

if_elif forskel

if_elif forskel

23) Hvordan bruger du en while-løkke til gentagne gange at udføre kommandoer?

En while-løkke bruges i shell-scripting til gentagne gange at udføre et sæt kommandoer, så længe en specificeret betingelse er sand. Sløjfen fortsætter med at udføre kommandoerne, indtil betingelsen bliver falsk.

Her er den grundlæggende syntaks for en while-løkke:

mens [betingelse]; gør
# Kommandoer, der skal udføres
Færdig

Forklaring:

  1. `While`-løkken starter med nøgleordet `while` efterfulgt af en betingelse omsluttet af firkantede parenteser `[ ]`.
  2. Sløjfens krop, som indeholder de kommandoer, der skal udføres, er omsluttet af nøgleordene 'do' og 'done'.
  3. Løkken tjekker først tilstanden. Hvis betingelsen er sand, udføres kommandoerne i loop-legemet. Efter at loop-kroppen er udført, kontrolleres betingelsen igen, og processen gentages, indtil betingelsen bliver falsk.

Eksempel: Hvis vi ønsker at udskrive tal fra 1 til 5

#!/bin/bash
tæller=1
while [ $tæller -le 5 ]; gør
ekkonummer: $counter
tæller=$((tæller + 1))
Færdig

Forklaring:

  • Tællervariablen er sat til 1.
  • While-løkken kontrollerer, om værdien af ​​tælleren er mindre end eller lig med 5. Så længe denne betingelse er sand, fortsætter løkken med at udføre.
  • Inde i løkken udskrives den aktuelle værdi af tælleren ved hjælp af ekko.
  • Tælleren øges med 1 ved hjælp af udtrykket $((tæller + 1)).
mens loop

mens loop

24) Opret et shell-script, der finder og viser alle tomme filer i en mappe.

Shell-script, som du kan bruge til at finde og liste alle tomme filer i en mappe ved hjælp af kommandoerne `find` og `stat`:

#!/bin/bash
mappe=$1″
if [-z $mappe]; derefter
ekkobrug: $0
udgang 1
være

hvis [! -d $katalog ]; derefter
echo Error: '$directory' er ikke en gyldig mappe.
udgang 1
være
echo tomme filer i $directory:
find $katalog -type f -tom

Forklaring:

  1. ` #!/bin/bash `: Dette kaldes en shebang, og det fortæller operativsystemet at bruge Bash-skallen til at fortolke og udføre scriptet.
  2. ` mappe=$1″ `: Denne linje tildeler det første kommandolinjeargument (angivet med $1) til variablen ` vejviser `.
  3. ` if [-z $mappe]; derefter `: Denne linje starter en if-sætning, der kontrollerer om ` vejviser ` variabel er tom (-z tester for en tom streng).
  4. ` ekkobrug: $0 `: Hvis mappen er tom, udskriver denne linje en brugsmeddelelse, hvor ` $0 ` repræsenterer scriptets navn.
  5. ` udgang 1 `: Denne linje afslutter scriptet med en exitkode på ` 1 `, hvilket indikerer en fejl.
  6. ` være `: Denne linje markerer slutningen af ​​` hvis ` erklæring.
  7. ` hvis [! -d $katalog ]; derefter `: Dette starter en anden if-sætning for at kontrollere, om den angivne mappe eksisterer (` -d ` tester for en mappe).
  8. ` echo Error: '$directory' er ikke en gyldig mappe. `: Hvis den angivne mappe ikke eksisterer, udskriver denne linje en fejlmeddelelse.
  9. ` udgang 1 `: Afslutter scriptet med en exit-kode på ` 1 `.
  10. ` være `: Markerer slutningen af ​​den anden ` hvis` udmelding.
  11. ` echo tomme filer i $directory: `: Hvis alt er gyldigt indtil videre, udskriver denne linje en meddelelse, der angiver, at scriptet vil vise tomme filer i den angivne mappe.
  12. ` find $katalog -type f -tom `: Denne linje bruger ` Find ` kommando til at søge efter tomme filer (` -tom `) af typen almindelige filer (` -type f `) i den angivne mappe. Det viser derefter disse tomme filer.
Finder tomme filer

Finder tomme filer

Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det nuværende bibliotek home/jayeshkumar/

25) Hvad er formålet med read-kommandoen i shell-scripting?

Read-kommandoen i shell-scripting lader scriptet bede dig om information. Det er ligesom når en computer stiller dig et spørgsmål og venter på dit svar. Dette er nyttigt til scripts, der kræver, at du skriver noget, eller når scriptet skal arbejde med information fra filer. Read-kommandoen hjælper scriptet med at stoppe og vente på, hvad du skriver, og så kan det bruge disse oplysninger til at gøre flere ting i scriptet.

Syntaks for læsekommando:

read variable_name>

Eksempel : Hvis vi ønsker at tage navn som input fra brugeren for at udskrive det.

#!/bin/bash
echo Indtast venligst dit navn:
læs navn
echo Hej, $navn!

453

læs nam

Sammenfattende bruges read-kommandoen til at fange brugerinput eller data fra filer i shell-scripts, hvilket gør scripts mere interaktive og alsidige.

26) Skriv et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

Her er et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

#!/bin/bash
mappe=$1″
if [-z $mappe]; derefter
ekkobrug: $0
udgang 1
være

hvis [! -d $katalog ]; derefter

echo Error: '$directory' er ikke en gyldig mappe.
udgang 1
være

cd $katalog || udgang 1

for fil i *; gør
if [-f $fil ]; derefter
newname=$(ekko $fil | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
være
Færdig

Forklaring:

  1. #!/bin/bash : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. mappe=$1″ : Denne linje tildeler det første kommandolinjeargument til den variable mappe.
  3. if [-z $mappe]; derefter : Denne linje kontrollerer, om biblioteksvariablen er tom (intet argument angivet ved kørsel af scriptet).
  4. ekkobrug: $0 : Hvis mappen er tom, udskriver denne linje en brugsmeddelelse med scriptets navn ($0).
  5. udgang 1 : Denne linje afslutter scriptet med en exitkode på 1, hvilket indikerer, at der er opstået en fejl.
  6. f i: Dette markerer slutningen af ​​den første if-sætning.
  7. hvis [! -d $katalog ]; derefter : Denne linje kontrollerer, om den angivne mappe ikke eksisterer (-d tester for en mappe).
  8. echo Error: '$directory' er ikke en gyldig mappe. : Hvis den angivne mappe ikke findes, udskriver denne linje en fejlmeddelelse.
  9. udgang 1 : Afslutter scriptet med en exitkode på 1.
  10. være : Markerer slutningen af ​​den anden if-sætning.
  11. cd $katalog || udgang 1 : Ændrer den aktuelle arbejdsmappe til den angivne mappe. Hvis mappeændringen mislykkes (f.eks. ikke-eksisterende mappe), afsluttes scriptet med en fejlkode.
  12. for fil i *; gør: jeg for fil i *; gør: starter en loop, der itererer over alle elementer i den aktuelle mappe (* matcher alle filnavne).
  13. if [-f $fil ]; derefter : Kontrollerer, om det aktuelle loop-iterationselement er en almindelig fil (-f tester for en almindelig fil).
  14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer det aktuelle filnavn ($file) til små bogstaver ved hjælp af tr-kommandoen og gemmer resultatet i newname-variablen.
  15. [ $file != $newname ] && mv $file $newname : Sammenligner det originale filnavn med det nye lille filnavn. Hvis de er forskellige, omdøber den filen ved hjælp af mv-kommandoen.
  16. være : Markerer slutningen af ​​den indre if-sætning.
  17. Færdig : Markerer slutningen af ​​løkken.

454

Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det aktuelle bibliotek home/jayeshkumar/test

27) Hvordan kan du bruge aritmetiske operationer i et shell-script?

Aritmetiske operationer kan udføres i et shell-script ved hjælp af forskellige indbyggede metoder. Skallen giver mekanismer til simple aritmetiske beregninger ved hjælp af aritmetisk udvidelse som:

  1. Aritmetisk udvidelse ($((…)))
  2. Bruger kommandoen expr
  3. Brug let Command

Her er vores Shell-script, der forklarer alle tre metoder til aritmetiske operationer.

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

#Aritmetisk udvidelse ($((…)))

resultat=$((tal1 + tal2))
echo Sum: $resultat

#Bruger kommandoen expr

sum=$(udg. $num1 + $num2)
echo Sum: $sum

#Brug let Command

lad sum = num1 + num2
echo Sum: $sum

Forklaring:

  1. `#!/bin/bash` : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. `tal1=10` og ` num2=5` : Disse linjer tildeler værdierne 10 og 5 til variablerne ` nummer1 ` og ` nummer 2 `, henholdsvis.
  3. `#Aritmetisk udvidelse ($((...)))` : Dette er en kommentar, der angiver starten på afsnittet, der demonstrerer aritmetisk udvidelse.
  4. `resultat=$((tal1 + tal2))` : Denne linje bruger aritmetisk ekspansion til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` resultat ` variabel.
  5. `ekko Sum: $resultat` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` resultat ` variabel.
  6. `#Using expr Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` udtr ` kommando til aritmetiske operationer.
  7. `sum=$(udtr. $num1 + $num2)` : Denne linje bruger ` udtr ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` sum ` variabel. Bemærk, at ` udtr ` kommando kræver mellemrum omkring operatørerne.
  8. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
  9. `#Brug let Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` lade ` kommando til aritmetiske operationer.
  10. `lad sum = num1 + num2″` : Denne linje bruger ` lade ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og tildeler resultatet til ` sum ` variabel. Den ` lade ` kommandoen kræver ikke mellemrum omkring operatørerne.
  11. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
aritmetik

aritmetik

28) Opret et script, der kontrollerer, om en netværksvært er tilgængelig.

Her er et simpelt shell-script, der bruger ping-kommandoen til at kontrollere, om en netværksvært er tilgængelig:

#!/bin/bash
vært=$1″
if [ -z $host ]; derefter
ekkobrug: $0
udgang 1
være
ping -c 4 $host

hvis [$? -ækv 0]; derefter
echo $host er tilgængelig.
andet
echo $host er ikke tilgængelig.
være

Forklaring:

  1. Den tager et værtsnavn eller IP-adresse som argument og kontrollerer, om argumentet er angivet.
  2. Hvis der ikke er angivet noget argument, viser det en brugsmeddelelse og afsluttes.
  3. Den bruger ping-kommandoen med -c 4-indstillingen til at sende fire ICMP-ekko-anmodninger til den angivne vært.
  4. Efter at ping-kommandoen er kørt, kontrollerer den exit-statussen ($?). Hvis exit-statussen er 0, betyder det, at værten er tilgængelig, og scriptet udskriver en succesmeddelelse. Ellers udskriver den en fejlmeddelelse.

456

Bemærk : Vi skal angive et værtsnavn som argument, når vi kører scriptet. Her har vi brugt google.com

29) Skriv et Shell-script for at finde det største element i et array:

Her er et shell-script til at finde det bedste element i et array.

#!/bin/bash
# Erklære et array
matrix=(3 56 24 89 67)

# Initialiser en variabel for at gemme den maksimale værdi, startende med det første element

max=${array[0]}

# Iterér gennem arrayet

for num i ${array[@]}; gør

# Sammenlign hvert element med det aktuelle maksimum

if ((antal> maks)); derefter
max=$antal
være
Færdig

# Udskriv den maksimale værdi

echo Det maksimale element i arrayet er: $max

Forklaring:

  1. ` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. ` matrix=(3 56 24 89 67) `: Arrayet erklæres og initialiseres med værdier.
  3. ` max=${array[0]} `: `max` initialiseres med det første element i arrayet.
  4. ` for num i ${array[@]}; gør `: En `for`-løkke bruges til at iterere gennem elementerne i arrayet.
  5. ` if ((antal> maks)); derefter `: En `if`-sætning kontrollerer, om det aktuelle element `num` er større end det aktuelle maksimum `max`.
  6. ` max=$num`: Hvis`num ` er større end `max`, er `max` opdateret med værdien num.
  7. ` Færdig `: `For`-løkken er lukket.
  8. ` echo Det maksimale element i arrayet er: $max `: Endelig udskriver scriptet den maksimale værdi fundet i arrayet.
461

største antal

30) Skriv et script til at beregne summen af ​​elementer i et array.

#!/bin/bash

# Erklære et array

matrix=(1 65 22 19 94)

# Initialiser en variabel for at gemme summen

sum=0

# Iterér gennem arrayet og føj hvert element til summen

for num i ${array[@]}; gør
am=$((am + am))
Færdig

# Udskriv summen

echo Summen af ​​elementer i arrayet er: $sum

Forklaring:

` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.

` matrix=(1 65 22 19 94) `: Arrayet erklæres og initialiseres med værdier.

` sum=0 `:` sum ` initialiseres til nul for at holde summen af ​​elementer.

` for num i ${array[@]}; gør `: A ` til ` loop bruges til at iterere gennem elementerne i arrayet.

` am=$((am + am)) `: Inde i løkken, hvert element ` på en ` tilføjes til ` sum ` variabel.

` Færdig `: Den ` til ` sløjfen er lukket.

`echo Summen af ​​elementer i arrayet er: $sum`: Til sidst udskriver scriptet summen af ​​alle elementer i arrayet.

462

Summen af ​​elementer

Få mere at vide om Shell-scripts

Konklusion

Vi ved alle nørder, at shell-script er meget nyttigt for at øge arbejdsproduktiviteten såvel som det sparer tid. Så i denne artikel har vi dækket 30 meget nyttige og mest besnærende shell-scripts eksempler . Vi håber, at denne komplette vejledning om shell-scripting-eksempel hjælper dig med at forstå alt om shell-scripts.




udgang 1
være

hvis [! -d $katalog ]; derefter

echo Error: '$directory' er ikke en gyldig mappe.
udgang 1
være

cd $katalog || udgang 1

for fil i *; gør
if [-f $fil ]; derefter
newname=$(ekko $fil | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
være
Færdig

Forklaring:

  1. #!/bin/bash : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. mappe=″ : Denne linje tildeler det første kommandolinjeargument til den variable mappe.
  3. if [-z $mappe]; derefter : Denne linje kontrollerer, om biblioteksvariablen er tom (intet argument angivet ved kørsel af scriptet).
  4. ekkobrug:

    For alle Linux-distributioner er shell-scriptet som en tryllestav, der automatiserer processen, sparer brugere tid og øger produktiviteten. Denne skal scripting tutorial vil introducere dig til de 25 plus skal scripting eksempler.

    Men før vi går videre til emnet shell scripting eksempler, lad os forstå shell-script og de faktiske anvendelsestilfælde af shell-scripting.

    Hvad er Shell Script?

    Nå, skallen er en CLI ( kommandolinjefortolker ), som kører i et tekstvindue, hvor brugere kan administrere og udføre shell-kommandoer. På den anden side, processen med at skrive et sæt kommandoer, der skal udføres på et Linux-system. En fil, der indeholder sådanne instruktioner, kaldes et bash-script.

    Brug af Shell Scripts

    Nedenfor er nogle almindelige anvendelser af Shell Script:

    • Opgaveautomatisering – Det kan bruges til at automatisere gentagne opgaver som almindelige sikkerhedskopier og softwareinstallationsopgaver.
    • Tilpasning – Man kan bruge shell-scripts til at designe sit kommandolinjemiljø og nemt udføre sin opgave efter behov.
    • Filhåndtering – Shell-scripts kan også bruges til at administrere og manipulere filer og mapper, såsom flytning, kopiering, omdøbning eller sletning af filer.

    Shell Script eksempler i Linux

    1) Hvad indikerer shebang (#!) i begyndelsen af ​​et shell-script?

    Det shebang (#!) i begyndelsen af ​​et script angiver den fortolker, der skal bruges til at udføre scriptet. Det fortæller systemet, hvilken shell eller fortolker der skal fortolke scriptets kommandoer.

    For eksempel: Antag, at vi har et script ved navn myscript.sh skrevet i Bash-skallen:

    shebang

    shebang

    I dette eksempel:

    • #!/bin/bash i begyndelsen af ​​scriptet indikerer, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    • Ekkokommandoerne bruges til at udskrive beskeder til terminalen.

    2) Hvordan kører du et shell-script fra kommandolinjen?

    For at køre et shell-script fra kommandolinjen skal vi følge disse trin:

    • Sørg for, at scriptfilen har eksekverbare tilladelser ved hjælp af chmod kommando :
    chmod +x myscript.sh>
    • Udfør scriptet med dets filnavn:
    ./myscript.sh>

    Her skal du udskifte myscrtipt.sh med dit manuskriptnavn.

    3) Skriv et shell-script, der udskriver techcodeview.com til terminalen.

    Opret et scriptnavn `myscript.sh` (vi bruger ` fordi ` editor, du kan vælge enhver editor)

    vim myscript.sh>

    #!/bin/bash
    # Dette script udskriver techcodeview.com til terminalen
    echo techcodeview.com

    Print navn

    Print navn

    Vi gør vores script eksekverbart ved at bruge `chmod +x`, kør derefter med `./myscipt.sh` og få vores ønskede output techcodeview.com.

    4) Forklar formålet med echo-kommandoen i shell-scripting.

    Det ekko kommando bruges til at vise tekst eller variabler på terminalen. Det bruges almindeligvis til udskrivning af meddelelser, variable værdier og generering af programoutput.

    434

    ekko kommando

    I dette eksempel har vi eksekveret `echo` på terminalen direkte, da det fungerer på samme måde inde i shell-scriptet.

    5) Hvordan kan du tildele en værdi til en variabel i et shell-script?

    Variabler tildeles værdier ved hjælp af tildelingsoperatoren =.

    For eksempel:

    #!/bin/bash
    # Tildeling af en værdi til en variabel
    navn=Jayesh
    alder=21
    echo $navn $age

    Forklaring:

    • Navnevariablen tildeles værdien Jayesh.
    • Aldersvariablen tildeles værdien 21.
    • echo bruges til at udskrive og `$name` `$age` bruges til at kalde værdien gemt i variablerne.

    435

    6) Skriv et shell-script, der tager en brugers navn som input og hilser på dem.

    Opret et scriptnavn `example.sh`.

    #!/bin/bash
    # Spørg brugeren om deres navn
    echo Hvad er dit navn?
    læs navn
    # Hils brugeren
    echo Hej, $navn! Dejligt at møde dig.

    Forklaring:

    • #!/bin/bash: Dette er shebang-linjen. Det fortæller systemet at bruge Bash-fortolkeren til at udføre scriptet.
    • # Spørg brugeren om deres navn: Dette er en kommentar. Det giver kontekst om den kommende kode. Kommentarer ignoreres af tolken.
    • echo Hvad er dit navn?: Echo-kommandoen bruges til at vise teksten i dobbelte anførselstegn på terminalen.
    • read name: Read-kommandoen venter på, at brugeren indtaster tekst og gemmer den i variabelnavnet.
    • echo Hej, $navn! Rart at møde dig.: Denne linje bruger ekko-kommandoen til at udskrive en hilsen, der inkluderer værdien af ​​navnevariablen, som blev indsamlet fra brugerens input.

    436

    7) Hvordan tilføjer du kommentarer til et shell-script?

    Kommentarer i shell-scripting bruges til at give forklaringer eller kontekst til koden. De ignoreres af tolken og er kun beregnet til mennesker, der læser manuskriptet. Du kan tilføje kommentarer ved at bruge #-symbolet.

    #!/bin/bash
    # Dette er en kommentar, der forklarer formålet med scriptet
    ekko gfg

    8) Opret et shell-script, der kontrollerer, om der findes en fil i den aktuelle mappe.

    Her er et script, der kontrollerer, om en fil med navnet example.txt findes i den aktuelle mappe:

    #!/bin/bash
    file=example.txt
    # Tjek om filen findes
    if [ -e $fil ]; derefter
    echo Filen findes: $file
    andet
    echo Filen blev ikke fundet: $fil
    være

    Forklaring:

    1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
    2. file=example.txt: Denne linje definerer variabelfilen og tildeler værdien example.txt til den. Du kan erstatte dette med navnet på den fil, du vil søge efter.
    3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Betingelsen [-e $file] kontrollerer, om filen, der er angivet af værdien af ​​filvariablen, eksisterer. Flaget -e bruges til at kontrollere, om filen eksisterer.
    4. echo File exists: $file: Hvis betingelsen er sand (dvs. filen eksisterer), udskriver denne linje en meddelelse, der angiver, at filen eksisterer, sammen med filens navn.
    5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), udfører scriptet koden under else-grenen.
    6. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der angiver, at den angivne fil ikke blev fundet, sammen med filens navn.
    7. fi: Denne linje markerer slutningen af ​​if-sætningen.
    Finder fil

    Finder fil

    9) Hvad er forskellen mellem enkelte anførselstegn (') og dobbelte anførselstegn () i shell-scripting?

    Enkelte anførselstegn (') og dobbelte anførselstegn () bruges til at omslutte strenge i shell-scripting, men de har forskellig adfærd:

    • Enkelte citater: Alt mellem enkelte citater behandles som en bogstavelig streng. Variabelnavne og de fleste specialtegn udvides ikke.
    • Dobbelte anførselstegn: Variabler og visse specialtegn inden for dobbelte anførselstegn udvides. Indholdet er underlagt variabel substitution og kommandosubstitution.

    #!/bin/bash

    abcd=Hej
    echo '$abcd' # Output: $abcd
    echo $abcd # Output: Hej

    10) Hvordan kan du bruge kommandolinjeargumenter i et shell-script?

    Kommandolinjeargumenter er værdier, der leveres til et script, når det udføres. De kan tilgås i scriptet ved hjælp af specielle variabler som $1, $2 osv., hvor $1 repræsenterer det første argument, $2 repræsenterer det andet argument, og så videre.

    For eksempel: Hvis vores scriptnavn i `eksempel.sh`

    #!/bin/bash

    echo Script navn: $0
    echo Første argument: $1
    echo Andet argument: $2

    Hvis vi kører scriptet med `.example.sh hello_1 hello_2`, vil det udlæse:

    cli argumenter

    cli argumenter

    11) Hvordan bruger du for-løkken til at gentage en liste med værdier?

    Opret et scriptnavn `example.sh`.

    #!/bin/bash

    frugter = (æble banan kirsebær daddel)
    for frugt i ${fruits[@]}; gør
    echo Nuværende frugt: $fruit
    Færdig

    Forklaring:

    `fruits=`-linjen opretter et array med navnet frugter med fire elementer: æble, banan, kirsebær og daddel.

    • for frugt i ${fruits[@]}; do: Denne linje starter en for-løkke. Her er hvad hver del betyder:
    • for frugt: Dette erklærer en loop-variabel kaldet frugt. I hver iteration af løkken vil frugt holde værdien af ​​det aktuelle element fra frugtarrayet.
    • ${fruits[@]}: Dette er en matrixudvidelse, der tager alle elementerne fra frugtarrayet. ${…}-syntaksen sikrer, at hvert element behandles som et separat element.
    • do: Dette nøgleord markerer begyndelsen af ​​løkketeksten.
    • echo Current fruit: $fruit: Inde i løkken bruger denne linje echo-kommandoen til at vise den aktuelle værdi af løkkevariablen frugt. Den udskriver en besked som Current fruit: apple for hver frugt i arrayet.
    • done: Dette nøgleord markerer slutningen af ​​løkkens krop. Det fortæller scriptet, at løkken er afsluttet.
    for sløjfe

    for sløjfe

    12) Skriv et shell-script, der beregner summen af ​​heltal fra 1 til N ved hjælp af en loop.

    Opret et scriptnavn `example.sh`.

    #!/bin/bash

    echo Indtast et tal (N):
    læs N
    sum=0
    for ((i=1; i<=$N; i++)); gør
    sum=$((sum + i))
    Færdig
    echo Summen af ​​heltal fra 1 til $N er: $sum

    Forklaring:
    Scriptet starter med at bede dig om at indtaste et tal (N) ved hjælp af read. Dette tal bestemmer, hvor mange gange løkken kører.

    1. Variablen sum initialiseres til 0. Denne variabel vil holde styr på summen af ​​heltal.
    2. For-løkken begynder med for (( i=1; i<=$N; i++ )). Denne sløjfestruktur bruges til at gentage et sæt handlinger et vist antal gange, i dette tilfælde fra 1 til værdien af ​​N.
    3. Inde i løkken sker disse ting:
      • i=1 sætter loop-variablen i til 1 i begyndelsen af ​​hver iteration.
      • Sløjfebetingelsen i<=$N kontrollerer, om i stadig er mindre end eller lig med det givne tal N.
      • Hvis betingelsen er sand, udføres loop body.
      • sum=$((sum + i)) beregner den nye værdi af sum ved at tilføje den aktuelle værdi af i. Dette summerer hele tallene fra 1 til den aktuelle i-værdi.
    4. Efter hver iteration øger i++ værdien af ​​i med 1.
    5. Sløjfen fortsætter med at køre, indtil betingelsen i<=$N bliver falsk (når i bliver større end N).
    6. Når løkken er færdig, viser scriptet summen af ​​heltal fra 1 til det indtastede tal N.

    439

    13) Opret et script, der søger efter et bestemt ord i en fil og tæller dets forekomster.

    Opret et scriptnavn `word_count.sh`

    #!/bin/bash

    echo Indtast ordet for at søge efter:
    læs target_word
    echo Indtast filnavnet:
    læs filnavn
    count=$(grep -o -w $mål_ord $filnavn | wc -l)
    echo Ordet '$target_word' vises $tæller gange i '$filnavn'.

    Forklaring:

    • echo Indtast ordet, der skal søges efter:: Denne linje viser en meddelelse, der beder brugeren om at indtaste et ord, de vil søge efter i en fil.
    • read target_word: Denne linje læser input fra brugeren og gemmer det i en variabel ved navn target_word.
    • echo Indtast filnavnet:: Denne linje viser en meddelelse, der beder brugeren om at indtaste navnet på den fil, de vil søge i.
    • læs filnavn: Denne linje læser input fra brugeren og gemmer det i en variabel med navnet filnavn.
    • count=$(grep -o -w $mål_ord $filnavn | wc -l): Denne linje udfører scriptets hovedarbejde. Lad os opdele det yderligere:
      • grep -o -w $target_word $filnavn: Denne del af kommandoen søger efter forekomster af target_word i det angivne filnavn. Valgmulighederne -o og -w sikrer, at kun hele ordmatches tælles.
      • |: Dette er et rør, som tager outputtet fra den forrige kommando og sender det som input til den næste kommando.
      • wc -l: Denne del af kommandoen bruger wc-kommandoen til at tælle antallet af linjer i inputtet. Valgmuligheden -l tæller specifikt linjerne.
      • Hele kommandoen beregner antallet af forekomster af target_word i filen og tildeler denne optælling til variablen antal

    441

    14) Forklar forskellene mellem standard output (stdout) og standardfejl (stderr).

    Hovedforskellen mellem standardoutput (stdout) og standardfejl (stderr) er som følger:

    • Standard output (stdout): Dette er standardoutputstrømmen, hvor en kommandos almindelige output går. Det vises som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af>.
    • Standardfejl (stderr): Dette er outputstrømmen for fejlmeddelelser og advarsler. Det vises også som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af 2>.

    15) Forklar begrebet betingede udsagn i shell scripting.

    Betingede udsagn i shell-scripting give os mulighed for at træffe beslutninger og kontrollere flowet af vores script baseret på visse betingelser. De gør det muligt for vores script at udføre forskellige sæt kommandoer afhængigt af, om en bestemt betingelse er sand eller falsk. De primære betingede sætninger i shell-scripting er if-sætningen, elif-sætningen (valgfri) og else-sætningen (valgfri).

    Her er den grundlæggende struktur af en betinget erklæring i shell-scripting:

    if [betingelse]; derefter
    # Kommandoer til at udføre, hvis betingelsen er sand
    elif [en anden_tilstand]; derefter
    # Kommandoer til at udføre, hvis another_condition er sand (valgfrit)
    andet
    # Kommandoer til at udføre, hvis ingen af ​​betingelserne er sande (valgfrit)
    være

    Forklaring:

    • [ condition ] = Kommando, der evaluerer betingelsen og returnerer en sand (0) eller falsk (ikke-nul) udgangsstatus.
    • then = Det er et nøgleord, der angiver, at kommandoerne efter det vil blive udført, hvis betingelsen evalueres til sand.
    • elif = (forkortelse for else if) Det er et afsnit, der giver os mulighed for at angive yderligere betingelser for at kontrollere.
    • else = det er en sektion, der indeholder kommandoer, der vil blive udført, hvis ingen af ​​betingelserne er sande.
    • fi = Det er et nøgleord, der markerer slutningen af ​​den betingede blok.

    16) Hvordan læser du linjer fra en fil i et shell-script?

    Til læse linjer fra en fil i et shell-script, kan vi bruge forskellige metoder, men en almindelig fremgangsmåde er at bruge en while-løkke i kombination med read-kommandoen. Sådan kan vi gøre det:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Tjek om filen findes
    if [ -e $fil ]; derefter
    mens IFS= læser -r linje; gør
    echo Linje læst: $line
    # Tilføj din behandlingslogik her
    færdig <$fil
    andet
    echo Filen blev ikke fundet: $fil
    være

    Forklaring:

    1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
    2. file=/home/jayeshkumar/jayesh.txt: Denne linje definerer variabelfilen og tildeler den fulde sti til filen jayesh.txt i mappen /home/jayeshkumar. Skift denne sti, så den matcher den faktiske sti til den fil, du vil læse.
    3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Den kontrollerer, om filen angivet af variablen $file eksisterer. Flaget -e kontrollerer for fileksistens.
    4. mens IFS= læser -r linje; do: Denne linje starter en while-løkke, der læser linjer fra filen.
      • IFS=: IFS (Internal Field Separator) er sat til en tom værdi for at bevare førende og efterfølgende mellemrum.
      • read -r line: Dette læser den aktuelle linje fra filen og gemmer den i den variable linje.
    5. echo Line read: $line: Denne linje udskriver indholdet af den linje, der blev læst fra filen. Variablen $line indeholder den aktuelle linjes indhold.
    6. # Tilføj din behandlingslogik her: Dette er en pladsholderkommentar, hvor du kan tilføje din egen logik til at behandle hver linje. For eksempel kan du analysere linjen, udtrække information eller udføre specifikke handlinger baseret på indholdet.
    7. done <$file: Dette markerer slutningen af ​​while-løkken. < $filen omdirigerer indholdet af filen, der skal læses af løkken.
    8. else: Hvis filen ikke eksisterer (betingelsen i if-sætningen er falsk), udfører scriptet koden under else-grenen.
    9. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der indikerer, at den angivne fil ikke blev fundet.
    10. fi: Denne linje markerer slutningen af ​​if-sætningen.
    læse fil

    læse fil

    Her brugte vi ` pwd ` kommando for at få stien til den aktuelle mappe.

    17) Skriv en funktion i et shell-script, der beregner fakultetet af et givet tal.

    Her er manuskriptetudregn faktorenaf et givet tal.

    #!/bin/bash
    # Definer en funktion til at beregne factorial
    beregne_faktor() {
    num=$1
    fakta=1
    for ((i=1; i<=tal; i++)); gør
    fakta=$((faktum * i))
    Færdig
    ekko $fakta
    }
    # Bed brugeren om at indtaste et nummer
    echo Indtast et tal:
    læs input_num
    # Kald calculate_fatorial-funktionen med det indtastede nummer
    factorial_result=$(calculate_fatorial $input_num)
    # Vis det faktorielle resultat
    echo Factorial af $input_num er: $factorial_result

    Forklaring:

    1. Scriptet starter med shebang-linjen #!/bin/bash for at angive tolken.
    2. calculate_fatorial() er defineret som en funktion. Det kræver et argument, num, som er det tal, som faktoren skal beregnes for.
    3. Inde i funktionen initialiseres fakta til 1. Denne variabel vil gemme det faktorielle resultat.
    4. For-løkken itererer fra 1 til det givne tal (num). I hver iteration multipliceres den aktuelle værdi af fakta med loop-indekset i.
    5. Når løkken er fuldført, indeholder faktavariablen den beregnede faktor.
    6. Scriptet beder brugeren om at indtaste et tal ved hjælp af read.
    7. calculate_fatorial-funktionen kaldes med det brugerangivne tal, og resultatet gemmes i variablen factorial_result.
    8. Til sidst viser scriptet det beregnede faktorielle resultat.
    Faktoriel

    Faktoriel

    18) Hvordan håndterer du signaler som Ctrl+C i et shell-script?

    I et shell-script kan du håndtere signaler som Ctrl+C (også kendt som SIGINT) ved at bruge trap-kommandoen. Ctrl+C genererer et SIGINT-signal, når brugeren trykker på det for at afbryde det kørende script eller program. Ved at bruge trap-kommandoen kan du specificere handlinger, der skal udføres, når et bestemt signal modtages. Sådan håndterer du signaler som Ctrl+C i et shell-script:

    #!/bin/bash
    Ryd op() {
    echo Script afbrudt. Udfører oprydning...
    # Tilføj dine oprydningshandlinger her
    udgang 1
    }
    # Opsæt en fælde for at kalde oprydningsfunktionen, når Ctrl+C (SIGINT) modtages
    fældeoprydning SIGINT
    # Resten af ​​dit script
    ekko kører...
    sove 10
    ekko Færdig.

    Håndtering af signaler er vigtig for at gøre scripts robuste og sikre, at de håndterer uventede afbrydelser elegant. Du kan tilpasse oprydningsfunktionen, så den matcher dine specifikke behov, såsom at lukke filer, stoppe processer eller logge oplysninger, før scriptet afsluttes.

    Forklaring:

    1. #!/bin/bash: Denne shebang-linje specificerer den fortolker, der skal bruges til at køre scriptet.
    2. cleanup() { … }: Dette definerer en funktion ved navn cleanup. Inde i denne funktion kan du inkludere alle handlinger, der skal udføres, når scriptet afbrydes, såsom at lukke filer, frigive ressourcer eller udføre andre oprydningsopgaver.
    3. trap cleanup SIGINT: Trappe-kommandoen bruges til at opsætte en signalhåndtering. I dette tilfælde specificerer den, at når SIGINT-signalet (Ctrl+C) modtages, skal oprydningsfunktionen udføres.
    4. echo Running…, sleep 10, echo Finished.: Dette er blot eksempelkommandoer til at simulere udførelsen af ​​et script.

    446

    19) Opret et script, der tjekker for og fjerner duplikerede linjer i en tekstfil.

    Her er vores linux-script, hvor vi fjerner duplikerede linjer fra en tekstfil.

    #!/bin/bash
    input_file=input.txt
    output_file=output.txt
    sorter $input_fil | uniq> $output_fil
    echo Duplikerede linjer blev fjernet.

    Forklaring:

    1. Scriptet starter med en shebang (#!/bin/bash), som angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    2. Variablen input_file er sat til navnet på inputfilen, der indeholder duplikerede linjer (ændre dette til dit faktiske inputfilnavn).
    3. Variablen output_file er sat til navnet på outputfilen, hvor duplikaterne vil blive fjernet (ændre dette til dit ønskede outputfilnavn).
    4. Scriptet bruger sorteringskommandoen til at sortere linjerne i inputfilen. Sortering af linjerne sikrer, at duplikerede linjer grupperes sammen.
    5. De sorterede linjer sendes derefter gennem uniq-kommandoen, som fjerner på hinanden følgende duplikerede linjer. Outputtet fra denne proces omdirigeres til outputfilen.
    6. Når dubletterne er fjernet, udskriver scriptet en succesmeddelelse.
    fjernelse af dobbelt linje

    duplikatlinjefjernelse

    Her bruger vi ` kat ` for at vise teksten inde i tekstfilen.

    20) Skriv et script, der genererer en sikker tilfældig adgangskode.

    Her er vores script til at generere en sikker tilfældig adgangskode.

    #!/bin/bash
    # Funktion til at generere en tilfældig adgangskode
    generere_adgangskode() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Kald funktionen og gem den genererede adgangskode
    password=$(generer_adgangskode)
    echo Genereret adgangskode: $password

    Bemærk: Brugeren kan derfor ændre længden af ​​adgangskoden ved at erstatte tallet '12'.

    Forklaring:

    1. Scriptet starter med en shebang (#!/bin/bash), hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
    2. Generer_password-funktionen er defineret til at generere en tilfældig adgangskode. Sådan fungerer det:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 opdeler de filtrerede tilfældige data i linjer med bredde på 12 tegn hver.
      • head -n 1 vælger den første linje, hvilket i praksis giver os en tilfældig sekvens af tegn med længden 12.
    3. Adgangskodevariablen tildeles resultatet af at kalde funktionen gener_password.
    4. Til sidst vises den genererede adgangskode ved hjælp af ekko.

    448

    21) Skriv et shell-script, der beregner den samlede størrelse af alle filer i en mappe.

    Her er et shell-script til at beregne den samlede størrelse af alle filer i en mappe.

    #!/bin/bash
    mappe=/sti/til/din/mappe
    total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
    echo Samlet størrelse af filer i $mappe: $total_size

    Forklaring:

    1. Scriptet starter med #!/bin/bash shebang, hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
    2. Bibliotekvariablen er sat til stien til den mappe, som du vil beregne den samlede filstørrelse for. Erstat /sti/til/din/mappe med den faktiske sti.
    3. Kommandoen du bruges til at estimere brugen af ​​filplads. De anvendte muligheder er:
      • -c: Fremstil en totalsum.
      • -s: Vis kun den samlede størrelse af den angivne mappe.
      • -h: Udskriftsstørrelser i et format, der kan læses af mennesker (f.eks. KB, MB, GB).
    4. Outputtet fra du sendes til grep total for at bortfiltrere linjen, der indeholder den samlede størrelse.
    5. awk '{print $1}' bruges til at udtrække det første felt (samlet størrelse) fra linjen.
    6. Den beregnede samlede størrelse gemmes i variablen total_size.
    7. Endelig viser scriptet den samlede størrelse ved hjælp af ekko.
    Samlet størrelse af filer

    Samlet størrelse af filer

    Her brugte vi ` pwd ` kommando for at se den aktuelle mappesti.

    22) Forklar forskellen mellem if- og elif-sætninger i shell-scripting.

    Feature `hvis` Staiftement `elif`-erklæring
    Formål Forklar forskellen mellem if- og elif-sætninger i shell-scripting. Giver alternative betingelser for at kontrollere, hvornår den oprindelige, hvis betingelsen er falsk.
    brug Brugt til den oprindelige tilstand. Brugt efter den indledende if-tilstand for at kontrollere yderligere forhold.
    antal blokke Kan kun have én hvis blok. Kan have flere elif-blokke, men kun én anden blok (valgfrit).
    Udførelse Udfører den kodeblok, der er knyttet til if-sætningen, hvis betingelsen er sand. Hvis betingelsen er falsk, udføres den anden blok (hvis den findes) (valgfrit). Kontrollerer hver elif tilstand i rækkefølge. Hvis én elif-betingelse er sand, udføres den tilsvarende kodeblok, og scriptet afslutter hele den betingede blok. Hvis ingen af ​​elif-betingelserne er sande, udføres else-blokken (hvis den er til stede).
    Indlejrede strukturer Kan indlejres i andre if-, elif- eller else-blokke. Kan ikke indlejres i en anden elif-blok, men kan bruges i en if eller else-blok.

    Lad os forstå det med et eksempel.

    #!/bin/bash
    nummer=5
    if [$nummer -gt 10]; derefter
    echo $nummer er større end 10
    andet
    echo $nummer er ikke større end 10
    være
    ekko ---
    if [$nummer -gt 10]; derefter
    echo $nummer er større end 10
    elif [$nummer -eq 10]; derefter
    echo $nummer er lig med 10
    andet
    echo $nummer er mindre end 10
    være

    Forklaring:

    I dette eksempel kontrollerer den første if-blok, om tallet er større end 10. Hvis ikke, udskriver den en meddelelse, der angiver, at tallet ikke er større end 10. Den anden blok med elif-sætninger kontrollerer flere betingelser sekventielt, indtil en af ​​dem er sand. I dette tilfælde, da værdien af ​​nummer er 5, vil outputtet være:

    if_elif forskel

    if_elif forskel

    23) Hvordan bruger du en while-løkke til gentagne gange at udføre kommandoer?

    En while-løkke bruges i shell-scripting til gentagne gange at udføre et sæt kommandoer, så længe en specificeret betingelse er sand. Sløjfen fortsætter med at udføre kommandoerne, indtil betingelsen bliver falsk.

    Her er den grundlæggende syntaks for en while-løkke:

    mens [betingelse]; gør
    # Kommandoer, der skal udføres
    Færdig

    Forklaring:

    1. `While`-løkken starter med nøgleordet `while` efterfulgt af en betingelse omsluttet af firkantede parenteser `[ ]`.
    2. Sløjfens krop, som indeholder de kommandoer, der skal udføres, er omsluttet af nøgleordene 'do' og 'done'.
    3. Løkken tjekker først tilstanden. Hvis betingelsen er sand, udføres kommandoerne i loop-legemet. Efter at loop-kroppen er udført, kontrolleres betingelsen igen, og processen gentages, indtil betingelsen bliver falsk.

    Eksempel: Hvis vi ønsker at udskrive tal fra 1 til 5

    #!/bin/bash
    tæller=1
    while [ $tæller -le 5 ]; gør
    ekkonummer: $counter
    tæller=$((tæller + 1))
    Færdig

    Forklaring:

    • Tællervariablen er sat til 1.
    • While-løkken kontrollerer, om værdien af ​​tælleren er mindre end eller lig med 5. Så længe denne betingelse er sand, fortsætter løkken med at udføre.
    • Inde i løkken udskrives den aktuelle værdi af tælleren ved hjælp af ekko.
    • Tælleren øges med 1 ved hjælp af udtrykket $((tæller + 1)).
    mens loop

    mens loop

    24) Opret et shell-script, der finder og viser alle tomme filer i en mappe.

    Shell-script, som du kan bruge til at finde og liste alle tomme filer i en mappe ved hjælp af kommandoerne `find` og `stat`:

    #!/bin/bash
    mappe=$1″
    if [-z $mappe]; derefter
    ekkobrug: $0
    udgang 1
    være

    hvis [! -d $katalog ]; derefter
    echo Error: '$directory' er ikke en gyldig mappe.
    udgang 1
    være
    echo tomme filer i $directory:
    find $katalog -type f -tom

    Forklaring:

    1. ` #!/bin/bash `: Dette kaldes en shebang, og det fortæller operativsystemet at bruge Bash-skallen til at fortolke og udføre scriptet.
    2. ` mappe=$1″ `: Denne linje tildeler det første kommandolinjeargument (angivet med $1) til variablen ` vejviser `.
    3. ` if [-z $mappe]; derefter `: Denne linje starter en if-sætning, der kontrollerer om ` vejviser ` variabel er tom (-z tester for en tom streng).
    4. ` ekkobrug: $0 `: Hvis mappen er tom, udskriver denne linje en brugsmeddelelse, hvor ` $0 ` repræsenterer scriptets navn.
    5. ` udgang 1 `: Denne linje afslutter scriptet med en exitkode på ` 1 `, hvilket indikerer en fejl.
    6. ` være `: Denne linje markerer slutningen af ​​` hvis ` erklæring.
    7. ` hvis [! -d $katalog ]; derefter `: Dette starter en anden if-sætning for at kontrollere, om den angivne mappe eksisterer (` -d ` tester for en mappe).
    8. ` echo Error: '$directory' er ikke en gyldig mappe. `: Hvis den angivne mappe ikke eksisterer, udskriver denne linje en fejlmeddelelse.
    9. ` udgang 1 `: Afslutter scriptet med en exit-kode på ` 1 `.
    10. ` være `: Markerer slutningen af ​​den anden ` hvis` udmelding.
    11. ` echo tomme filer i $directory: `: Hvis alt er gyldigt indtil videre, udskriver denne linje en meddelelse, der angiver, at scriptet vil vise tomme filer i den angivne mappe.
    12. ` find $katalog -type f -tom `: Denne linje bruger ` Find ` kommando til at søge efter tomme filer (` -tom `) af typen almindelige filer (` -type f `) i den angivne mappe. Det viser derefter disse tomme filer.
    Finder tomme filer

    Finder tomme filer

    Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det nuværende bibliotek home/jayeshkumar/

    25) Hvad er formålet med read-kommandoen i shell-scripting?

    Read-kommandoen i shell-scripting lader scriptet bede dig om information. Det er ligesom når en computer stiller dig et spørgsmål og venter på dit svar. Dette er nyttigt til scripts, der kræver, at du skriver noget, eller når scriptet skal arbejde med information fra filer. Read-kommandoen hjælper scriptet med at stoppe og vente på, hvad du skriver, og så kan det bruge disse oplysninger til at gøre flere ting i scriptet.

    Syntaks for læsekommando:

    read variable_name>

    Eksempel : Hvis vi ønsker at tage navn som input fra brugeren for at udskrive det.

    #!/bin/bash
    echo Indtast venligst dit navn:
    læs navn
    echo Hej, $navn!

    453

    læs nam

    Sammenfattende bruges read-kommandoen til at fange brugerinput eller data fra filer i shell-scripts, hvilket gør scripts mere interaktive og alsidige.

    26) Skriv et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

    Her er et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

    #!/bin/bash
    mappe=$1″
    if [-z $mappe]; derefter
    ekkobrug: $0
    udgang 1
    være

    hvis [! -d $katalog ]; derefter

    echo Error: '$directory' er ikke en gyldig mappe.
    udgang 1
    være

    cd $katalog || udgang 1

    for fil i *; gør
    if [-f $fil ]; derefter
    newname=$(ekko $fil | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    være
    Færdig

    Forklaring:

    1. #!/bin/bash : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    2. mappe=$1″ : Denne linje tildeler det første kommandolinjeargument til den variable mappe.
    3. if [-z $mappe]; derefter : Denne linje kontrollerer, om biblioteksvariablen er tom (intet argument angivet ved kørsel af scriptet).
    4. ekkobrug: $0 : Hvis mappen er tom, udskriver denne linje en brugsmeddelelse med scriptets navn ($0).
    5. udgang 1 : Denne linje afslutter scriptet med en exitkode på 1, hvilket indikerer, at der er opstået en fejl.
    6. f i: Dette markerer slutningen af ​​den første if-sætning.
    7. hvis [! -d $katalog ]; derefter : Denne linje kontrollerer, om den angivne mappe ikke eksisterer (-d tester for en mappe).
    8. echo Error: '$directory' er ikke en gyldig mappe. : Hvis den angivne mappe ikke findes, udskriver denne linje en fejlmeddelelse.
    9. udgang 1 : Afslutter scriptet med en exitkode på 1.
    10. være : Markerer slutningen af ​​den anden if-sætning.
    11. cd $katalog || udgang 1 : Ændrer den aktuelle arbejdsmappe til den angivne mappe. Hvis mappeændringen mislykkes (f.eks. ikke-eksisterende mappe), afsluttes scriptet med en fejlkode.
    12. for fil i *; gør: jeg for fil i *; gør: starter en loop, der itererer over alle elementer i den aktuelle mappe (* matcher alle filnavne).
    13. if [-f $fil ]; derefter : Kontrollerer, om det aktuelle loop-iterationselement er en almindelig fil (-f tester for en almindelig fil).
    14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer det aktuelle filnavn ($file) til små bogstaver ved hjælp af tr-kommandoen og gemmer resultatet i newname-variablen.
    15. [ $file != $newname ] && mv $file $newname : Sammenligner det originale filnavn med det nye lille filnavn. Hvis de er forskellige, omdøber den filen ved hjælp af mv-kommandoen.
    16. være : Markerer slutningen af ​​den indre if-sætning.
    17. Færdig : Markerer slutningen af ​​løkken.

    454

    Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det aktuelle bibliotek home/jayeshkumar/test

    27) Hvordan kan du bruge aritmetiske operationer i et shell-script?

    Aritmetiske operationer kan udføres i et shell-script ved hjælp af forskellige indbyggede metoder. Skallen giver mekanismer til simple aritmetiske beregninger ved hjælp af aritmetisk udvidelse som:

    1. Aritmetisk udvidelse ($((…)))
    2. Bruger kommandoen expr
    3. Brug let Command

    Her er vores Shell-script, der forklarer alle tre metoder til aritmetiske operationer.

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

    #Aritmetisk udvidelse ($((…)))

    resultat=$((tal1 + tal2))
    echo Sum: $resultat

    #Bruger kommandoen expr

    sum=$(udg. $num1 + $num2)
    echo Sum: $sum

    #Brug let Command

    lad sum = num1 + num2
    echo Sum: $sum

    Forklaring:

    1. `#!/bin/bash` : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    2. `tal1=10` og ` num2=5` : Disse linjer tildeler værdierne 10 og 5 til variablerne ` nummer1 ` og ` nummer 2 `, henholdsvis.
    3. `#Aritmetisk udvidelse ($((...)))` : Dette er en kommentar, der angiver starten på afsnittet, der demonstrerer aritmetisk udvidelse.
    4. `resultat=$((tal1 + tal2))` : Denne linje bruger aritmetisk ekspansion til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` resultat ` variabel.
    5. `ekko Sum: $resultat` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` resultat ` variabel.
    6. `#Using expr Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` udtr ` kommando til aritmetiske operationer.
    7. `sum=$(udtr. $num1 + $num2)` : Denne linje bruger ` udtr ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` sum ` variabel. Bemærk, at ` udtr ` kommando kræver mellemrum omkring operatørerne.
    8. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
    9. `#Brug let Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` lade ` kommando til aritmetiske operationer.
    10. `lad sum = num1 + num2″` : Denne linje bruger ` lade ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og tildeler resultatet til ` sum ` variabel. Den ` lade ` kommandoen kræver ikke mellemrum omkring operatørerne.
    11. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
    aritmetik

    aritmetik

    28) Opret et script, der kontrollerer, om en netværksvært er tilgængelig.

    Her er et simpelt shell-script, der bruger ping-kommandoen til at kontrollere, om en netværksvært er tilgængelig:

    #!/bin/bash
    vært=$1″
    if [ -z $host ]; derefter
    ekkobrug: $0
    udgang 1
    være
    ping -c 4 $host

    hvis [$? -ækv 0]; derefter
    echo $host er tilgængelig.
    andet
    echo $host er ikke tilgængelig.
    være

    Forklaring:

    1. Den tager et værtsnavn eller IP-adresse som argument og kontrollerer, om argumentet er angivet.
    2. Hvis der ikke er angivet noget argument, viser det en brugsmeddelelse og afsluttes.
    3. Den bruger ping-kommandoen med -c 4-indstillingen til at sende fire ICMP-ekko-anmodninger til den angivne vært.
    4. Efter at ping-kommandoen er kørt, kontrollerer den exit-statussen ($?). Hvis exit-statussen er 0, betyder det, at værten er tilgængelig, og scriptet udskriver en succesmeddelelse. Ellers udskriver den en fejlmeddelelse.

    456

    Bemærk : Vi skal angive et værtsnavn som argument, når vi kører scriptet. Her har vi brugt google.com

    29) Skriv et Shell-script for at finde det største element i et array:

    Her er et shell-script til at finde det bedste element i et array.

    #!/bin/bash
    # Erklære et array
    matrix=(3 56 24 89 67)

    # Initialiser en variabel for at gemme den maksimale værdi, startende med det første element

    max=${array[0]}

    # Iterér gennem arrayet

    for num i ${array[@]}; gør

    # Sammenlign hvert element med det aktuelle maksimum

    if ((antal> maks)); derefter
    max=$antal
    være
    Færdig

    # Udskriv den maksimale værdi

    echo Det maksimale element i arrayet er: $max

    Forklaring:

    1. ` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    2. ` matrix=(3 56 24 89 67) `: Arrayet erklæres og initialiseres med værdier.
    3. ` max=${array[0]} `: `max` initialiseres med det første element i arrayet.
    4. ` for num i ${array[@]}; gør `: En `for`-løkke bruges til at iterere gennem elementerne i arrayet.
    5. ` if ((antal> maks)); derefter `: En `if`-sætning kontrollerer, om det aktuelle element `num` er større end det aktuelle maksimum `max`.
    6. ` max=$num`: Hvis`num ` er større end `max`, er `max` opdateret med værdien num.
    7. ` Færdig `: `For`-løkken er lukket.
    8. ` echo Det maksimale element i arrayet er: $max `: Endelig udskriver scriptet den maksimale værdi fundet i arrayet.
    461

    største antal

    30) Skriv et script til at beregne summen af ​​elementer i et array.

    #!/bin/bash

    # Erklære et array

    matrix=(1 65 22 19 94)

    # Initialiser en variabel for at gemme summen

    sum=0

    # Iterér gennem arrayet og føj hvert element til summen

    for num i ${array[@]}; gør
    am=$((am + am))
    Færdig

    # Udskriv summen

    echo Summen af ​​elementer i arrayet er: $sum

    Forklaring:

    ` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.

    ` matrix=(1 65 22 19 94) `: Arrayet erklæres og initialiseres med værdier.

    ` sum=0 `:` sum ` initialiseres til nul for at holde summen af ​​elementer.

    ` for num i ${array[@]}; gør `: A ` til ` loop bruges til at iterere gennem elementerne i arrayet.

    ` am=$((am + am)) `: Inde i løkken, hvert element ` på en ` tilføjes til ` sum ` variabel.

    ` Færdig `: Den ` til ` sløjfen er lukket.

    `echo Summen af ​​elementer i arrayet er: $sum`: Til sidst udskriver scriptet summen af ​​alle elementer i arrayet.

    462

    Summen af ​​elementer

    Få mere at vide om Shell-scripts

    Konklusion

    Vi ved alle nørder, at shell-script er meget nyttigt for at øge arbejdsproduktiviteten såvel som det sparer tid. Så i denne artikel har vi dækket 30 meget nyttige og mest besnærende shell-scripts eksempler . Vi håber, at denne komplette vejledning om shell-scripting-eksempel hjælper dig med at forstå alt om shell-scripts.



    : Hvis mappen er tom, udskriver denne linje en brugsmeddelelse med scriptets navn (

    For alle Linux-distributioner er shell-scriptet som en tryllestav, der automatiserer processen, sparer brugere tid og øger produktiviteten. Denne skal scripting tutorial vil introducere dig til de 25 plus skal scripting eksempler.

    Men før vi går videre til emnet shell scripting eksempler, lad os forstå shell-script og de faktiske anvendelsestilfælde af shell-scripting.

    Hvad er Shell Script?

    Nå, skallen er en CLI ( kommandolinjefortolker ), som kører i et tekstvindue, hvor brugere kan administrere og udføre shell-kommandoer. På den anden side, processen med at skrive et sæt kommandoer, der skal udføres på et Linux-system. En fil, der indeholder sådanne instruktioner, kaldes et bash-script.

    Brug af Shell Scripts

    Nedenfor er nogle almindelige anvendelser af Shell Script:

    • Opgaveautomatisering – Det kan bruges til at automatisere gentagne opgaver som almindelige sikkerhedskopier og softwareinstallationsopgaver.
    • Tilpasning – Man kan bruge shell-scripts til at designe sit kommandolinjemiljø og nemt udføre sin opgave efter behov.
    • Filhåndtering – Shell-scripts kan også bruges til at administrere og manipulere filer og mapper, såsom flytning, kopiering, omdøbning eller sletning af filer.

    Shell Script eksempler i Linux

    1) Hvad indikerer shebang (#!) i begyndelsen af ​​et shell-script?

    Det shebang (#!) i begyndelsen af ​​et script angiver den fortolker, der skal bruges til at udføre scriptet. Det fortæller systemet, hvilken shell eller fortolker der skal fortolke scriptets kommandoer.

    For eksempel: Antag, at vi har et script ved navn myscript.sh skrevet i Bash-skallen:

    shebang

    shebang

    I dette eksempel:

    • #!/bin/bash i begyndelsen af ​​scriptet indikerer, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    • Ekkokommandoerne bruges til at udskrive beskeder til terminalen.

    2) Hvordan kører du et shell-script fra kommandolinjen?

    For at køre et shell-script fra kommandolinjen skal vi følge disse trin:

    • Sørg for, at scriptfilen har eksekverbare tilladelser ved hjælp af chmod kommando :
    chmod +x myscript.sh>
    • Udfør scriptet med dets filnavn:
    ./myscript.sh>

    Her skal du udskifte myscrtipt.sh med dit manuskriptnavn.

    3) Skriv et shell-script, der udskriver techcodeview.com til terminalen.

    Opret et scriptnavn `myscript.sh` (vi bruger ` fordi ` editor, du kan vælge enhver editor)

    vim myscript.sh>

    #!/bin/bash
    # Dette script udskriver techcodeview.com til terminalen
    echo techcodeview.com

    Print navn

    Print navn

    Vi gør vores script eksekverbart ved at bruge `chmod +x`, kør derefter med `./myscipt.sh` og få vores ønskede output techcodeview.com.

    4) Forklar formålet med echo-kommandoen i shell-scripting.

    Det ekko kommando bruges til at vise tekst eller variabler på terminalen. Det bruges almindeligvis til udskrivning af meddelelser, variable værdier og generering af programoutput.

    434

    ekko kommando

    I dette eksempel har vi eksekveret `echo` på terminalen direkte, da det fungerer på samme måde inde i shell-scriptet.

    5) Hvordan kan du tildele en værdi til en variabel i et shell-script?

    Variabler tildeles værdier ved hjælp af tildelingsoperatoren =.

    For eksempel:

    #!/bin/bash
    # Tildeling af en værdi til en variabel
    navn=Jayesh
    alder=21
    echo $navn $age

    Forklaring:

    • Navnevariablen tildeles værdien Jayesh.
    • Aldersvariablen tildeles værdien 21.
    • echo bruges til at udskrive og `$name` `$age` bruges til at kalde værdien gemt i variablerne.

    435

    6) Skriv et shell-script, der tager en brugers navn som input og hilser på dem.

    Opret et scriptnavn `example.sh`.

    #!/bin/bash
    # Spørg brugeren om deres navn
    echo Hvad er dit navn?
    læs navn
    # Hils brugeren
    echo Hej, $navn! Dejligt at møde dig.

    Forklaring:

    • #!/bin/bash: Dette er shebang-linjen. Det fortæller systemet at bruge Bash-fortolkeren til at udføre scriptet.
    • # Spørg brugeren om deres navn: Dette er en kommentar. Det giver kontekst om den kommende kode. Kommentarer ignoreres af tolken.
    • echo Hvad er dit navn?: Echo-kommandoen bruges til at vise teksten i dobbelte anførselstegn på terminalen.
    • read name: Read-kommandoen venter på, at brugeren indtaster tekst og gemmer den i variabelnavnet.
    • echo Hej, $navn! Rart at møde dig.: Denne linje bruger ekko-kommandoen til at udskrive en hilsen, der inkluderer værdien af ​​navnevariablen, som blev indsamlet fra brugerens input.

    436

    7) Hvordan tilføjer du kommentarer til et shell-script?

    Kommentarer i shell-scripting bruges til at give forklaringer eller kontekst til koden. De ignoreres af tolken og er kun beregnet til mennesker, der læser manuskriptet. Du kan tilføje kommentarer ved at bruge #-symbolet.

    #!/bin/bash
    # Dette er en kommentar, der forklarer formålet med scriptet
    ekko gfg

    8) Opret et shell-script, der kontrollerer, om der findes en fil i den aktuelle mappe.

    Her er et script, der kontrollerer, om en fil med navnet example.txt findes i den aktuelle mappe:

    #!/bin/bash
    file=example.txt
    # Tjek om filen findes
    if [ -e $fil ]; derefter
    echo Filen findes: $file
    andet
    echo Filen blev ikke fundet: $fil
    være

    Forklaring:

    1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
    2. file=example.txt: Denne linje definerer variabelfilen og tildeler værdien example.txt til den. Du kan erstatte dette med navnet på den fil, du vil søge efter.
    3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Betingelsen [-e $file] kontrollerer, om filen, der er angivet af værdien af ​​filvariablen, eksisterer. Flaget -e bruges til at kontrollere, om filen eksisterer.
    4. echo File exists: $file: Hvis betingelsen er sand (dvs. filen eksisterer), udskriver denne linje en meddelelse, der angiver, at filen eksisterer, sammen med filens navn.
    5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), udfører scriptet koden under else-grenen.
    6. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der angiver, at den angivne fil ikke blev fundet, sammen med filens navn.
    7. fi: Denne linje markerer slutningen af ​​if-sætningen.
    Finder fil

    Finder fil

    9) Hvad er forskellen mellem enkelte anførselstegn (') og dobbelte anførselstegn () i shell-scripting?

    Enkelte anførselstegn (') og dobbelte anførselstegn () bruges til at omslutte strenge i shell-scripting, men de har forskellig adfærd:

    • Enkelte citater: Alt mellem enkelte citater behandles som en bogstavelig streng. Variabelnavne og de fleste specialtegn udvides ikke.
    • Dobbelte anførselstegn: Variabler og visse specialtegn inden for dobbelte anførselstegn udvides. Indholdet er underlagt variabel substitution og kommandosubstitution.

    #!/bin/bash

    abcd=Hej
    echo '$abcd' # Output: $abcd
    echo $abcd # Output: Hej

    10) Hvordan kan du bruge kommandolinjeargumenter i et shell-script?

    Kommandolinjeargumenter er værdier, der leveres til et script, når det udføres. De kan tilgås i scriptet ved hjælp af specielle variabler som $1, $2 osv., hvor $1 repræsenterer det første argument, $2 repræsenterer det andet argument, og så videre.

    For eksempel: Hvis vores scriptnavn i `eksempel.sh`

    #!/bin/bash

    echo Script navn: $0
    echo Første argument: $1
    echo Andet argument: $2

    Hvis vi kører scriptet med `.example.sh hello_1 hello_2`, vil det udlæse:

    cli argumenter

    cli argumenter

    11) Hvordan bruger du for-løkken til at gentage en liste med værdier?

    Opret et scriptnavn `example.sh`.

    #!/bin/bash

    frugter = (æble banan kirsebær daddel)
    for frugt i ${fruits[@]}; gør
    echo Nuværende frugt: $fruit
    Færdig

    Forklaring:

    `fruits=`-linjen opretter et array med navnet frugter med fire elementer: æble, banan, kirsebær og daddel.

    • for frugt i ${fruits[@]}; do: Denne linje starter en for-løkke. Her er hvad hver del betyder:
    • for frugt: Dette erklærer en loop-variabel kaldet frugt. I hver iteration af løkken vil frugt holde værdien af ​​det aktuelle element fra frugtarrayet.
    • ${fruits[@]}: Dette er en matrixudvidelse, der tager alle elementerne fra frugtarrayet. ${…}-syntaksen sikrer, at hvert element behandles som et separat element.
    • do: Dette nøgleord markerer begyndelsen af ​​løkketeksten.
    • echo Current fruit: $fruit: Inde i løkken bruger denne linje echo-kommandoen til at vise den aktuelle værdi af løkkevariablen frugt. Den udskriver en besked som Current fruit: apple for hver frugt i arrayet.
    • done: Dette nøgleord markerer slutningen af ​​løkkens krop. Det fortæller scriptet, at løkken er afsluttet.
    for sløjfe

    for sløjfe

    12) Skriv et shell-script, der beregner summen af ​​heltal fra 1 til N ved hjælp af en loop.

    Opret et scriptnavn `example.sh`.

    #!/bin/bash

    echo Indtast et tal (N):
    læs N
    sum=0
    for ((i=1; i<=$N; i++)); gør
    sum=$((sum + i))
    Færdig
    echo Summen af ​​heltal fra 1 til $N er: $sum

    Forklaring:
    Scriptet starter med at bede dig om at indtaste et tal (N) ved hjælp af read. Dette tal bestemmer, hvor mange gange løkken kører.

    1. Variablen sum initialiseres til 0. Denne variabel vil holde styr på summen af ​​heltal.
    2. For-løkken begynder med for (( i=1; i<=$N; i++ )). Denne sløjfestruktur bruges til at gentage et sæt handlinger et vist antal gange, i dette tilfælde fra 1 til værdien af ​​N.
    3. Inde i løkken sker disse ting:
      • i=1 sætter loop-variablen i til 1 i begyndelsen af ​​hver iteration.
      • Sløjfebetingelsen i<=$N kontrollerer, om i stadig er mindre end eller lig med det givne tal N.
      • Hvis betingelsen er sand, udføres loop body.
      • sum=$((sum + i)) beregner den nye værdi af sum ved at tilføje den aktuelle værdi af i. Dette summerer hele tallene fra 1 til den aktuelle i-værdi.
    4. Efter hver iteration øger i++ værdien af ​​i med 1.
    5. Sløjfen fortsætter med at køre, indtil betingelsen i<=$N bliver falsk (når i bliver større end N).
    6. Når løkken er færdig, viser scriptet summen af ​​heltal fra 1 til det indtastede tal N.

    439

    13) Opret et script, der søger efter et bestemt ord i en fil og tæller dets forekomster.

    Opret et scriptnavn `word_count.sh`

    #!/bin/bash

    echo Indtast ordet for at søge efter:
    læs target_word
    echo Indtast filnavnet:
    læs filnavn
    count=$(grep -o -w $mål_ord $filnavn | wc -l)
    echo Ordet '$target_word' vises $tæller gange i '$filnavn'.

    Forklaring:

    • echo Indtast ordet, der skal søges efter:: Denne linje viser en meddelelse, der beder brugeren om at indtaste et ord, de vil søge efter i en fil.
    • read target_word: Denne linje læser input fra brugeren og gemmer det i en variabel ved navn target_word.
    • echo Indtast filnavnet:: Denne linje viser en meddelelse, der beder brugeren om at indtaste navnet på den fil, de vil søge i.
    • læs filnavn: Denne linje læser input fra brugeren og gemmer det i en variabel med navnet filnavn.
    • count=$(grep -o -w $mål_ord $filnavn | wc -l): Denne linje udfører scriptets hovedarbejde. Lad os opdele det yderligere:
      • grep -o -w $target_word $filnavn: Denne del af kommandoen søger efter forekomster af target_word i det angivne filnavn. Valgmulighederne -o og -w sikrer, at kun hele ordmatches tælles.
      • |: Dette er et rør, som tager outputtet fra den forrige kommando og sender det som input til den næste kommando.
      • wc -l: Denne del af kommandoen bruger wc-kommandoen til at tælle antallet af linjer i inputtet. Valgmuligheden -l tæller specifikt linjerne.
      • Hele kommandoen beregner antallet af forekomster af target_word i filen og tildeler denne optælling til variablen antal

    441

    14) Forklar forskellene mellem standard output (stdout) og standardfejl (stderr).

    Hovedforskellen mellem standardoutput (stdout) og standardfejl (stderr) er som følger:

    • Standard output (stdout): Dette er standardoutputstrømmen, hvor en kommandos almindelige output går. Det vises som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af>.
    • Standardfejl (stderr): Dette er outputstrømmen for fejlmeddelelser og advarsler. Det vises også som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af 2>.

    15) Forklar begrebet betingede udsagn i shell scripting.

    Betingede udsagn i shell-scripting give os mulighed for at træffe beslutninger og kontrollere flowet af vores script baseret på visse betingelser. De gør det muligt for vores script at udføre forskellige sæt kommandoer afhængigt af, om en bestemt betingelse er sand eller falsk. De primære betingede sætninger i shell-scripting er if-sætningen, elif-sætningen (valgfri) og else-sætningen (valgfri).

    Her er den grundlæggende struktur af en betinget erklæring i shell-scripting:

    if [betingelse]; derefter
    # Kommandoer til at udføre, hvis betingelsen er sand
    elif [en anden_tilstand]; derefter
    # Kommandoer til at udføre, hvis another_condition er sand (valgfrit)
    andet
    # Kommandoer til at udføre, hvis ingen af ​​betingelserne er sande (valgfrit)
    være

    Forklaring:

    • [ condition ] = Kommando, der evaluerer betingelsen og returnerer en sand (0) eller falsk (ikke-nul) udgangsstatus.
    • then = Det er et nøgleord, der angiver, at kommandoerne efter det vil blive udført, hvis betingelsen evalueres til sand.
    • elif = (forkortelse for else if) Det er et afsnit, der giver os mulighed for at angive yderligere betingelser for at kontrollere.
    • else = det er en sektion, der indeholder kommandoer, der vil blive udført, hvis ingen af ​​betingelserne er sande.
    • fi = Det er et nøgleord, der markerer slutningen af ​​den betingede blok.

    16) Hvordan læser du linjer fra en fil i et shell-script?

    Til læse linjer fra en fil i et shell-script, kan vi bruge forskellige metoder, men en almindelig fremgangsmåde er at bruge en while-løkke i kombination med read-kommandoen. Sådan kan vi gøre det:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Tjek om filen findes
    if [ -e $fil ]; derefter
    mens IFS= læser -r linje; gør
    echo Linje læst: $line
    # Tilføj din behandlingslogik her
    færdig <$fil
    andet
    echo Filen blev ikke fundet: $fil
    være

    Forklaring:

    1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
    2. file=/home/jayeshkumar/jayesh.txt: Denne linje definerer variabelfilen og tildeler den fulde sti til filen jayesh.txt i mappen /home/jayeshkumar. Skift denne sti, så den matcher den faktiske sti til den fil, du vil læse.
    3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Den kontrollerer, om filen angivet af variablen $file eksisterer. Flaget -e kontrollerer for fileksistens.
    4. mens IFS= læser -r linje; do: Denne linje starter en while-løkke, der læser linjer fra filen.
      • IFS=: IFS (Internal Field Separator) er sat til en tom værdi for at bevare førende og efterfølgende mellemrum.
      • read -r line: Dette læser den aktuelle linje fra filen og gemmer den i den variable linje.
    5. echo Line read: $line: Denne linje udskriver indholdet af den linje, der blev læst fra filen. Variablen $line indeholder den aktuelle linjes indhold.
    6. # Tilføj din behandlingslogik her: Dette er en pladsholderkommentar, hvor du kan tilføje din egen logik til at behandle hver linje. For eksempel kan du analysere linjen, udtrække information eller udføre specifikke handlinger baseret på indholdet.
    7. done <$file: Dette markerer slutningen af ​​while-løkken. < $filen omdirigerer indholdet af filen, der skal læses af løkken.
    8. else: Hvis filen ikke eksisterer (betingelsen i if-sætningen er falsk), udfører scriptet koden under else-grenen.
    9. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der indikerer, at den angivne fil ikke blev fundet.
    10. fi: Denne linje markerer slutningen af ​​if-sætningen.
    læse fil

    læse fil

    Her brugte vi ` pwd ` kommando for at få stien til den aktuelle mappe.

    17) Skriv en funktion i et shell-script, der beregner fakultetet af et givet tal.

    Her er manuskriptetudregn faktorenaf et givet tal.

    #!/bin/bash
    # Definer en funktion til at beregne factorial
    beregne_faktor() {
    num=$1
    fakta=1
    for ((i=1; i<=tal; i++)); gør
    fakta=$((faktum * i))
    Færdig
    ekko $fakta
    }
    # Bed brugeren om at indtaste et nummer
    echo Indtast et tal:
    læs input_num
    # Kald calculate_fatorial-funktionen med det indtastede nummer
    factorial_result=$(calculate_fatorial $input_num)
    # Vis det faktorielle resultat
    echo Factorial af $input_num er: $factorial_result

    Forklaring:

    1. Scriptet starter med shebang-linjen #!/bin/bash for at angive tolken.
    2. calculate_fatorial() er defineret som en funktion. Det kræver et argument, num, som er det tal, som faktoren skal beregnes for.
    3. Inde i funktionen initialiseres fakta til 1. Denne variabel vil gemme det faktorielle resultat.
    4. For-løkken itererer fra 1 til det givne tal (num). I hver iteration multipliceres den aktuelle værdi af fakta med loop-indekset i.
    5. Når løkken er fuldført, indeholder faktavariablen den beregnede faktor.
    6. Scriptet beder brugeren om at indtaste et tal ved hjælp af read.
    7. calculate_fatorial-funktionen kaldes med det brugerangivne tal, og resultatet gemmes i variablen factorial_result.
    8. Til sidst viser scriptet det beregnede faktorielle resultat.
    Faktoriel

    Faktoriel

    18) Hvordan håndterer du signaler som Ctrl+C i et shell-script?

    I et shell-script kan du håndtere signaler som Ctrl+C (også kendt som SIGINT) ved at bruge trap-kommandoen. Ctrl+C genererer et SIGINT-signal, når brugeren trykker på det for at afbryde det kørende script eller program. Ved at bruge trap-kommandoen kan du specificere handlinger, der skal udføres, når et bestemt signal modtages. Sådan håndterer du signaler som Ctrl+C i et shell-script:

    #!/bin/bash
    Ryd op() {
    echo Script afbrudt. Udfører oprydning...
    # Tilføj dine oprydningshandlinger her
    udgang 1
    }
    # Opsæt en fælde for at kalde oprydningsfunktionen, når Ctrl+C (SIGINT) modtages
    fældeoprydning SIGINT
    # Resten af ​​dit script
    ekko kører...
    sove 10
    ekko Færdig.

    Håndtering af signaler er vigtig for at gøre scripts robuste og sikre, at de håndterer uventede afbrydelser elegant. Du kan tilpasse oprydningsfunktionen, så den matcher dine specifikke behov, såsom at lukke filer, stoppe processer eller logge oplysninger, før scriptet afsluttes.

    Forklaring:

    1. #!/bin/bash: Denne shebang-linje specificerer den fortolker, der skal bruges til at køre scriptet.
    2. cleanup() { … }: Dette definerer en funktion ved navn cleanup. Inde i denne funktion kan du inkludere alle handlinger, der skal udføres, når scriptet afbrydes, såsom at lukke filer, frigive ressourcer eller udføre andre oprydningsopgaver.
    3. trap cleanup SIGINT: Trappe-kommandoen bruges til at opsætte en signalhåndtering. I dette tilfælde specificerer den, at når SIGINT-signalet (Ctrl+C) modtages, skal oprydningsfunktionen udføres.
    4. echo Running…, sleep 10, echo Finished.: Dette er blot eksempelkommandoer til at simulere udførelsen af ​​et script.

    446

    19) Opret et script, der tjekker for og fjerner duplikerede linjer i en tekstfil.

    Her er vores linux-script, hvor vi fjerner duplikerede linjer fra en tekstfil.

    #!/bin/bash
    input_file=input.txt
    output_file=output.txt
    sorter $input_fil | uniq> $output_fil
    echo Duplikerede linjer blev fjernet.

    Forklaring:

    1. Scriptet starter med en shebang (#!/bin/bash), som angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    2. Variablen input_file er sat til navnet på inputfilen, der indeholder duplikerede linjer (ændre dette til dit faktiske inputfilnavn).
    3. Variablen output_file er sat til navnet på outputfilen, hvor duplikaterne vil blive fjernet (ændre dette til dit ønskede outputfilnavn).
    4. Scriptet bruger sorteringskommandoen til at sortere linjerne i inputfilen. Sortering af linjerne sikrer, at duplikerede linjer grupperes sammen.
    5. De sorterede linjer sendes derefter gennem uniq-kommandoen, som fjerner på hinanden følgende duplikerede linjer. Outputtet fra denne proces omdirigeres til outputfilen.
    6. Når dubletterne er fjernet, udskriver scriptet en succesmeddelelse.
    fjernelse af dobbelt linje

    duplikatlinjefjernelse

    Her bruger vi ` kat ` for at vise teksten inde i tekstfilen.

    20) Skriv et script, der genererer en sikker tilfældig adgangskode.

    Her er vores script til at generere en sikker tilfældig adgangskode.

    #!/bin/bash
    # Funktion til at generere en tilfældig adgangskode
    generere_adgangskode() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Kald funktionen og gem den genererede adgangskode
    password=$(generer_adgangskode)
    echo Genereret adgangskode: $password

    Bemærk: Brugeren kan derfor ændre længden af ​​adgangskoden ved at erstatte tallet '12'.

    Forklaring:

    1. Scriptet starter med en shebang (#!/bin/bash), hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
    2. Generer_password-funktionen er defineret til at generere en tilfældig adgangskode. Sådan fungerer det:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 opdeler de filtrerede tilfældige data i linjer med bredde på 12 tegn hver.
      • head -n 1 vælger den første linje, hvilket i praksis giver os en tilfældig sekvens af tegn med længden 12.
    3. Adgangskodevariablen tildeles resultatet af at kalde funktionen gener_password.
    4. Til sidst vises den genererede adgangskode ved hjælp af ekko.

    448

    21) Skriv et shell-script, der beregner den samlede størrelse af alle filer i en mappe.

    Her er et shell-script til at beregne den samlede størrelse af alle filer i en mappe.

    #!/bin/bash
    mappe=/sti/til/din/mappe
    total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
    echo Samlet størrelse af filer i $mappe: $total_size

    Forklaring:

    1. Scriptet starter med #!/bin/bash shebang, hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
    2. Bibliotekvariablen er sat til stien til den mappe, som du vil beregne den samlede filstørrelse for. Erstat /sti/til/din/mappe med den faktiske sti.
    3. Kommandoen du bruges til at estimere brugen af ​​filplads. De anvendte muligheder er:
      • -c: Fremstil en totalsum.
      • -s: Vis kun den samlede størrelse af den angivne mappe.
      • -h: Udskriftsstørrelser i et format, der kan læses af mennesker (f.eks. KB, MB, GB).
    4. Outputtet fra du sendes til grep total for at bortfiltrere linjen, der indeholder den samlede størrelse.
    5. awk '{print $1}' bruges til at udtrække det første felt (samlet størrelse) fra linjen.
    6. Den beregnede samlede størrelse gemmes i variablen total_size.
    7. Endelig viser scriptet den samlede størrelse ved hjælp af ekko.
    Samlet størrelse af filer

    Samlet størrelse af filer

    Her brugte vi ` pwd ` kommando for at se den aktuelle mappesti.

    22) Forklar forskellen mellem if- og elif-sætninger i shell-scripting.

    Feature `hvis` Staiftement `elif`-erklæring
    Formål Forklar forskellen mellem if- og elif-sætninger i shell-scripting. Giver alternative betingelser for at kontrollere, hvornår den oprindelige, hvis betingelsen er falsk.
    brug Brugt til den oprindelige tilstand. Brugt efter den indledende if-tilstand for at kontrollere yderligere forhold.
    antal blokke Kan kun have én hvis blok. Kan have flere elif-blokke, men kun én anden blok (valgfrit).
    Udførelse Udfører den kodeblok, der er knyttet til if-sætningen, hvis betingelsen er sand. Hvis betingelsen er falsk, udføres den anden blok (hvis den findes) (valgfrit). Kontrollerer hver elif tilstand i rækkefølge. Hvis én elif-betingelse er sand, udføres den tilsvarende kodeblok, og scriptet afslutter hele den betingede blok. Hvis ingen af ​​elif-betingelserne er sande, udføres else-blokken (hvis den er til stede).
    Indlejrede strukturer Kan indlejres i andre if-, elif- eller else-blokke. Kan ikke indlejres i en anden elif-blok, men kan bruges i en if eller else-blok.

    Lad os forstå det med et eksempel.

    #!/bin/bash
    nummer=5
    if [$nummer -gt 10]; derefter
    echo $nummer er større end 10
    andet
    echo $nummer er ikke større end 10
    være
    ekko ---
    if [$nummer -gt 10]; derefter
    echo $nummer er større end 10
    elif [$nummer -eq 10]; derefter
    echo $nummer er lig med 10
    andet
    echo $nummer er mindre end 10
    være

    Forklaring:

    I dette eksempel kontrollerer den første if-blok, om tallet er større end 10. Hvis ikke, udskriver den en meddelelse, der angiver, at tallet ikke er større end 10. Den anden blok med elif-sætninger kontrollerer flere betingelser sekventielt, indtil en af ​​dem er sand. I dette tilfælde, da værdien af ​​nummer er 5, vil outputtet være:

    if_elif forskel

    if_elif forskel

    23) Hvordan bruger du en while-løkke til gentagne gange at udføre kommandoer?

    En while-løkke bruges i shell-scripting til gentagne gange at udføre et sæt kommandoer, så længe en specificeret betingelse er sand. Sløjfen fortsætter med at udføre kommandoerne, indtil betingelsen bliver falsk.

    Her er den grundlæggende syntaks for en while-løkke:

    mens [betingelse]; gør
    # Kommandoer, der skal udføres
    Færdig

    Forklaring:

    1. `While`-løkken starter med nøgleordet `while` efterfulgt af en betingelse omsluttet af firkantede parenteser `[ ]`.
    2. Sløjfens krop, som indeholder de kommandoer, der skal udføres, er omsluttet af nøgleordene 'do' og 'done'.
    3. Løkken tjekker først tilstanden. Hvis betingelsen er sand, udføres kommandoerne i loop-legemet. Efter at loop-kroppen er udført, kontrolleres betingelsen igen, og processen gentages, indtil betingelsen bliver falsk.

    Eksempel: Hvis vi ønsker at udskrive tal fra 1 til 5

    #!/bin/bash
    tæller=1
    while [ $tæller -le 5 ]; gør
    ekkonummer: $counter
    tæller=$((tæller + 1))
    Færdig

    Forklaring:

    • Tællervariablen er sat til 1.
    • While-løkken kontrollerer, om værdien af ​​tælleren er mindre end eller lig med 5. Så længe denne betingelse er sand, fortsætter løkken med at udføre.
    • Inde i løkken udskrives den aktuelle værdi af tælleren ved hjælp af ekko.
    • Tælleren øges med 1 ved hjælp af udtrykket $((tæller + 1)).
    mens loop

    mens loop

    24) Opret et shell-script, der finder og viser alle tomme filer i en mappe.

    Shell-script, som du kan bruge til at finde og liste alle tomme filer i en mappe ved hjælp af kommandoerne `find` og `stat`:

    #!/bin/bash
    mappe=$1″
    if [-z $mappe]; derefter
    ekkobrug: $0
    udgang 1
    være

    hvis [! -d $katalog ]; derefter
    echo Error: '$directory' er ikke en gyldig mappe.
    udgang 1
    være
    echo tomme filer i $directory:
    find $katalog -type f -tom

    Forklaring:

    1. ` #!/bin/bash `: Dette kaldes en shebang, og det fortæller operativsystemet at bruge Bash-skallen til at fortolke og udføre scriptet.
    2. ` mappe=$1″ `: Denne linje tildeler det første kommandolinjeargument (angivet med $1) til variablen ` vejviser `.
    3. ` if [-z $mappe]; derefter `: Denne linje starter en if-sætning, der kontrollerer om ` vejviser ` variabel er tom (-z tester for en tom streng).
    4. ` ekkobrug: $0 `: Hvis mappen er tom, udskriver denne linje en brugsmeddelelse, hvor ` $0 ` repræsenterer scriptets navn.
    5. ` udgang 1 `: Denne linje afslutter scriptet med en exitkode på ` 1 `, hvilket indikerer en fejl.
    6. ` være `: Denne linje markerer slutningen af ​​` hvis ` erklæring.
    7. ` hvis [! -d $katalog ]; derefter `: Dette starter en anden if-sætning for at kontrollere, om den angivne mappe eksisterer (` -d ` tester for en mappe).
    8. ` echo Error: '$directory' er ikke en gyldig mappe. `: Hvis den angivne mappe ikke eksisterer, udskriver denne linje en fejlmeddelelse.
    9. ` udgang 1 `: Afslutter scriptet med en exit-kode på ` 1 `.
    10. ` være `: Markerer slutningen af ​​den anden ` hvis` udmelding.
    11. ` echo tomme filer i $directory: `: Hvis alt er gyldigt indtil videre, udskriver denne linje en meddelelse, der angiver, at scriptet vil vise tomme filer i den angivne mappe.
    12. ` find $katalog -type f -tom `: Denne linje bruger ` Find ` kommando til at søge efter tomme filer (` -tom `) af typen almindelige filer (` -type f `) i den angivne mappe. Det viser derefter disse tomme filer.
    Finder tomme filer

    Finder tomme filer

    Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det nuværende bibliotek home/jayeshkumar/

    25) Hvad er formålet med read-kommandoen i shell-scripting?

    Read-kommandoen i shell-scripting lader scriptet bede dig om information. Det er ligesom når en computer stiller dig et spørgsmål og venter på dit svar. Dette er nyttigt til scripts, der kræver, at du skriver noget, eller når scriptet skal arbejde med information fra filer. Read-kommandoen hjælper scriptet med at stoppe og vente på, hvad du skriver, og så kan det bruge disse oplysninger til at gøre flere ting i scriptet.

    Syntaks for læsekommando:

    read variable_name>

    Eksempel : Hvis vi ønsker at tage navn som input fra brugeren for at udskrive det.

    #!/bin/bash
    echo Indtast venligst dit navn:
    læs navn
    echo Hej, $navn!

    453

    læs nam

    Sammenfattende bruges read-kommandoen til at fange brugerinput eller data fra filer i shell-scripts, hvilket gør scripts mere interaktive og alsidige.

    26) Skriv et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

    Her er et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

    #!/bin/bash
    mappe=$1″
    if [-z $mappe]; derefter
    ekkobrug: $0
    udgang 1
    være

    hvis [! -d $katalog ]; derefter

    echo Error: '$directory' er ikke en gyldig mappe.
    udgang 1
    være

    cd $katalog || udgang 1

    for fil i *; gør
    if [-f $fil ]; derefter
    newname=$(ekko $fil | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    være
    Færdig

    Forklaring:

    1. #!/bin/bash : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    2. mappe=$1″ : Denne linje tildeler det første kommandolinjeargument til den variable mappe.
    3. if [-z $mappe]; derefter : Denne linje kontrollerer, om biblioteksvariablen er tom (intet argument angivet ved kørsel af scriptet).
    4. ekkobrug: $0 : Hvis mappen er tom, udskriver denne linje en brugsmeddelelse med scriptets navn ($0).
    5. udgang 1 : Denne linje afslutter scriptet med en exitkode på 1, hvilket indikerer, at der er opstået en fejl.
    6. f i: Dette markerer slutningen af ​​den første if-sætning.
    7. hvis [! -d $katalog ]; derefter : Denne linje kontrollerer, om den angivne mappe ikke eksisterer (-d tester for en mappe).
    8. echo Error: '$directory' er ikke en gyldig mappe. : Hvis den angivne mappe ikke findes, udskriver denne linje en fejlmeddelelse.
    9. udgang 1 : Afslutter scriptet med en exitkode på 1.
    10. være : Markerer slutningen af ​​den anden if-sætning.
    11. cd $katalog || udgang 1 : Ændrer den aktuelle arbejdsmappe til den angivne mappe. Hvis mappeændringen mislykkes (f.eks. ikke-eksisterende mappe), afsluttes scriptet med en fejlkode.
    12. for fil i *; gør: jeg for fil i *; gør: starter en loop, der itererer over alle elementer i den aktuelle mappe (* matcher alle filnavne).
    13. if [-f $fil ]; derefter : Kontrollerer, om det aktuelle loop-iterationselement er en almindelig fil (-f tester for en almindelig fil).
    14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer det aktuelle filnavn ($file) til små bogstaver ved hjælp af tr-kommandoen og gemmer resultatet i newname-variablen.
    15. [ $file != $newname ] && mv $file $newname : Sammenligner det originale filnavn med det nye lille filnavn. Hvis de er forskellige, omdøber den filen ved hjælp af mv-kommandoen.
    16. være : Markerer slutningen af ​​den indre if-sætning.
    17. Færdig : Markerer slutningen af ​​løkken.

    454

    Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det aktuelle bibliotek home/jayeshkumar/test

    27) Hvordan kan du bruge aritmetiske operationer i et shell-script?

    Aritmetiske operationer kan udføres i et shell-script ved hjælp af forskellige indbyggede metoder. Skallen giver mekanismer til simple aritmetiske beregninger ved hjælp af aritmetisk udvidelse som:

    1. Aritmetisk udvidelse ($((…)))
    2. Bruger kommandoen expr
    3. Brug let Command

    Her er vores Shell-script, der forklarer alle tre metoder til aritmetiske operationer.

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

    #Aritmetisk udvidelse ($((…)))

    resultat=$((tal1 + tal2))
    echo Sum: $resultat

    #Bruger kommandoen expr

    sum=$(udg. $num1 + $num2)
    echo Sum: $sum

    #Brug let Command

    lad sum = num1 + num2
    echo Sum: $sum

    Forklaring:

    1. `#!/bin/bash` : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    2. `tal1=10` og ` num2=5` : Disse linjer tildeler værdierne 10 og 5 til variablerne ` nummer1 ` og ` nummer 2 `, henholdsvis.
    3. `#Aritmetisk udvidelse ($((...)))` : Dette er en kommentar, der angiver starten på afsnittet, der demonstrerer aritmetisk udvidelse.
    4. `resultat=$((tal1 + tal2))` : Denne linje bruger aritmetisk ekspansion til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` resultat ` variabel.
    5. `ekko Sum: $resultat` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` resultat ` variabel.
    6. `#Using expr Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` udtr ` kommando til aritmetiske operationer.
    7. `sum=$(udtr. $num1 + $num2)` : Denne linje bruger ` udtr ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` sum ` variabel. Bemærk, at ` udtr ` kommando kræver mellemrum omkring operatørerne.
    8. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
    9. `#Brug let Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` lade ` kommando til aritmetiske operationer.
    10. `lad sum = num1 + num2″` : Denne linje bruger ` lade ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og tildeler resultatet til ` sum ` variabel. Den ` lade ` kommandoen kræver ikke mellemrum omkring operatørerne.
    11. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
    aritmetik

    aritmetik

    28) Opret et script, der kontrollerer, om en netværksvært er tilgængelig.

    Her er et simpelt shell-script, der bruger ping-kommandoen til at kontrollere, om en netværksvært er tilgængelig:

    #!/bin/bash
    vært=$1″
    if [ -z $host ]; derefter
    ekkobrug: $0
    udgang 1
    være
    ping -c 4 $host

    hvis [$? -ækv 0]; derefter
    echo $host er tilgængelig.
    andet
    echo $host er ikke tilgængelig.
    være

    Forklaring:

    1. Den tager et værtsnavn eller IP-adresse som argument og kontrollerer, om argumentet er angivet.
    2. Hvis der ikke er angivet noget argument, viser det en brugsmeddelelse og afsluttes.
    3. Den bruger ping-kommandoen med -c 4-indstillingen til at sende fire ICMP-ekko-anmodninger til den angivne vært.
    4. Efter at ping-kommandoen er kørt, kontrollerer den exit-statussen ($?). Hvis exit-statussen er 0, betyder det, at værten er tilgængelig, og scriptet udskriver en succesmeddelelse. Ellers udskriver den en fejlmeddelelse.

    456

    Bemærk : Vi skal angive et værtsnavn som argument, når vi kører scriptet. Her har vi brugt google.com

    29) Skriv et Shell-script for at finde det største element i et array:

    Her er et shell-script til at finde det bedste element i et array.

    #!/bin/bash
    # Erklære et array
    matrix=(3 56 24 89 67)

    # Initialiser en variabel for at gemme den maksimale værdi, startende med det første element

    max=${array[0]}

    # Iterér gennem arrayet

    for num i ${array[@]}; gør

    # Sammenlign hvert element med det aktuelle maksimum

    if ((antal> maks)); derefter
    max=$antal
    være
    Færdig

    # Udskriv den maksimale værdi

    echo Det maksimale element i arrayet er: $max

    Forklaring:

    1. ` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
    2. ` matrix=(3 56 24 89 67) `: Arrayet erklæres og initialiseres med værdier.
    3. ` max=${array[0]} `: `max` initialiseres med det første element i arrayet.
    4. ` for num i ${array[@]}; gør `: En `for`-løkke bruges til at iterere gennem elementerne i arrayet.
    5. ` if ((antal> maks)); derefter `: En `if`-sætning kontrollerer, om det aktuelle element `num` er større end det aktuelle maksimum `max`.
    6. ` max=$num`: Hvis`num ` er større end `max`, er `max` opdateret med værdien num.
    7. ` Færdig `: `For`-løkken er lukket.
    8. ` echo Det maksimale element i arrayet er: $max `: Endelig udskriver scriptet den maksimale værdi fundet i arrayet.
    461

    største antal

    30) Skriv et script til at beregne summen af ​​elementer i et array.

    #!/bin/bash

    # Erklære et array

    matrix=(1 65 22 19 94)

    # Initialiser en variabel for at gemme summen

    sum=0

    # Iterér gennem arrayet og føj hvert element til summen

    for num i ${array[@]}; gør
    am=$((am + am))
    Færdig

    # Udskriv summen

    echo Summen af ​​elementer i arrayet er: $sum

    Forklaring:

    ` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.

    ` matrix=(1 65 22 19 94) `: Arrayet erklæres og initialiseres med værdier.

    ` sum=0 `:` sum ` initialiseres til nul for at holde summen af ​​elementer.

    ` for num i ${array[@]}; gør `: A ` til ` loop bruges til at iterere gennem elementerne i arrayet.

    ` am=$((am + am)) `: Inde i løkken, hvert element ` på en ` tilføjes til ` sum ` variabel.

    ` Færdig `: Den ` til ` sløjfen er lukket.

    `echo Summen af ​​elementer i arrayet er: $sum`: Til sidst udskriver scriptet summen af ​​alle elementer i arrayet.

    462

    Summen af ​​elementer

    Få mere at vide om Shell-scripts

    Konklusion

    Vi ved alle nørder, at shell-script er meget nyttigt for at øge arbejdsproduktiviteten såvel som det sparer tid. Så i denne artikel har vi dækket 30 meget nyttige og mest besnærende shell-scripts eksempler . Vi håber, at denne komplette vejledning om shell-scripting-eksempel hjælper dig med at forstå alt om shell-scripts.



    ).
  5. udgang 1 : Denne linje afslutter scriptet med en exitkode på 1, hvilket indikerer, at der er opstået en fejl.
  6. f i: Dette markerer slutningen af ​​den første if-sætning.
  7. hvis [! -d $katalog ]; derefter : Denne linje kontrollerer, om den angivne mappe ikke eksisterer (-d tester for en mappe).
  8. echo Error: '$directory' er ikke en gyldig mappe. : Hvis den angivne mappe ikke findes, udskriver denne linje en fejlmeddelelse.
  9. udgang 1 : Afslutter scriptet med en exitkode på 1.
  10. være : Markerer slutningen af ​​den anden if-sætning.
  11. cd $katalog || udgang 1 : Ændrer den aktuelle arbejdsmappe til den angivne mappe. Hvis mappeændringen mislykkes (f.eks. ikke-eksisterende mappe), afsluttes scriptet med en fejlkode.
  12. for fil i *; gør: jeg for fil i *; gør: starter en loop, der itererer over alle elementer i den aktuelle mappe (* matcher alle filnavne).
  13. if [-f $fil ]; derefter : Kontrollerer, om det aktuelle loop-iterationselement er en almindelig fil (-f tester for en almindelig fil).
  14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer det aktuelle filnavn ($file) til små bogstaver ved hjælp af tr-kommandoen og gemmer resultatet i newname-variablen.
  15. [ $file != $newname ] && mv $file $newname : Sammenligner det originale filnavn med det nye lille filnavn. Hvis de er forskellige, omdøber den filen ved hjælp af mv-kommandoen.
  16. være : Markerer slutningen af ​​den indre if-sætning.
  17. Færdig : Markerer slutningen af ​​løkken.

454

Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det aktuelle bibliotek home/jayeshkumar/test

27) Hvordan kan du bruge aritmetiske operationer i et shell-script?

Aritmetiske operationer kan udføres i et shell-script ved hjælp af forskellige indbyggede metoder. Skallen giver mekanismer til simple aritmetiske beregninger ved hjælp af aritmetisk udvidelse som:

  1. Aritmetisk udvidelse ($((…)))
  2. Bruger kommandoen expr
  3. Brug let Command

Her er vores Shell-script, der forklarer alle tre metoder til aritmetiske operationer.

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

#Aritmetisk udvidelse ($((…)))

resultat=$((tal1 + tal2))
echo Sum: $resultat

#Bruger kommandoen expr

sum=$(udg. $num1 + $num2)
echo Sum: $sum

#Brug let Command

lad sum = num1 + num2
echo Sum: $sum

Forklaring:

  1. `#!/bin/bash` : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. `tal1=10` og ` num2=5` : Disse linjer tildeler værdierne 10 og 5 til variablerne ` nummer1 ` og ` nummer 2 `, henholdsvis.
  3. `#Aritmetisk udvidelse ($((...)))` : Dette er en kommentar, der angiver starten på afsnittet, der demonstrerer aritmetisk udvidelse.
  4. `resultat=$((tal1 + tal2))` : Denne linje bruger aritmetisk ekspansion til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` resultat ` variabel.
  5. `ekko Sum: $resultat` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` resultat ` variabel.
  6. `#Using expr Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` udtr ` kommando til aritmetiske operationer.
  7. `sum=$(udtr. $num1 + $num2)` : Denne linje bruger ` udtr ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` sum ` variabel. Bemærk, at ` udtr ` kommando kræver mellemrum omkring operatørerne.
  8. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
  9. `#Brug let Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` lade ` kommando til aritmetiske operationer.
  10. `lad sum = num1 + num2″` : Denne linje bruger ` lade ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og tildeler resultatet til ` sum ` variabel. Den ` lade ` kommandoen kræver ikke mellemrum omkring operatørerne.
  11. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
aritmetik

aritmetik

28) Opret et script, der kontrollerer, om en netværksvært er tilgængelig.

Her er et simpelt shell-script, der bruger ping-kommandoen til at kontrollere, om en netværksvært er tilgængelig:

#!/bin/bash
vært=″
if [ -z $host ]; derefter
ekkobrug:

For alle Linux-distributioner er shell-scriptet som en tryllestav, der automatiserer processen, sparer brugere tid og øger produktiviteten. Denne skal scripting tutorial vil introducere dig til de 25 plus skal scripting eksempler.

Men før vi går videre til emnet shell scripting eksempler, lad os forstå shell-script og de faktiske anvendelsestilfælde af shell-scripting.

Hvad er Shell Script?

Nå, skallen er en CLI ( kommandolinjefortolker ), som kører i et tekstvindue, hvor brugere kan administrere og udføre shell-kommandoer. På den anden side, processen med at skrive et sæt kommandoer, der skal udføres på et Linux-system. En fil, der indeholder sådanne instruktioner, kaldes et bash-script.

Brug af Shell Scripts

Nedenfor er nogle almindelige anvendelser af Shell Script:

  • Opgaveautomatisering – Det kan bruges til at automatisere gentagne opgaver som almindelige sikkerhedskopier og softwareinstallationsopgaver.
  • Tilpasning – Man kan bruge shell-scripts til at designe sit kommandolinjemiljø og nemt udføre sin opgave efter behov.
  • Filhåndtering – Shell-scripts kan også bruges til at administrere og manipulere filer og mapper, såsom flytning, kopiering, omdøbning eller sletning af filer.

Shell Script eksempler i Linux

1) Hvad indikerer shebang (#!) i begyndelsen af ​​et shell-script?

Det shebang (#!) i begyndelsen af ​​et script angiver den fortolker, der skal bruges til at udføre scriptet. Det fortæller systemet, hvilken shell eller fortolker der skal fortolke scriptets kommandoer.

For eksempel: Antag, at vi har et script ved navn myscript.sh skrevet i Bash-skallen:

shebang

shebang

I dette eksempel:

  • #!/bin/bash i begyndelsen af ​​scriptet indikerer, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  • Ekkokommandoerne bruges til at udskrive beskeder til terminalen.

2) Hvordan kører du et shell-script fra kommandolinjen?

For at køre et shell-script fra kommandolinjen skal vi følge disse trin:

  • Sørg for, at scriptfilen har eksekverbare tilladelser ved hjælp af chmod kommando :
chmod +x myscript.sh>
  • Udfør scriptet med dets filnavn:
./myscript.sh>

Her skal du udskifte myscrtipt.sh med dit manuskriptnavn.

3) Skriv et shell-script, der udskriver techcodeview.com til terminalen.

Opret et scriptnavn `myscript.sh` (vi bruger ` fordi ` editor, du kan vælge enhver editor)

vim myscript.sh>

#!/bin/bash
# Dette script udskriver techcodeview.com til terminalen
echo techcodeview.com

Print navn

Print navn

Vi gør vores script eksekverbart ved at bruge `chmod +x`, kør derefter med `./myscipt.sh` og få vores ønskede output techcodeview.com.

4) Forklar formålet med echo-kommandoen i shell-scripting.

Det ekko kommando bruges til at vise tekst eller variabler på terminalen. Det bruges almindeligvis til udskrivning af meddelelser, variable værdier og generering af programoutput.

434

ekko kommando

I dette eksempel har vi eksekveret `echo` på terminalen direkte, da det fungerer på samme måde inde i shell-scriptet.

5) Hvordan kan du tildele en værdi til en variabel i et shell-script?

Variabler tildeles værdier ved hjælp af tildelingsoperatoren =.

For eksempel:

#!/bin/bash
# Tildeling af en værdi til en variabel
navn=Jayesh
alder=21
echo $navn $age

Forklaring:

  • Navnevariablen tildeles værdien Jayesh.
  • Aldersvariablen tildeles værdien 21.
  • echo bruges til at udskrive og `$name` `$age` bruges til at kalde værdien gemt i variablerne.

435

6) Skriv et shell-script, der tager en brugers navn som input og hilser på dem.

Opret et scriptnavn `example.sh`.

#!/bin/bash
# Spørg brugeren om deres navn
echo Hvad er dit navn?
læs navn
# Hils brugeren
echo Hej, $navn! Dejligt at møde dig.

Forklaring:

  • #!/bin/bash: Dette er shebang-linjen. Det fortæller systemet at bruge Bash-fortolkeren til at udføre scriptet.
  • # Spørg brugeren om deres navn: Dette er en kommentar. Det giver kontekst om den kommende kode. Kommentarer ignoreres af tolken.
  • echo Hvad er dit navn?: Echo-kommandoen bruges til at vise teksten i dobbelte anførselstegn på terminalen.
  • read name: Read-kommandoen venter på, at brugeren indtaster tekst og gemmer den i variabelnavnet.
  • echo Hej, $navn! Rart at møde dig.: Denne linje bruger ekko-kommandoen til at udskrive en hilsen, der inkluderer værdien af ​​navnevariablen, som blev indsamlet fra brugerens input.

436

7) Hvordan tilføjer du kommentarer til et shell-script?

Kommentarer i shell-scripting bruges til at give forklaringer eller kontekst til koden. De ignoreres af tolken og er kun beregnet til mennesker, der læser manuskriptet. Du kan tilføje kommentarer ved at bruge #-symbolet.

#!/bin/bash
# Dette er en kommentar, der forklarer formålet med scriptet
ekko gfg

8) Opret et shell-script, der kontrollerer, om der findes en fil i den aktuelle mappe.

Her er et script, der kontrollerer, om en fil med navnet example.txt findes i den aktuelle mappe:

#!/bin/bash
file=example.txt
# Tjek om filen findes
if [ -e $fil ]; derefter
echo Filen findes: $file
andet
echo Filen blev ikke fundet: $fil
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
  2. file=example.txt: Denne linje definerer variabelfilen og tildeler værdien example.txt til den. Du kan erstatte dette med navnet på den fil, du vil søge efter.
  3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Betingelsen [-e $file] kontrollerer, om filen, der er angivet af værdien af ​​filvariablen, eksisterer. Flaget -e bruges til at kontrollere, om filen eksisterer.
  4. echo File exists: $file: Hvis betingelsen er sand (dvs. filen eksisterer), udskriver denne linje en meddelelse, der angiver, at filen eksisterer, sammen med filens navn.
  5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), udfører scriptet koden under else-grenen.
  6. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der angiver, at den angivne fil ikke blev fundet, sammen med filens navn.
  7. fi: Denne linje markerer slutningen af ​​if-sætningen.
Finder fil

Finder fil

9) Hvad er forskellen mellem enkelte anførselstegn (') og dobbelte anførselstegn () i shell-scripting?

Enkelte anførselstegn (') og dobbelte anførselstegn () bruges til at omslutte strenge i shell-scripting, men de har forskellig adfærd:

  • Enkelte citater: Alt mellem enkelte citater behandles som en bogstavelig streng. Variabelnavne og de fleste specialtegn udvides ikke.
  • Dobbelte anførselstegn: Variabler og visse specialtegn inden for dobbelte anførselstegn udvides. Indholdet er underlagt variabel substitution og kommandosubstitution.

#!/bin/bash

abcd=Hej
echo '$abcd' # Output: $abcd
echo $abcd # Output: Hej

10) Hvordan kan du bruge kommandolinjeargumenter i et shell-script?

Kommandolinjeargumenter er værdier, der leveres til et script, når det udføres. De kan tilgås i scriptet ved hjælp af specielle variabler som $1, $2 osv., hvor $1 repræsenterer det første argument, $2 repræsenterer det andet argument, og så videre.

For eksempel: Hvis vores scriptnavn i `eksempel.sh`

#!/bin/bash

echo Script navn: $0
echo Første argument: $1
echo Andet argument: $2

Hvis vi kører scriptet med `.example.sh hello_1 hello_2`, vil det udlæse:

cli argumenter

cli argumenter

11) Hvordan bruger du for-løkken til at gentage en liste med værdier?

Opret et scriptnavn `example.sh`.

#!/bin/bash

frugter = (æble banan kirsebær daddel)
for frugt i ${fruits[@]}; gør
echo Nuværende frugt: $fruit
Færdig

Forklaring:

`fruits=`-linjen opretter et array med navnet frugter med fire elementer: æble, banan, kirsebær og daddel.

  • for frugt i ${fruits[@]}; do: Denne linje starter en for-løkke. Her er hvad hver del betyder:
  • for frugt: Dette erklærer en loop-variabel kaldet frugt. I hver iteration af løkken vil frugt holde værdien af ​​det aktuelle element fra frugtarrayet.
  • ${fruits[@]}: Dette er en matrixudvidelse, der tager alle elementerne fra frugtarrayet. ${…}-syntaksen sikrer, at hvert element behandles som et separat element.
  • do: Dette nøgleord markerer begyndelsen af ​​løkketeksten.
  • echo Current fruit: $fruit: Inde i løkken bruger denne linje echo-kommandoen til at vise den aktuelle værdi af løkkevariablen frugt. Den udskriver en besked som Current fruit: apple for hver frugt i arrayet.
  • done: Dette nøgleord markerer slutningen af ​​løkkens krop. Det fortæller scriptet, at løkken er afsluttet.
for sløjfe

for sløjfe

12) Skriv et shell-script, der beregner summen af ​​heltal fra 1 til N ved hjælp af en loop.

Opret et scriptnavn `example.sh`.

#!/bin/bash

echo Indtast et tal (N):
læs N
sum=0
for ((i=1; i<=$N; i++)); gør
sum=$((sum + i))
Færdig
echo Summen af ​​heltal fra 1 til $N er: $sum

Forklaring:
Scriptet starter med at bede dig om at indtaste et tal (N) ved hjælp af read. Dette tal bestemmer, hvor mange gange løkken kører.

  1. Variablen sum initialiseres til 0. Denne variabel vil holde styr på summen af ​​heltal.
  2. For-løkken begynder med for (( i=1; i<=$N; i++ )). Denne sløjfestruktur bruges til at gentage et sæt handlinger et vist antal gange, i dette tilfælde fra 1 til værdien af ​​N.
  3. Inde i løkken sker disse ting:
    • i=1 sætter loop-variablen i til 1 i begyndelsen af ​​hver iteration.
    • Sløjfebetingelsen i<=$N kontrollerer, om i stadig er mindre end eller lig med det givne tal N.
    • Hvis betingelsen er sand, udføres loop body.
    • sum=$((sum + i)) beregner den nye værdi af sum ved at tilføje den aktuelle værdi af i. Dette summerer hele tallene fra 1 til den aktuelle i-værdi.
  4. Efter hver iteration øger i++ værdien af ​​i med 1.
  5. Sløjfen fortsætter med at køre, indtil betingelsen i<=$N bliver falsk (når i bliver større end N).
  6. Når løkken er færdig, viser scriptet summen af ​​heltal fra 1 til det indtastede tal N.

439

13) Opret et script, der søger efter et bestemt ord i en fil og tæller dets forekomster.

Opret et scriptnavn `word_count.sh`

#!/bin/bash

echo Indtast ordet for at søge efter:
læs target_word
echo Indtast filnavnet:
læs filnavn
count=$(grep -o -w $mål_ord $filnavn | wc -l)
echo Ordet '$target_word' vises $tæller gange i '$filnavn'.

Forklaring:

  • echo Indtast ordet, der skal søges efter:: Denne linje viser en meddelelse, der beder brugeren om at indtaste et ord, de vil søge efter i en fil.
  • read target_word: Denne linje læser input fra brugeren og gemmer det i en variabel ved navn target_word.
  • echo Indtast filnavnet:: Denne linje viser en meddelelse, der beder brugeren om at indtaste navnet på den fil, de vil søge i.
  • læs filnavn: Denne linje læser input fra brugeren og gemmer det i en variabel med navnet filnavn.
  • count=$(grep -o -w $mål_ord $filnavn | wc -l): Denne linje udfører scriptets hovedarbejde. Lad os opdele det yderligere:
    • grep -o -w $target_word $filnavn: Denne del af kommandoen søger efter forekomster af target_word i det angivne filnavn. Valgmulighederne -o og -w sikrer, at kun hele ordmatches tælles.
    • |: Dette er et rør, som tager outputtet fra den forrige kommando og sender det som input til den næste kommando.
    • wc -l: Denne del af kommandoen bruger wc-kommandoen til at tælle antallet af linjer i inputtet. Valgmuligheden -l tæller specifikt linjerne.
    • Hele kommandoen beregner antallet af forekomster af target_word i filen og tildeler denne optælling til variablen antal

441

14) Forklar forskellene mellem standard output (stdout) og standardfejl (stderr).

Hovedforskellen mellem standardoutput (stdout) og standardfejl (stderr) er som følger:

  • Standard output (stdout): Dette er standardoutputstrømmen, hvor en kommandos almindelige output går. Det vises som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af>.
  • Standardfejl (stderr): Dette er outputstrømmen for fejlmeddelelser og advarsler. Det vises også som standard på terminalen. Du kan omdirigere den til en fil ved hjælp af 2>.

15) Forklar begrebet betingede udsagn i shell scripting.

Betingede udsagn i shell-scripting give os mulighed for at træffe beslutninger og kontrollere flowet af vores script baseret på visse betingelser. De gør det muligt for vores script at udføre forskellige sæt kommandoer afhængigt af, om en bestemt betingelse er sand eller falsk. De primære betingede sætninger i shell-scripting er if-sætningen, elif-sætningen (valgfri) og else-sætningen (valgfri).

Her er den grundlæggende struktur af en betinget erklæring i shell-scripting:

if [betingelse]; derefter
# Kommandoer til at udføre, hvis betingelsen er sand
elif [en anden_tilstand]; derefter
# Kommandoer til at udføre, hvis another_condition er sand (valgfrit)
andet
# Kommandoer til at udføre, hvis ingen af ​​betingelserne er sande (valgfrit)
være

Forklaring:

  • [ condition ] = Kommando, der evaluerer betingelsen og returnerer en sand (0) eller falsk (ikke-nul) udgangsstatus.
  • then = Det er et nøgleord, der angiver, at kommandoerne efter det vil blive udført, hvis betingelsen evalueres til sand.
  • elif = (forkortelse for else if) Det er et afsnit, der giver os mulighed for at angive yderligere betingelser for at kontrollere.
  • else = det er en sektion, der indeholder kommandoer, der vil blive udført, hvis ingen af ​​betingelserne er sande.
  • fi = Det er et nøgleord, der markerer slutningen af ​​den betingede blok.

16) Hvordan læser du linjer fra en fil i et shell-script?

Til læse linjer fra en fil i et shell-script, kan vi bruge forskellige metoder, men en almindelig fremgangsmåde er at bruge en while-løkke i kombination med read-kommandoen. Sådan kan vi gøre det:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Tjek om filen findes
if [ -e $fil ]; derefter
mens IFS= læser -r linje; gør
echo Linje læst: $line
# Tilføj din behandlingslogik her
færdig <$fil
andet
echo Filen blev ikke fundet: $fil
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen, der specificerer fortolkeren (/bin/bash), der skal bruges til at køre scriptet.
  2. file=/home/jayeshkumar/jayesh.txt: Denne linje definerer variabelfilen og tildeler den fulde sti til filen jayesh.txt i mappen /home/jayeshkumar. Skift denne sti, så den matcher den faktiske sti til den fil, du vil læse.
  3. if [ -e $fil ]; derefter: Denne linje starter en if-sætning. Den kontrollerer, om filen angivet af variablen $file eksisterer. Flaget -e kontrollerer for fileksistens.
  4. mens IFS= læser -r linje; do: Denne linje starter en while-løkke, der læser linjer fra filen.
    • IFS=: IFS (Internal Field Separator) er sat til en tom værdi for at bevare førende og efterfølgende mellemrum.
    • read -r line: Dette læser den aktuelle linje fra filen og gemmer den i den variable linje.
  5. echo Line read: $line: Denne linje udskriver indholdet af den linje, der blev læst fra filen. Variablen $line indeholder den aktuelle linjes indhold.
  6. # Tilføj din behandlingslogik her: Dette er en pladsholderkommentar, hvor du kan tilføje din egen logik til at behandle hver linje. For eksempel kan du analysere linjen, udtrække information eller udføre specifikke handlinger baseret på indholdet.
  7. done <$file: Dette markerer slutningen af ​​while-løkken. < $filen omdirigerer indholdet af filen, der skal læses af løkken.
  8. else: Hvis filen ikke eksisterer (betingelsen i if-sætningen er falsk), udfører scriptet koden under else-grenen.
  9. echo Fil ikke fundet: $fil: Denne linje udskriver en fejlmeddelelse, der indikerer, at den angivne fil ikke blev fundet.
  10. fi: Denne linje markerer slutningen af ​​if-sætningen.
læse fil

læse fil

Her brugte vi ` pwd ` kommando for at få stien til den aktuelle mappe.

17) Skriv en funktion i et shell-script, der beregner fakultetet af et givet tal.

Her er manuskriptetudregn faktorenaf et givet tal.

#!/bin/bash
# Definer en funktion til at beregne factorial
beregne_faktor() {
num=$1
fakta=1
for ((i=1; i<=tal; i++)); gør
fakta=$((faktum * i))
Færdig
ekko $fakta
}
# Bed brugeren om at indtaste et nummer
echo Indtast et tal:
læs input_num
# Kald calculate_fatorial-funktionen med det indtastede nummer
factorial_result=$(calculate_fatorial $input_num)
# Vis det faktorielle resultat
echo Factorial af $input_num er: $factorial_result

Forklaring:

  1. Scriptet starter med shebang-linjen #!/bin/bash for at angive tolken.
  2. calculate_fatorial() er defineret som en funktion. Det kræver et argument, num, som er det tal, som faktoren skal beregnes for.
  3. Inde i funktionen initialiseres fakta til 1. Denne variabel vil gemme det faktorielle resultat.
  4. For-løkken itererer fra 1 til det givne tal (num). I hver iteration multipliceres den aktuelle værdi af fakta med loop-indekset i.
  5. Når løkken er fuldført, indeholder faktavariablen den beregnede faktor.
  6. Scriptet beder brugeren om at indtaste et tal ved hjælp af read.
  7. calculate_fatorial-funktionen kaldes med det brugerangivne tal, og resultatet gemmes i variablen factorial_result.
  8. Til sidst viser scriptet det beregnede faktorielle resultat.
Faktoriel

Faktoriel

18) Hvordan håndterer du signaler som Ctrl+C i et shell-script?

I et shell-script kan du håndtere signaler som Ctrl+C (også kendt som SIGINT) ved at bruge trap-kommandoen. Ctrl+C genererer et SIGINT-signal, når brugeren trykker på det for at afbryde det kørende script eller program. Ved at bruge trap-kommandoen kan du specificere handlinger, der skal udføres, når et bestemt signal modtages. Sådan håndterer du signaler som Ctrl+C i et shell-script:

#!/bin/bash
Ryd op() {
echo Script afbrudt. Udfører oprydning...
# Tilføj dine oprydningshandlinger her
udgang 1
}
# Opsæt en fælde for at kalde oprydningsfunktionen, når Ctrl+C (SIGINT) modtages
fældeoprydning SIGINT
# Resten af ​​dit script
ekko kører...
sove 10
ekko Færdig.

Håndtering af signaler er vigtig for at gøre scripts robuste og sikre, at de håndterer uventede afbrydelser elegant. Du kan tilpasse oprydningsfunktionen, så den matcher dine specifikke behov, såsom at lukke filer, stoppe processer eller logge oplysninger, før scriptet afsluttes.

Forklaring:

  1. #!/bin/bash: Denne shebang-linje specificerer den fortolker, der skal bruges til at køre scriptet.
  2. cleanup() { … }: Dette definerer en funktion ved navn cleanup. Inde i denne funktion kan du inkludere alle handlinger, der skal udføres, når scriptet afbrydes, såsom at lukke filer, frigive ressourcer eller udføre andre oprydningsopgaver.
  3. trap cleanup SIGINT: Trappe-kommandoen bruges til at opsætte en signalhåndtering. I dette tilfælde specificerer den, at når SIGINT-signalet (Ctrl+C) modtages, skal oprydningsfunktionen udføres.
  4. echo Running…, sleep 10, echo Finished.: Dette er blot eksempelkommandoer til at simulere udførelsen af ​​et script.

446

19) Opret et script, der tjekker for og fjerner duplikerede linjer i en tekstfil.

Her er vores linux-script, hvor vi fjerner duplikerede linjer fra en tekstfil.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sorter $input_fil | uniq> $output_fil
echo Duplikerede linjer blev fjernet.

Forklaring:

  1. Scriptet starter med en shebang (#!/bin/bash), som angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. Variablen input_file er sat til navnet på inputfilen, der indeholder duplikerede linjer (ændre dette til dit faktiske inputfilnavn).
  3. Variablen output_file er sat til navnet på outputfilen, hvor duplikaterne vil blive fjernet (ændre dette til dit ønskede outputfilnavn).
  4. Scriptet bruger sorteringskommandoen til at sortere linjerne i inputfilen. Sortering af linjerne sikrer, at duplikerede linjer grupperes sammen.
  5. De sorterede linjer sendes derefter gennem uniq-kommandoen, som fjerner på hinanden følgende duplikerede linjer. Outputtet fra denne proces omdirigeres til outputfilen.
  6. Når dubletterne er fjernet, udskriver scriptet en succesmeddelelse.
fjernelse af dobbelt linje

duplikatlinjefjernelse

Her bruger vi ` kat ` for at vise teksten inde i tekstfilen.

20) Skriv et script, der genererer en sikker tilfældig adgangskode.

Her er vores script til at generere en sikker tilfældig adgangskode.

#!/bin/bash
# Funktion til at generere en tilfældig adgangskode
generere_adgangskode() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Kald funktionen og gem den genererede adgangskode
password=$(generer_adgangskode)
echo Genereret adgangskode: $password

Bemærk: Brugeren kan derfor ændre længden af ​​adgangskoden ved at erstatte tallet '12'.

Forklaring:

  1. Scriptet starter med en shebang (#!/bin/bash), hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
  2. Generer_password-funktionen er defineret til at generere en tilfældig adgangskode. Sådan fungerer det:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 opdeler de filtrerede tilfældige data i linjer med bredde på 12 tegn hver.
    • head -n 1 vælger den første linje, hvilket i praksis giver os en tilfældig sekvens af tegn med længden 12.
  3. Adgangskodevariablen tildeles resultatet af at kalde funktionen gener_password.
  4. Til sidst vises den genererede adgangskode ved hjælp af ekko.

448

21) Skriv et shell-script, der beregner den samlede størrelse af alle filer i en mappe.

Her er et shell-script til at beregne den samlede størrelse af alle filer i en mappe.

#!/bin/bash
mappe=/sti/til/din/mappe
total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
echo Samlet størrelse af filer i $mappe: $total_size

Forklaring:

  1. Scriptet starter med #!/bin/bash shebang, hvilket indikerer, at det skal fortolkes ved hjælp af Bash-skallen.
  2. Bibliotekvariablen er sat til stien til den mappe, som du vil beregne den samlede filstørrelse for. Erstat /sti/til/din/mappe med den faktiske sti.
  3. Kommandoen du bruges til at estimere brugen af ​​filplads. De anvendte muligheder er:
    • -c: Fremstil en totalsum.
    • -s: Vis kun den samlede størrelse af den angivne mappe.
    • -h: Udskriftsstørrelser i et format, der kan læses af mennesker (f.eks. KB, MB, GB).
  4. Outputtet fra du sendes til grep total for at bortfiltrere linjen, der indeholder den samlede størrelse.
  5. awk '{print $1}' bruges til at udtrække det første felt (samlet størrelse) fra linjen.
  6. Den beregnede samlede størrelse gemmes i variablen total_size.
  7. Endelig viser scriptet den samlede størrelse ved hjælp af ekko.
Samlet størrelse af filer

Samlet størrelse af filer

Her brugte vi ` pwd ` kommando for at se den aktuelle mappesti.

22) Forklar forskellen mellem if- og elif-sætninger i shell-scripting.

Feature `hvis` Staiftement `elif`-erklæring
Formål Forklar forskellen mellem if- og elif-sætninger i shell-scripting. Giver alternative betingelser for at kontrollere, hvornår den oprindelige, hvis betingelsen er falsk.
brug Brugt til den oprindelige tilstand. Brugt efter den indledende if-tilstand for at kontrollere yderligere forhold.
antal blokke Kan kun have én hvis blok. Kan have flere elif-blokke, men kun én anden blok (valgfrit).
Udførelse Udfører den kodeblok, der er knyttet til if-sætningen, hvis betingelsen er sand. Hvis betingelsen er falsk, udføres den anden blok (hvis den findes) (valgfrit). Kontrollerer hver elif tilstand i rækkefølge. Hvis én elif-betingelse er sand, udføres den tilsvarende kodeblok, og scriptet afslutter hele den betingede blok. Hvis ingen af ​​elif-betingelserne er sande, udføres else-blokken (hvis den er til stede).
Indlejrede strukturer Kan indlejres i andre if-, elif- eller else-blokke. Kan ikke indlejres i en anden elif-blok, men kan bruges i en if eller else-blok.

Lad os forstå det med et eksempel.

#!/bin/bash
nummer=5
if [$nummer -gt 10]; derefter
echo $nummer er større end 10
andet
echo $nummer er ikke større end 10
være
ekko ---
if [$nummer -gt 10]; derefter
echo $nummer er større end 10
elif [$nummer -eq 10]; derefter
echo $nummer er lig med 10
andet
echo $nummer er mindre end 10
være

Forklaring:

I dette eksempel kontrollerer den første if-blok, om tallet er større end 10. Hvis ikke, udskriver den en meddelelse, der angiver, at tallet ikke er større end 10. Den anden blok med elif-sætninger kontrollerer flere betingelser sekventielt, indtil en af ​​dem er sand. I dette tilfælde, da værdien af ​​nummer er 5, vil outputtet være:

if_elif forskel

if_elif forskel

23) Hvordan bruger du en while-løkke til gentagne gange at udføre kommandoer?

En while-løkke bruges i shell-scripting til gentagne gange at udføre et sæt kommandoer, så længe en specificeret betingelse er sand. Sløjfen fortsætter med at udføre kommandoerne, indtil betingelsen bliver falsk.

Her er den grundlæggende syntaks for en while-løkke:

mens [betingelse]; gør
# Kommandoer, der skal udføres
Færdig

Forklaring:

  1. `While`-løkken starter med nøgleordet `while` efterfulgt af en betingelse omsluttet af firkantede parenteser `[ ]`.
  2. Sløjfens krop, som indeholder de kommandoer, der skal udføres, er omsluttet af nøgleordene 'do' og 'done'.
  3. Løkken tjekker først tilstanden. Hvis betingelsen er sand, udføres kommandoerne i loop-legemet. Efter at loop-kroppen er udført, kontrolleres betingelsen igen, og processen gentages, indtil betingelsen bliver falsk.

Eksempel: Hvis vi ønsker at udskrive tal fra 1 til 5

#!/bin/bash
tæller=1
while [ $tæller -le 5 ]; gør
ekkonummer: $counter
tæller=$((tæller + 1))
Færdig

Forklaring:

  • Tællervariablen er sat til 1.
  • While-løkken kontrollerer, om værdien af ​​tælleren er mindre end eller lig med 5. Så længe denne betingelse er sand, fortsætter løkken med at udføre.
  • Inde i løkken udskrives den aktuelle værdi af tælleren ved hjælp af ekko.
  • Tælleren øges med 1 ved hjælp af udtrykket $((tæller + 1)).
mens loop

mens loop

24) Opret et shell-script, der finder og viser alle tomme filer i en mappe.

Shell-script, som du kan bruge til at finde og liste alle tomme filer i en mappe ved hjælp af kommandoerne `find` og `stat`:

#!/bin/bash
mappe=$1″
if [-z $mappe]; derefter
ekkobrug: $0
udgang 1
være

hvis [! -d $katalog ]; derefter
echo Error: '$directory' er ikke en gyldig mappe.
udgang 1
være
echo tomme filer i $directory:
find $katalog -type f -tom

Forklaring:

  1. ` #!/bin/bash `: Dette kaldes en shebang, og det fortæller operativsystemet at bruge Bash-skallen til at fortolke og udføre scriptet.
  2. ` mappe=$1″ `: Denne linje tildeler det første kommandolinjeargument (angivet med $1) til variablen ` vejviser `.
  3. ` if [-z $mappe]; derefter `: Denne linje starter en if-sætning, der kontrollerer om ` vejviser ` variabel er tom (-z tester for en tom streng).
  4. ` ekkobrug: $0 `: Hvis mappen er tom, udskriver denne linje en brugsmeddelelse, hvor ` $0 ` repræsenterer scriptets navn.
  5. ` udgang 1 `: Denne linje afslutter scriptet med en exitkode på ` 1 `, hvilket indikerer en fejl.
  6. ` være `: Denne linje markerer slutningen af ​​` hvis ` erklæring.
  7. ` hvis [! -d $katalog ]; derefter `: Dette starter en anden if-sætning for at kontrollere, om den angivne mappe eksisterer (` -d ` tester for en mappe).
  8. ` echo Error: '$directory' er ikke en gyldig mappe. `: Hvis den angivne mappe ikke eksisterer, udskriver denne linje en fejlmeddelelse.
  9. ` udgang 1 `: Afslutter scriptet med en exit-kode på ` 1 `.
  10. ` være `: Markerer slutningen af ​​den anden ` hvis` udmelding.
  11. ` echo tomme filer i $directory: `: Hvis alt er gyldigt indtil videre, udskriver denne linje en meddelelse, der angiver, at scriptet vil vise tomme filer i den angivne mappe.
  12. ` find $katalog -type f -tom `: Denne linje bruger ` Find ` kommando til at søge efter tomme filer (` -tom `) af typen almindelige filer (` -type f `) i den angivne mappe. Det viser derefter disse tomme filer.
Finder tomme filer

Finder tomme filer

Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det nuværende bibliotek home/jayeshkumar/

25) Hvad er formålet med read-kommandoen i shell-scripting?

Read-kommandoen i shell-scripting lader scriptet bede dig om information. Det er ligesom når en computer stiller dig et spørgsmål og venter på dit svar. Dette er nyttigt til scripts, der kræver, at du skriver noget, eller når scriptet skal arbejde med information fra filer. Read-kommandoen hjælper scriptet med at stoppe og vente på, hvad du skriver, og så kan det bruge disse oplysninger til at gøre flere ting i scriptet.

Syntaks for læsekommando:

read variable_name>

Eksempel : Hvis vi ønsker at tage navn som input fra brugeren for at udskrive det.

#!/bin/bash
echo Indtast venligst dit navn:
læs navn
echo Hej, $navn!

453

læs nam

Sammenfattende bruges read-kommandoen til at fange brugerinput eller data fra filer i shell-scripts, hvilket gør scripts mere interaktive og alsidige.

26) Skriv et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

Her er et shell-script, der konverterer alle filnavne i en mappe til små bogstaver.

#!/bin/bash
mappe=$1″
if [-z $mappe]; derefter
ekkobrug: $0
udgang 1
være

hvis [! -d $katalog ]; derefter

echo Error: '$directory' er ikke en gyldig mappe.
udgang 1
være

cd $katalog || udgang 1

for fil i *; gør
if [-f $fil ]; derefter
newname=$(ekko $fil | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
være
Færdig

Forklaring:

  1. #!/bin/bash : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. mappe=$1″ : Denne linje tildeler det første kommandolinjeargument til den variable mappe.
  3. if [-z $mappe]; derefter : Denne linje kontrollerer, om biblioteksvariablen er tom (intet argument angivet ved kørsel af scriptet).
  4. ekkobrug: $0 : Hvis mappen er tom, udskriver denne linje en brugsmeddelelse med scriptets navn ($0).
  5. udgang 1 : Denne linje afslutter scriptet med en exitkode på 1, hvilket indikerer, at der er opstået en fejl.
  6. f i: Dette markerer slutningen af ​​den første if-sætning.
  7. hvis [! -d $katalog ]; derefter : Denne linje kontrollerer, om den angivne mappe ikke eksisterer (-d tester for en mappe).
  8. echo Error: '$directory' er ikke en gyldig mappe. : Hvis den angivne mappe ikke findes, udskriver denne linje en fejlmeddelelse.
  9. udgang 1 : Afslutter scriptet med en exitkode på 1.
  10. være : Markerer slutningen af ​​den anden if-sætning.
  11. cd $katalog || udgang 1 : Ændrer den aktuelle arbejdsmappe til den angivne mappe. Hvis mappeændringen mislykkes (f.eks. ikke-eksisterende mappe), afsluttes scriptet med en fejlkode.
  12. for fil i *; gør: jeg for fil i *; gør: starter en loop, der itererer over alle elementer i den aktuelle mappe (* matcher alle filnavne).
  13. if [-f $fil ]; derefter : Kontrollerer, om det aktuelle loop-iterationselement er en almindelig fil (-f tester for en almindelig fil).
  14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer det aktuelle filnavn ($file) til små bogstaver ved hjælp af tr-kommandoen og gemmer resultatet i newname-variablen.
  15. [ $file != $newname ] && mv $file $newname : Sammenligner det originale filnavn med det nye lille filnavn. Hvis de er forskellige, omdøber den filen ved hjælp af mv-kommandoen.
  16. være : Markerer slutningen af ​​den indre if-sætning.
  17. Færdig : Markerer slutningen af ​​løkken.

454

Bemærk : Vi skal angive en mappe som argument, når vi kører scriptet. Her har vi brugt stien til det aktuelle bibliotek home/jayeshkumar/test

27) Hvordan kan du bruge aritmetiske operationer i et shell-script?

Aritmetiske operationer kan udføres i et shell-script ved hjælp af forskellige indbyggede metoder. Skallen giver mekanismer til simple aritmetiske beregninger ved hjælp af aritmetisk udvidelse som:

  1. Aritmetisk udvidelse ($((…)))
  2. Bruger kommandoen expr
  3. Brug let Command

Her er vores Shell-script, der forklarer alle tre metoder til aritmetiske operationer.

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

#Aritmetisk udvidelse ($((…)))

resultat=$((tal1 + tal2))
echo Sum: $resultat

#Bruger kommandoen expr

sum=$(udg. $num1 + $num2)
echo Sum: $sum

#Brug let Command

lad sum = num1 + num2
echo Sum: $sum

Forklaring:

  1. `#!/bin/bash` : Dette er shebang, der angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. `tal1=10` og ` num2=5` : Disse linjer tildeler værdierne 10 og 5 til variablerne ` nummer1 ` og ` nummer 2 `, henholdsvis.
  3. `#Aritmetisk udvidelse ($((...)))` : Dette er en kommentar, der angiver starten på afsnittet, der demonstrerer aritmetisk udvidelse.
  4. `resultat=$((tal1 + tal2))` : Denne linje bruger aritmetisk ekspansion til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` resultat ` variabel.
  5. `ekko Sum: $resultat` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` resultat ` variabel.
  6. `#Using expr Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` udtr ` kommando til aritmetiske operationer.
  7. `sum=$(udtr. $num1 + $num2)` : Denne linje bruger ` udtr ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og gemmer resultatet i ` sum ` variabel. Bemærk, at ` udtr ` kommando kræver mellemrum omkring operatørerne.
  8. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
  9. `#Brug let Command` : Dette er en kommentar, der angiver starten af ​​afsnittet, der demonstrerer brugen af ​​` lade ` kommando til aritmetiske operationer.
  10. `lad sum = num1 + num2″` : Denne linje bruger ` lade ` kommando til at beregne summen af ​​` nummer1 ` og ` nummer 2 ` og tildeler resultatet til ` sum ` variabel. Den ` lade ` kommandoen kræver ikke mellemrum omkring operatørerne.
  11. `ekko Sum: $sum` : Denne linje udskriver den beregnede sum ved hjælp af værdien gemt i ` sum ` variabel.
aritmetik

aritmetik

28) Opret et script, der kontrollerer, om en netværksvært er tilgængelig.

Her er et simpelt shell-script, der bruger ping-kommandoen til at kontrollere, om en netværksvært er tilgængelig:

#!/bin/bash
vært=$1″
if [ -z $host ]; derefter
ekkobrug: $0
udgang 1
være
ping -c 4 $host

hvis [$? -ækv 0]; derefter
echo $host er tilgængelig.
andet
echo $host er ikke tilgængelig.
være

Forklaring:

  1. Den tager et værtsnavn eller IP-adresse som argument og kontrollerer, om argumentet er angivet.
  2. Hvis der ikke er angivet noget argument, viser det en brugsmeddelelse og afsluttes.
  3. Den bruger ping-kommandoen med -c 4-indstillingen til at sende fire ICMP-ekko-anmodninger til den angivne vært.
  4. Efter at ping-kommandoen er kørt, kontrollerer den exit-statussen ($?). Hvis exit-statussen er 0, betyder det, at værten er tilgængelig, og scriptet udskriver en succesmeddelelse. Ellers udskriver den en fejlmeddelelse.

456

Bemærk : Vi skal angive et værtsnavn som argument, når vi kører scriptet. Her har vi brugt google.com

29) Skriv et Shell-script for at finde det største element i et array:

Her er et shell-script til at finde det bedste element i et array.

#!/bin/bash
# Erklære et array
matrix=(3 56 24 89 67)

# Initialiser en variabel for at gemme den maksimale værdi, startende med det første element

max=${array[0]}

# Iterér gennem arrayet

for num i ${array[@]}; gør

# Sammenlign hvert element med det aktuelle maksimum

if ((antal> maks)); derefter
max=$antal
være
Færdig

# Udskriv den maksimale værdi

echo Det maksimale element i arrayet er: $max

Forklaring:

  1. ` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. ` matrix=(3 56 24 89 67) `: Arrayet erklæres og initialiseres med værdier.
  3. ` max=${array[0]} `: `max` initialiseres med det første element i arrayet.
  4. ` for num i ${array[@]}; gør `: En `for`-løkke bruges til at iterere gennem elementerne i arrayet.
  5. ` if ((antal> maks)); derefter `: En `if`-sætning kontrollerer, om det aktuelle element `num` er større end det aktuelle maksimum `max`.
  6. ` max=$num`: Hvis`num ` er større end `max`, er `max` opdateret med værdien num.
  7. ` Færdig `: `For`-løkken er lukket.
  8. ` echo Det maksimale element i arrayet er: $max `: Endelig udskriver scriptet den maksimale værdi fundet i arrayet.
461

største antal

30) Skriv et script til at beregne summen af ​​elementer i et array.

#!/bin/bash

# Erklære et array

matrix=(1 65 22 19 94)

# Initialiser en variabel for at gemme summen

sum=0

# Iterér gennem arrayet og føj hvert element til summen

for num i ${array[@]}; gør
am=$((am + am))
Færdig

# Udskriv summen

echo Summen af ​​elementer i arrayet er: $sum

Forklaring:

` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.

` matrix=(1 65 22 19 94) `: Arrayet erklæres og initialiseres med værdier.

` sum=0 `:` sum ` initialiseres til nul for at holde summen af ​​elementer.

` for num i ${array[@]}; gør `: A ` til ` loop bruges til at iterere gennem elementerne i arrayet.

` am=$((am + am)) `: Inde i løkken, hvert element ` på en ` tilføjes til ` sum ` variabel.

` Færdig `: Den ` til ` sløjfen er lukket.

`echo Summen af ​​elementer i arrayet er: $sum`: Til sidst udskriver scriptet summen af ​​alle elementer i arrayet.

462

Summen af ​​elementer

Få mere at vide om Shell-scripts

Konklusion

Vi ved alle nørder, at shell-script er meget nyttigt for at øge arbejdsproduktiviteten såvel som det sparer tid. Så i denne artikel har vi dækket 30 meget nyttige og mest besnærende shell-scripts eksempler . Vi håber, at denne komplette vejledning om shell-scripting-eksempel hjælper dig med at forstå alt om shell-scripts.




udgang 1
være
ping -c 4 $host

hvis [$? -ækv 0]; derefter
echo $host er tilgængelig.
andet
echo $host er ikke tilgængelig.
være

Forklaring:

  1. Den tager et værtsnavn eller IP-adresse som argument og kontrollerer, om argumentet er angivet.
  2. Hvis der ikke er angivet noget argument, viser det en brugsmeddelelse og afsluttes.
  3. Den bruger ping-kommandoen med -c 4-indstillingen til at sende fire ICMP-ekko-anmodninger til den angivne vært.
  4. Efter at ping-kommandoen er kørt, kontrollerer den exit-statussen ($?). Hvis exit-statussen er 0, betyder det, at værten er tilgængelig, og scriptet udskriver en succesmeddelelse. Ellers udskriver den en fejlmeddelelse.

456

Bemærk : Vi skal angive et værtsnavn som argument, når vi kører scriptet. Her har vi brugt google.com

29) Skriv et Shell-script for at finde det største element i et array:

Her er et shell-script til at finde det bedste element i et array.

java design mønster

#!/bin/bash
# Erklære et array
matrix=(3 56 24 89 67)

# Initialiser en variabel for at gemme den maksimale værdi, startende med det første element

max=${array[0]}

# Iterér gennem arrayet

for num i ${array[@]}; gør

# Sammenlign hvert element med det aktuelle maksimum

if ((antal> maks)); derefter
max=$antal
være
Færdig

# Udskriv den maksimale værdi

echo Det maksimale element i arrayet er: $max

Forklaring:

  1. ` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.
  2. ` matrix=(3 56 24 89 67) `: Arrayet erklæres og initialiseres med værdier.
  3. ` max=${array[0]} `: `max` initialiseres med det første element i arrayet.
  4. ` for num i ${array[@]}; gør `: En `for`-løkke bruges til at iterere gennem elementerne i arrayet.
  5. ` if ((antal> maks)); derefter `: En `if`-sætning kontrollerer, om det aktuelle element `num` er større end det aktuelle maksimum `max`.
  6. ` max=$num`: Hvis`num ` er større end `max`, er `max` opdateret med værdien num.
  7. ` Færdig `: `For`-løkken er lukket.
  8. ` echo Det maksimale element i arrayet er: $max `: Endelig udskriver scriptet den maksimale værdi fundet i arrayet.
461

største antal

30) Skriv et script til at beregne summen af ​​elementer i et array.

#!/bin/bash

# Erklære et array

matrix=(1 65 22 19 94)

# Initialiser en variabel for at gemme summen

sum=0

# Iterér gennem arrayet og føj hvert element til summen

for num i ${array[@]}; gør
am=$((am + am))
Færdig

# Udskriv summen

echo Summen af ​​elementer i arrayet er: $sum

Forklaring:

` #!/bin/bash `: Shebang-linjen angiver, at scriptet skal fortolkes ved hjælp af Bash-skallen.

` matrix=(1 65 22 19 94) `: Arrayet erklæres og initialiseres med værdier.

` sum=0 `:` sum ` initialiseres til nul for at holde summen af ​​elementer.

` for num i ${array[@]}; gør `: A ` til ` loop bruges til at iterere gennem elementerne i arrayet.

` am=$((am + am)) `: Inde i løkken, hvert element ` på en ` tilføjes til ` sum ` variabel.

` Færdig `: Den ` til ` sløjfen er lukket.

`echo Summen af ​​elementer i arrayet er: $sum`: Til sidst udskriver scriptet summen af ​​alle elementer i arrayet.

462

Summen af ​​elementer

Få mere at vide om Shell-scripts

Konklusion

Vi ved alle nørder, at shell-script er meget nyttigt for at øge arbejdsproduktiviteten såvel som det sparer tid. Så i denne artikel har vi dækket 30 meget nyttige og mest besnærende shell-scripts eksempler . Vi håber, at denne komplette vejledning om shell-scripting-eksempel hjælper dig med at forstå alt om shell-scripts.