logo

Shell Script eksempler

For alle Linux-distribusjonene er shell-skriptet som en tryllestav som automatiserer prosessen, sparer brukere tid og øker produktiviteten. Denne skal-skriptopplæringen vil introdusere deg til 25 pluss-skal-skripteksemplene.

Men før vi går over til temaet shell scripting eksempler, la oss forstå shell script og de faktiske brukstilfellene av shell scripting.



Hva er Shell Script?

Vel, skallet er en CLI ( kommandolinjetolk ), som kjører i et tekstvindu der brukere kan administrere og utføre skallkommandoer. På den annen side, prosessen med å skrive et sett med kommandoer som skal utføres på et Linux-system. En fil som inneholder slike instruksjoner kalles et bash-skript.

Bruk av Shell-skript

Nedenfor er noen vanlige bruksområder for Shell Script:

  • Oppgaveautomatisering – Den kan brukes til å automatisere repeterende oppgaver som vanlige sikkerhetskopier og programvareinstallasjonsoppgaver.
  • Tilpasning – Man kan bruke shell-skript for å designe kommandolinjemiljøet og enkelt utføre oppgaven etter behov.
  • Filbehandling - Skallskriptene kan også brukes til å administrere og manipulere filer og kataloger, for eksempel å flytte, kopiere, gi nytt navn eller slette filer.

Shell Script eksempler i Linux

1) Hva indikerer shebang (#!) i begynnelsen av et skallskript?

De shebang (#!) i begynnelsen av et skript indikerer tolken som skal brukes til å utføre skriptet. Den forteller systemet hvilket skall eller tolk som skal tolke skriptets kommandoer.



For eksempel: Anta at vi har et skript som heter myscript.sh skrevet i Bash-skallet:

css sentrering av et bilde
shebang

shebang

I dette eksemplet:



  • #!/bin/bash i begynnelsen av skriptet indikerer at skriptet skal tolkes med Bash-skallet.
  • Ekkokommandoene brukes til å skrive ut meldinger til terminalen.

2) Hvordan kjører du et shell-skript fra kommandolinjen?

For å kjøre et skallskript fra kommandolinjen, må vi følge disse trinnene:

  • Sørg for at skriptfilen har kjørbare tillatelser ved å bruke chmod kommando :
chmod +x myscript.sh>
  • Kjør skriptet med filnavnet:
./myscript.sh>

Her må du bytte ut myscrtipt.sh med ditt manusnavn.

3) Skriv et shell-script som skriver ut techcodeview.com til terminalen.

Opprett et skriptnavn `myscript.sh` (vi bruker ` fordi ` editor, du kan velge hvilken som helst editor)

vim myscript.sh>

#!/bin/bash
# Dette skriptet skriver ut techcodeview.com til terminalen
echo techcodeview.com

skrive ut navn

skrive ut navn

Vi gjør skriptet vårt kjørbart ved å bruke `chmod +x` og kjør deretter med `./myscipt.sh` og få ønsket utdata techcodeview.com.

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

De ekko kommando brukes til å vise tekst eller variabler på terminalen. Det brukes ofte til å skrive ut meldinger, variable verdier og generere programutdata.

434

ekko kommando

I dette eksemplet har vi kjørt 'echo' direkte på terminal, siden det fungerer på samme måte i shell-skriptet.

5) Hvordan kan du tilordne en verdi til en variabel i et shell-skript?

Variabler tildeles verdier ved å bruke tilordningsoperatoren =.

For eksempel:

#!/bin/bash
# Tilordne en verdi til en variabel
navn=Jayesh
alder=21
echo $navn $age

Forklaring:

  • Navnevariabelen tildeles verdien Jayesh.
  • Aldersvariabelen tildeles verdien 21.
  • echo brukes til å skrive ut og `$name` `$age` brukes til å kalle verdien som er lagret i variablene.

435

6) Skriv et shell-skript som tar en brukers navn som input og hilser dem velkommen.

Opprett et skriptnavn `example.sh`.

#!/bin/bash
# Spør brukeren om navnet
echo Hva heter du?
lese navn
# Hils brukeren
echo Hei, $navn! Hyggelig å møte deg.

Forklaring:

  • #!/bin/bash: Dette er shebang-linjen. Det forteller systemet å bruke Bash-tolken til å utføre skriptet.
  • # Spør brukeren om navnet sitt: Dette er en kommentar. Det gir kontekst om den kommende koden. Kommentarer ignoreres av tolken.
  • echo Hva heter du?: Ekko-kommandoen brukes til å vise teksten i doble anførselstegn på terminalen.
  • read name: Read-kommandoen venter på at brukeren skal legge inn tekst og lagrer den i variabelnavnet.
  • echo Hei, $navn! Hyggelig å møte deg.: Denne linjen bruker ekko-kommandoen til å skrive ut en hilsen som inkluderer verdien av navnevariabelen, som ble samlet inn fra brukerens input.

436

7) Hvordan legger du til kommentarer til et shell-skript?

Kommentarer i shell scripting brukes til å gi forklaringer eller kontekst til koden. De blir ignorert av tolken og er kun ment for mennesker som leser manuset. Du kan legge til kommentarer ved å bruke #-symbolet.

#!/bin/bash
# Dette er en kommentar som forklarer formålet med manuset
ekko gfg

8) Lag et shell-script som sjekker om det finnes en fil i gjeldende katalog.

Her er et skript som sjekker om en fil med navnet example.txt finnes i gjeldende katalog:

#!/bin/bash
file=example.txt
# Sjekk om filen eksisterer
if [ -e $fil ]; deretter
echo Filen eksisterer: $file
ellers
echo Fil ikke funnet: $file
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
  2. file=example.txt: Denne linjen definerer variabelfilen og tilordner verdien example.txt til den. Du kan erstatte dette med navnet på filen du vil se etter.
  3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Betingelsen [ -e $file ] sjekker om filen spesifisert av verdien til filvariabelen eksisterer. -e-flagget brukes til å sjekke om filen eksisterer.
  4. echo File exists: $file: Hvis betingelsen er sann (dvs. filen eksisterer), skriver denne linjen ut en melding som indikerer at filen eksisterer, sammen med filens navn.
  5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), kjører skriptet koden under else-grenen.
  6. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet, sammen med filens navn.
  7. fi: Denne linjen markerer slutten på if-setningen.
Finner fil

Finner fil

9) Hva er forskjellen mellom enkle anførselstegn (') og doble anførselstegn () i shell-scripting?

Enkelte anførselstegn (') og doble anførselstegn () brukes til å omslutte strenger i shell-scripting, men de har forskjellig oppførsel:

  • Enkeltsitater: Alt mellom enkeltsitater behandles som en bokstavelig streng. Variabelnavn og de fleste spesialtegn utvides ikke.
  • Doble anførselstegn: Variabler og visse spesialtegn innenfor doble anførselstegn utvides. Innholdet er underlagt variabel substitusjon og kommandosubstitusjon.

#!/bin/bash

abcd=Hei
ekko '$abcd' # Utgang: $abcd
echo $abcd # Utgang: Hei

10) Hvordan kan du bruke kommandolinjeargumenter i et shell-skript?

Kommandolinjeargumenter er verdier gitt til et skript når det kjøres. De kan nås i skriptet ved å bruke spesielle variabler som , , etc., der representerer det første argumentet, representerer det andre argumentet, og så videre.

For eksempel: Hvis skriptnavnet vårt i `example.sh`

#!/bin/bash

echo Skriptnavn:

For alle Linux-distribusjonene er shell-skriptet som en tryllestav som automatiserer prosessen, sparer brukere tid og øker produktiviteten. Denne skal-skriptopplæringen vil introdusere deg til 25 pluss-skal-skripteksemplene.

Men før vi går over til temaet shell scripting eksempler, la oss forstå shell script og de faktiske brukstilfellene av shell scripting.

Hva er Shell Script?

Vel, skallet er en CLI ( kommandolinjetolk ), som kjører i et tekstvindu der brukere kan administrere og utføre skallkommandoer. På den annen side, prosessen med å skrive et sett med kommandoer som skal utføres på et Linux-system. En fil som inneholder slike instruksjoner kalles et bash-skript.

Bruk av Shell-skript

Nedenfor er noen vanlige bruksområder for Shell Script:

  • Oppgaveautomatisering – Den kan brukes til å automatisere repeterende oppgaver som vanlige sikkerhetskopier og programvareinstallasjonsoppgaver.
  • Tilpasning – Man kan bruke shell-skript for å designe kommandolinjemiljøet og enkelt utføre oppgaven etter behov.
  • Filbehandling - Skallskriptene kan også brukes til å administrere og manipulere filer og kataloger, for eksempel å flytte, kopiere, gi nytt navn eller slette filer.

Shell Script eksempler i Linux

1) Hva indikerer shebang (#!) i begynnelsen av et skallskript?

De shebang (#!) i begynnelsen av et skript indikerer tolken som skal brukes til å utføre skriptet. Den forteller systemet hvilket skall eller tolk som skal tolke skriptets kommandoer.

For eksempel: Anta at vi har et skript som heter myscript.sh skrevet i Bash-skallet:

shebang

shebang

I dette eksemplet:

  • #!/bin/bash i begynnelsen av skriptet indikerer at skriptet skal tolkes med Bash-skallet.
  • Ekkokommandoene brukes til å skrive ut meldinger til terminalen.

2) Hvordan kjører du et shell-skript fra kommandolinjen?

For å kjøre et skallskript fra kommandolinjen, må vi følge disse trinnene:

  • Sørg for at skriptfilen har kjørbare tillatelser ved å bruke chmod kommando :
chmod +x myscript.sh>
  • Kjør skriptet med filnavnet:
./myscript.sh>

Her må du bytte ut myscrtipt.sh med ditt manusnavn.

3) Skriv et shell-script som skriver ut techcodeview.com til terminalen.

Opprett et skriptnavn `myscript.sh` (vi bruker ` fordi ` editor, du kan velge hvilken som helst editor)

vim myscript.sh>

#!/bin/bash
# Dette skriptet skriver ut techcodeview.com til terminalen
echo techcodeview.com

skrive ut navn

skrive ut navn

Vi gjør skriptet vårt kjørbart ved å bruke `chmod +x` og kjør deretter med `./myscipt.sh` og få ønsket utdata techcodeview.com.

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

De ekko kommando brukes til å vise tekst eller variabler på terminalen. Det brukes ofte til å skrive ut meldinger, variable verdier og generere programutdata.

434

ekko kommando

I dette eksemplet har vi kjørt 'echo' direkte på terminal, siden det fungerer på samme måte i shell-skriptet.

5) Hvordan kan du tilordne en verdi til en variabel i et shell-skript?

Variabler tildeles verdier ved å bruke tilordningsoperatoren =.

For eksempel:

#!/bin/bash
# Tilordne en verdi til en variabel
navn=Jayesh
alder=21
echo $navn $age

Forklaring:

  • Navnevariabelen tildeles verdien Jayesh.
  • Aldersvariabelen tildeles verdien 21.
  • echo brukes til å skrive ut og `$name` `$age` brukes til å kalle verdien som er lagret i variablene.

435

6) Skriv et shell-skript som tar en brukers navn som input og hilser dem velkommen.

Opprett et skriptnavn `example.sh`.

#!/bin/bash
# Spør brukeren om navnet
echo Hva heter du?
lese navn
# Hils brukeren
echo Hei, $navn! Hyggelig å møte deg.

Forklaring:

  • #!/bin/bash: Dette er shebang-linjen. Det forteller systemet å bruke Bash-tolken til å utføre skriptet.
  • # Spør brukeren om navnet sitt: Dette er en kommentar. Det gir kontekst om den kommende koden. Kommentarer ignoreres av tolken.
  • echo Hva heter du?: Ekko-kommandoen brukes til å vise teksten i doble anførselstegn på terminalen.
  • read name: Read-kommandoen venter på at brukeren skal legge inn tekst og lagrer den i variabelnavnet.
  • echo Hei, $navn! Hyggelig å møte deg.: Denne linjen bruker ekko-kommandoen til å skrive ut en hilsen som inkluderer verdien av navnevariabelen, som ble samlet inn fra brukerens input.

436

7) Hvordan legger du til kommentarer til et shell-skript?

Kommentarer i shell scripting brukes til å gi forklaringer eller kontekst til koden. De blir ignorert av tolken og er kun ment for mennesker som leser manuset. Du kan legge til kommentarer ved å bruke #-symbolet.

#!/bin/bash
# Dette er en kommentar som forklarer formålet med manuset
ekko gfg

8) Lag et shell-script som sjekker om det finnes en fil i gjeldende katalog.

Her er et skript som sjekker om en fil med navnet example.txt finnes i gjeldende katalog:

#!/bin/bash
file=example.txt
# Sjekk om filen eksisterer
if [ -e $fil ]; deretter
echo Filen eksisterer: $file
ellers
echo Fil ikke funnet: $file
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
  2. file=example.txt: Denne linjen definerer variabelfilen og tilordner verdien example.txt til den. Du kan erstatte dette med navnet på filen du vil se etter.
  3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Betingelsen [ -e $file ] sjekker om filen spesifisert av verdien til filvariabelen eksisterer. -e-flagget brukes til å sjekke om filen eksisterer.
  4. echo File exists: $file: Hvis betingelsen er sann (dvs. filen eksisterer), skriver denne linjen ut en melding som indikerer at filen eksisterer, sammen med filens navn.
  5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), kjører skriptet koden under else-grenen.
  6. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet, sammen med filens navn.
  7. fi: Denne linjen markerer slutten på if-setningen.
Finner fil

Finner fil

9) Hva er forskjellen mellom enkle anførselstegn (') og doble anførselstegn () i shell-scripting?

Enkelte anførselstegn (') og doble anførselstegn () brukes til å omslutte strenger i shell-scripting, men de har forskjellig oppførsel:

  • Enkeltsitater: Alt mellom enkeltsitater behandles som en bokstavelig streng. Variabelnavn og de fleste spesialtegn utvides ikke.
  • Doble anførselstegn: Variabler og visse spesialtegn innenfor doble anførselstegn utvides. Innholdet er underlagt variabel substitusjon og kommandosubstitusjon.

#!/bin/bash

abcd=Hei
ekko '$abcd' # Utgang: $abcd
echo $abcd # Utgang: Hei

10) Hvordan kan du bruke kommandolinjeargumenter i et shell-skript?

Kommandolinjeargumenter er verdier gitt til et skript når det kjøres. De kan nås i skriptet ved å bruke spesielle variabler som $1, $2, etc., der $1 representerer det første argumentet, $2 representerer det andre argumentet, og så videre.

For eksempel: Hvis skriptnavnet vårt i `example.sh`

#!/bin/bash

echo Skriptnavn: $0
echo Første argument: $1
echo Andre argument: $2

Hvis vi kjører skriptet med `.example.sh hello_1 hello_2`, vil det sende ut:

kli argumenter

kli argumenter

11) Hvordan bruker du for-løkken til å iterere gjennom en liste med verdier?

Opprett et skriptnavn `example.sh`.

#!/bin/bash

frukt=(eple banan kirsebærdato)
for frukt i ${fruits[@]}; gjøre
echo Nåværende frukt: $fruit
ferdig

Forklaring:

`fruits=`-linjen lager en matrise kalt frukt med fire elementer: eple, banan, kirsebær og daddel.

  • for frukt i ${fruits[@]}; do: Denne linjen starter en for-løkke. Her er hva hver del betyr:
  • for frukt: Dette erklærer en løkkevariabel kalt frukt. I hver iterasjon av løkken vil frukt holde verdien av det gjeldende elementet fra frukt-arrayen.
  • ${fruits[@]}: Dette er en matriseutvidelse som tar alle elementene fra fruktmatrisen. ${…}-syntaksen sikrer at hvert element behandles som et separat element.
  • do: Dette nøkkelordet markerer begynnelsen av løkken.
  • echo Current fruit: $fruit: Inne i loopen bruker denne linjen echo-kommandoen for å vise gjeldende verdi av loop-variabelen fruit. Den skriver ut en melding som Current fruit: apple for hver frukt i matrisen.
  • ferdig: Dette nøkkelordet markerer slutten av løkken. Den forteller skriptet at loopen er ferdig.
for løkke

for løkke

12) Skriv et skallskript som beregner summen av heltall fra 1 til N ved hjelp av en løkke.

Opprett et skriptnavn `example.sh`.

#!/bin/bash

echo Skriv inn et tall (N):
les N
sum=0
for ((i=1; i<=$N; i++)); gjøre
sum=$((sum + i))
ferdig
ekko Summen av heltall fra 1 til $N er: $sum

Forklaring:
Skriptet starter med å be deg skrive inn et tall (N) ved å bruke read. Dette tallet vil avgjøre hvor mange ganger sløyfen kjøres.

  1. Variabelsummen initialiseres til 0. Denne variabelen vil holde styr på summen av heltall.
  2. For-løkken begynner med for (( i=1; i<=$N; i++ )). Denne sløyfestrukturen brukes til å gjenta et sett med handlinger et visst antall ganger, i dette tilfellet fra 1 til verdien av N.
  3. Inne i loopen skjer disse tingene:
    • i=1 setter løkkevariabelen i til 1 i begynnelsen av hver iterasjon.
    • Sløyfebetingelsen i<=$N sjekker om i fortsatt er mindre enn eller lik det gitte tallet N.
    • Hvis betingelsen er sann, utføres loop body.
    • sum=$((sum + i)) beregner den nye verdien av sum ved å legge til den nåværende verdien av i. Dette legger opp heltallene fra 1 til gjeldende i-verdi.
  4. Etter hver iterasjon øker i++ verdien av i med 1.
  5. Løkken fortsetter å kjøre til betingelsen i<=$N blir usann (når i blir større enn N).
  6. Når sløyfen er ferdig, viser skriptet summen av heltallene fra 1 til det angitte tallet N.

439

13) Lag et skript som søker etter et spesifikt ord i en fil og teller dets forekomster.

Opprett et skriptnavn `word_count.sh`

#!/bin/bash

echo Skriv inn ordet du vil søke etter:
les målord
echo Skriv inn filnavnet:
les filnavn
count=$(grep -o -w $target_word $filnavn | wc -l)
echo Ordet '$target_word' vises $count ganger i '$filnavn'.

Forklaring:

  • echo Skriv inn ordet det skal søkes etter:: Denne linjen viser en melding som ber brukeren skrive inn et ord de vil søke etter i en fil.
  • les målord: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt målord.
  • echo Skriv inn filnavnet:: Denne linjen viser en melding som ber brukeren skrive inn navnet på filen de vil søke i.
  • les filnavn: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt filnavn.
  • count=$(grep -o -w $målord $filnavn | wc -l): Denne linjen gjør hovedarbeidet med skriptet. La oss bryte det ned ytterligere:
    • grep -o -w $målord $filnavn: Denne delen av kommandoen søker etter forekomster av målordet i det angitte filnavnet. Alternativene -o og -w sørger for at kun hele ordtreff telles.
    • |: Dette er et rør som tar utdata fra forrige kommando og sender det som input til neste kommando.
    • wc -l: Denne delen av kommandoen bruker wc-kommandoen til å telle antall linjer i inngangen. Alternativet -l teller spesifikt linjene.
    • Hele kommandoen beregner antallet forekomster av target_word i filen og tilordner det antallet til variabelen count

441

14) Forklar forskjellene mellom standard utgang (stdout) og standardfeil (stderr).

Hovedforskjellen mellom standard utgang (stdout) og standardfeil (stderr) er som følger:

  • Standard utgang (stdout): Dette er standard utdatastrøm der en kommandos vanlige utgang går. Det vises på terminalen som standard. Du kan omdirigere den til en fil ved å bruke>.
  • Standardfeil (stderr): Dette er utdatastrømmen for feilmeldinger og advarsler. Det vises også på terminalen som standard. Du kan omdirigere den til en fil ved å bruke 2>.

15) Forklar konseptet med betingede utsagn i shell-scripting.

Betingede utsagn i shell-scripting tillate oss å ta avgjørelser og kontrollere flyten av skriptet vårt basert på visse forhold. De gjør det mulig for skriptet vårt å utføre forskjellige sett med kommandoer avhengig av om en bestemt betingelse er sann eller usann. De primære betingede setningene i shell-scripting er if-setningen, elif-setningen (valgfritt) og else-setningen (valgfritt).

Her er den grunnleggende strukturen til en betinget uttalelse i shell-scripting:

if [betingelse]; deretter
# Kommandoer som skal utføres hvis betingelsen er sann
elif [en annen_tilstand]; deretter
# Kommandoer som skal utføres hvis another_condition er sann (valgfritt)
ellers
# Kommandoer som skal utføres hvis ingen av betingelsene er sanne (valgfritt)
være

Forklaring:

  • [ condition ] = Kommando som evaluerer betingelsen og returnerer en sann (0) eller falsk (ikke-null) utgangsstatus.
  • then = Det er et nøkkelord som indikerer at kommandoene etter det vil bli utført hvis betingelsen evalueres til sann.
  • elif = (forkortelse for else if) Det er en del som lar oss spesifisere ytterligere betingelser for å sjekke.
  • else = det er en seksjon som inneholder kommandoer som vil bli utført hvis ingen av betingelsene er sanne.
  • fi = Det er et nøkkelord som markerer slutten på den betingede blokken.

16) Hvordan leser du linjer fra en fil i et shell-skript?

Til lese linjer fra en fil i et shell-skript kan vi bruke forskjellige metoder, men en vanlig tilnærming er å bruke en while-løkke i kombinasjon med read-kommandoen. Slik kan vi gjøre det:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Sjekk om filen eksisterer
if [ -e $fil ]; deretter
mens IFS= read -r line; gjøre
echo Line read: $line
# Legg til behandlingslogikken din her
ferdig <$fil
ellers
echo Fil ikke funnet: $file
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
  2. file=/home/jayeshkumar/jayesh.txt: Denne linjen definerer variabelfilen og tildeler hele banen til filen jayesh.txt i /home/jayeshkumar-katalogen. Endre denne banen for å matche den faktiske banen til filen du vil lese.
  3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Den sjekker om filen spesifisert av variabelen $file eksisterer. -e-flagget sjekker om filen eksisterer.
  4. mens IFS= read -r line; do: Denne linjen starter en while-løkke som leser linjer fra filen.
    • IFS=: IFS (Internal Field Separator) er satt til en tom verdi for å bevare innledende og etterfølgende mellomrom.
    • les -r linje: Dette leser gjeldende linje fra filen og lagrer den i variabellinjen.
  5. echo Line read: $line: Denne linjen skriver ut innholdet i linjen som ble lest fra filen. Variabelen $line inneholder gjeldende linjes innhold.
  6. # Legg til behandlingslogikken din her: Dette er en plassholderkommentar der du kan legge til din egen logikk for å behandle hver linje. Du kan for eksempel analysere linjen, trekke ut informasjon eller utføre spesifikke handlinger basert på innholdet.
  7. done <$file: Dette markerer slutten på while-løkken. < $filen omdirigerer innholdet i filen som skal leses av loopen.
  8. else: Hvis filen ikke eksisterer (betingelsen i if-setningen er usann), kjører skriptet koden under else-grenen.
  9. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet.
  10. fi: Denne linjen markerer slutten på if-setningen.
lese fil

lese fil

Her brukte vi ` pwd ` kommando for å få banen til gjeldende katalog.

17) Skriv en funksjon i et skallskript som beregner faktoren til et gitt tall.

Her er manuset somberegne faktorenav et gitt tall.

#!/bin/bash
# Definer en funksjon for å beregne faktorial
beregne_faktor() {
num=$1
fakta=1
for ((i=1; i<=antall; i++)); gjøre
fakta=$((fakta * i))
ferdig
ekko $fakta
}
# Be brukeren om å angi et nummer
echo Skriv inn et tall:
les input_num
# Kall calculate_fatorial-funksjonen med inndatanummeret
factorial_result=$(calculate_fatorial $input_num)
# Vis det faktorielle resultatet
echo Factorial av $input_num er: $factorial_result

Forklaring:

  1. Skriptet starter med shebang-linjen #!/bin/bash for å spesifisere tolken.
  2. calculate_fatorial() er definert som en funksjon. Det krever ett argument, num, som er tallet som faktoren må beregnes for.
  3. Inne i funksjonen initialiseres fakta til 1. Denne variabelen vil lagre det faktorielle resultatet.
  4. For-løkken itererer fra 1 til det gitte tallet (num). I hver iterasjon multipliserer den gjeldende faktaverdi med loopindeksen i.
  5. Etter at løkken er fullført, inneholder faktavariabelen den beregnede faktoren.
  6. Skriptet ber brukeren om å skrive inn et tall ved hjelp av read.
  7. Beregn_faktorfunksjonen kalles med det brukerangitte tallet, og resultatet lagres i variabelen faktorielt_resultat.
  8. Til slutt viser skriptet det beregnede faktorielle resultatet.
Faktoriell

Faktoriell

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

I et shell-skript kan du håndtere signaler som Ctrl+C (også kjent som SIGINT) ved å bruke trap-kommandoen. Ctrl+C genererer et SIGINT-signal når brukeren trykker på det for å avbryte det kjørende skriptet eller programmet. Ved å bruke trap-kommandoen kan du spesifisere handlinger som skal utføres når et bestemt signal mottas. Slik håndterer du signaler som Ctrl+C i et skallskript:

#!/bin/bash
rydde opp() {
ekko Skriptet avbrutt. Utfører opprydding …
# Legg til oppryddingshandlingene dine her
utgang 1
}
# Sett opp en felle for å kalle opp rensefunksjonen når Ctrl+C (SIGINT) mottas
felleopprydding SIGINT
# Resten av manuset ditt
ekko kjører...
sove 10
ekko Fullført.

Håndtering av signaler er viktig for å gjøre skript robuste og sikre at de håndterer uventede avbrudd på en elegant måte. Du kan tilpasse oppryddingsfunksjonen for å matche dine spesifikke behov, som å lukke filer, stoppe prosesser eller logge informasjon før skriptet avsluttes.

Forklaring:

  1. #!/bin/bash: Denne shebang-linjen spesifiserer tolken som skal brukes for å kjøre skriptet.
  2. cleanup() { … }: Dette definerer en funksjon som heter cleanup. Inne i denne funksjonen kan du inkludere alle handlinger som må utføres når skriptet blir avbrutt, for eksempel å lukke filer, frigjøre ressurser eller utføre andre oppryddingsoppgaver.
  3. trap cleanup SIGINT: Trappe-kommandoen brukes til å sette opp en signalbehandler. I dette tilfellet spesifiserer det at når SIGINT-signalet (Ctrl+C) mottas, skal oppryddingsfunksjonen utføres.
  4. echo Running…, sleep 10, echo Finished.: Dette er bare eksempelkommandoer for å simulere kjøringen av et skript.

446

19) Lag et skript som ser etter og fjerner dupliserte linjer i en tekstfil.

Her er linux-skriptet vårt der vi fjerner dupliserte linjer fra en tekstfil.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sorter $input_file | uniq> $output_file
echo Dupliserte linjer ble fjernet.

Forklaring:

  1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at skriptet skal tolkes ved hjelp av Bash-skallet.
  2. Variabelen input_file er satt til navnet på inputfilen som inneholder dupliserte linjer (endre dette til ditt faktiske inputfilnavn).
  3. Variabelen output_file er satt til navnet på utdatafilen der duplikatene vil bli fjernet (endre dette til ønsket utdatafilnavn).
  4. Skriptet bruker sorteringskommandoen til å sortere linjene i inndatafilen. Sortering av linjene sikrer at dupliserte linjer grupperes sammen.
  5. De sorterte linjene sendes deretter gjennom uniq-kommandoen, som fjerner påfølgende dupliserte linjer. Utdataene fra denne prosessen blir omdirigert til utdatafilen.
  6. Etter at duplikatene er fjernet, skriver skriptet ut en suksessmelding.
duplikatlinjefjerning

duplikatlinjefjerning

Her bruker vi ` katt ` for å vise teksten inne i tekstfilen.

20) Skriv et skript som genererer et sikkert tilfeldig passord.

Her er skriptet vårt for å generere et sikkert tilfeldig passord.

#!/bin/bash
# Funksjon for å generere et tilfeldig passord
generere_passord() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Ring opp funksjonen og lagre det genererte passordet
passord=$(generer_passord)
echo Generert passord: $password

Merk: Brukeren kan følgelig endre lengden på passordet ved å erstatte tallet '12'.

Forklaring:

  1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at det skal tolkes med Bash-skallet.
  2. Generer_passord-funksjonen er definert for å generere et tilfeldig passord. Slik fungerer det:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 deler de filtrerte tilfeldige dataene i linjer med bredde på 12 tegn hver.
    • head -n 1 velger den første linjen, og gir oss faktisk en tilfeldig sekvens av tegn med lengde 12.
  3. Passordvariabelen tildeles resultatet av å kalle generere_passord-funksjonen.
  4. Til slutt vises det genererte passordet ved hjelp av ekko.

448

21) Skriv et shell-script som beregner den totale størrelsen på alle filene i en katalog.

Her er et shell-skript for å beregne den totale størrelsen på alle filene i en katalog.

#!/bin/bash
katalog=/bane/til/din/katalog
total_size=$(du -csh $katalog | grep total | awk ‘{print $1}’)
echo Total størrelse på filer i $katalog: $total_size

Forklaring:

  1. Skriptet starter med #!/bin/bash shebang, noe som indikerer at det skal tolkes med Bash-skallet.
  2. Katalogvariabelen er satt til banen til katalogen du vil beregne den totale filstørrelsen for. Erstatt /bane/til/din/katalog med den faktiske banen.
  3. Du-kommandoen brukes til å beregne filplassbruk. Alternativene som brukes er:
    • -c: Produser en totalsum.
    • -s: Vis kun den totale størrelsen på den angitte katalogen.
    • -h: Utskriftsstørrelser i et format som kan leses av mennesker (f.eks. KB, MB, GB).
  4. Utdataene fra du sendes til grep total for å filtrere ut linjen som inneholder den totale størrelsen.
  5. awk '{print $1}' brukes til å trekke ut det første feltet (total størrelse) fra linjen.
  6. Den beregnede totale størrelsen lagres i variabelen total_size.
  7. Til slutt viser skriptet den totale størrelsen ved hjelp av ekko.
Total størrelse på filer

Total størrelse på filer

Her brukte vi ` pwd ` kommando for å se gjeldende katalogbane.

22) Forklar forskjellen mellom if- og elif-setninger i shell-scripting.

Trekk `hvis` Staiftement `elif`-uttalelse
Hensikt Forklar forskjellen mellom if- og elif-setninger i shell-scripting. Gir alternative betingelser for å sjekke når den innledende hvis betingelsen er falsk.
bruk Brukt til den opprinnelige tilstanden. Brukes etter den opprinnelige tilstanden for å sjekke ytterligere forhold.
antall blokker Kan bare ha én hvis blokk. Kan ha flere elif-blokker, men bare én annen blokk (valgfritt).
Henrettelse Utfører kodeblokken knyttet til if-setningen hvis betingelsen er sann. Hvis betingelsen er usann, utføres else-blokken (hvis den finnes) (valgfritt). Sjekker hver elif-tilstand i rekkefølge. Hvis en elif-betingelse er sann, blir den tilsvarende kodeblokken utført, og skriptet avslutter hele den betingede blokken. Hvis ingen av elif-betingelsene er sanne, blir else-blokken (hvis tilstede) utført.
Nestede strukturer Kan nestes i andre if-, elif- eller else-blokker. Kan ikke nestes i en annen elif-blokk, men kan brukes i en if eller else-blokk.

La oss forstå det med et eksempel.

#!/bin/bash
tall=5
if [ $nummer -gt 10 ]; deretter
ekko $nummer er større enn 10
ellers
echo $nummer er ikke større enn 10
være
ekko ---
if [ $nummer -gt 10 ]; deretter
ekko $nummer er større enn 10
elif [$nummer -eq 10 ]; deretter
ekko $nummer er lik 10
ellers
ekko $nummer er mindre enn 10
være

Forklaring:

I dette eksemplet sjekker den første if-blokken om tallet er større enn 10. Hvis ikke, skriver den ut en melding som indikerer at tallet ikke er større enn 10. Den andre blokken med elif-setninger sjekker flere betingelser sekvensielt til en av dem er sann. I dette tilfellet, siden verdien av tallet er 5, vil utgangen være:

if_elif forskjell

if_elif forskjell

23) Hvordan bruker du en while-løkke til å utføre kommandoer gjentatte ganger?

En while-løkke brukes i shell-skripting for å gjentatte ganger utføre et sett med kommandoer så lenge en spesifisert betingelse er sann. Løkken fortsetter å utføre kommandoene til betingelsen blir falsk.

Her er den grunnleggende syntaksen til en while-løkke:

while [betingelse]; gjøre
# Kommandoer som skal utføres
ferdig

Forklaring:

  1. `while`-løkken starter med nøkkelordet `while` etterfulgt av en betingelse omsluttet av hakeparenteser `[ ]`.
  2. Sløyfens hoveddel, som inneholder kommandoene som skal utføres, er omsluttet av nøkkelordene 'do' og 'done'.
  3. Løkken sjekker først tilstanden. Hvis betingelsen er sann, utføres kommandoene i løkkelegemet. Etter at loop-kroppen er utført, kontrolleres betingelsen igjen, og prosessen gjentas til betingelsen blir falsk.

Eksempel: Hvis vi ønsker å skrive ut tall fra 1 til 5

#!/bin/bash
teller=1
while [ $counter -le 5 ]; gjøre
ekkonummer: $counter
teller=$((teller + 1))
ferdig

Forklaring:

  • Tellervariabelen er satt til 1.
  • While-løkken sjekker om verdien til telleren er mindre enn eller lik 5. Så lenge denne betingelsen er sann, fortsetter løkken å kjøre.
  • Inne i sløyfen skrives gjeldende verdi av telleren ved bruk av ekko.
  • Telleren økes med 1 ved å bruke uttrykket $((teller + 1)).
mens loop

mens loop

24) Lag et shell-skript som finner og viser alle tomme filer i en katalog.

Shell-skript som du kan bruke til å finne og liste alle tomme filer i en katalog ved å bruke kommandoene `finn` og `stat`:

#!/bin/bash
katalog=$1″
if [ -z $katalog ]; deretter
ekkobruk: $0
utgang 1
være

hvis [! -d $katalog ]; deretter
echo Error: '$directory' er ikke en gyldig katalog.
utgang 1
være
echo tomme filer i $katalogen:
finn $katalog -type f -tom

Forklaring:

  1. ` #!/bin/bash `: Dette kalles en shebang, og det forteller operativsystemet å bruke Bash-skallet til å tolke og utføre skriptet.
  2. ` katalog=$1″ `: Denne linjen tildeler det første kommandolinjeargumentet (angitt med $1) til variabelen ` katalog `.
  3. ` if [ -z $katalog ]; deretter `: Denne linjen starter en if-setning som sjekker om ` katalog ` variabelen er tom (-z tester for en tom streng).
  4. ` ekkobruk: $0 `: Hvis katalogen er tom, skriver denne linjen ut en bruksmelding, hvor ` $0 ` representerer skriptets navn.
  5. ` utgang 1 `: Denne linjen avslutter skriptet med en utgangskode på ` 1 `, som indikerer en feil.
  6. ` være `: Denne linjen markerer slutten på ` hvis ` uttalelse.
  7. ` hvis [! -d $katalog ]; deretter `: Dette starter en annen if-setning for å sjekke om den oppgitte katalogen eksisterer (` -d ` tester for en katalog).
  8. ` echo Error: '$directory' er ikke en gyldig katalog. `: Hvis den oppgitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
  9. ` utgang 1 `: Går ut av skriptet med en utgangskode på ` 1 `.
  10. ` være `: Markerer slutten på den andre ` hvis` uttalelse.
  11. ` echo tomme filer i $katalogen: `: Hvis alt er gyldig så langt, skriver denne linjen ut en melding som indikerer at skriptet vil vise tomme filer i den angitte katalogen.
  12. ` finn $katalog -type f -tom `: Denne linjen bruker ` finne ` kommando for å søke etter tomme filer (` -tømme `) av typen vanlige filer (` -type f `) i den angitte katalogen. Den viser deretter disse tomme filene.
Finner tomme filer

Finner tomme filer

Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/

25) Hva er hensikten med read-kommandoen i shell-scripting?

Les-kommandoen i shell-scripting lar skriptet spørre deg om informasjon. Det er som når en datamaskin stiller deg et spørsmål og venter på svaret ditt. Dette er nyttig for skript som krever at du skriver noe eller når skriptet trenger å fungere med informasjon fra filer. Lese-kommandoen hjelper skriptet å stoppe og vente på det du skriver, og så kan det bruke den informasjonen til å gjøre flere ting i skriptet.

Syntaks for lesekommando:

read variable_name>

Eksempel : Hvis vi ønsker å ta navn som et input fra brukeren for å skrive det ut.

#!/bin/bash
echo Vennligst skriv inn navnet ditt:
lese navn
echo Hei, $navn!

453

les nam

Oppsummert brukes lesekommandoen til å fange opp brukerinndata eller data fra filer i shell-skript, noe som gjør skriptene mer interaktive og allsidige.

26) Skriv et shell-script som konverterer alle filnavn i en katalog til små bokstaver.

Her er et skallskript som konverterer alle filnavn i en katalog til små bokstaver.

#!/bin/bash
katalog=$1″
if [ -z $katalog ]; deretter
ekkobruk: $0
utgang 1
være

hvis [! -d $katalog ]; deretter

echo Error: '$directory' er ikke en gyldig katalog.
utgang 1
være

cd $katalog || utgang 1

for fil i *; gjøre
if [ -f $fil ]; deretter
newname=$(ekko $fil | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
være
ferdig

Forklaring:

  1. #!/bin/bash : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
  2. katalog=$1″ : Denne linjen tildeler det første kommandolinjeargumentet til variabelkatalogen.
  3. if [ -z $katalog ]; deretter : Denne linjen sjekker om katalogvariabelen er tom (ingen argument oppgitt når skriptet kjøres).
  4. ekkobruk: $0 : Hvis katalogen er tom, skriver denne linjen ut en bruksmelding med skriptets navn ($0).
  5. utgang 1 : Denne linjen går ut av skriptet med en utgangskode på 1, noe som indikerer at det har oppstått en feil.
  6. f i: Dette markerer slutten på den første if-setningen.
  7. hvis [! -d $katalog ]; deretter : Denne linjen sjekker om den angitte katalogen ikke eksisterer (-d tester for en katalog).
  8. echo Error: '$directory' er ikke en gyldig katalog. : Hvis den angitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
  9. utgang 1 : Går ut av skriptet med en utgangskode på 1.
  10. være : Markerer slutten av den andre if-setningen.
  11. cd $katalog || utgang 1 : Endrer gjeldende arbeidskatalog til spesifisert katalog. Hvis katalogendringen mislykkes (f.eks. ikke-eksisterende katalog), avsluttes skriptet med en feilkode.
  12. for fil i *; gjøre: Jeg for fil i *; gjøre: starter en løkke som itererer over alle elementer i gjeldende katalog (* samsvarer med alle filnavn).
  13. if [ -f $fil ]; deretter : Sjekker om gjeldende loop-iterasjonselement er en vanlig fil (-f tester for en vanlig fil).
  14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer gjeldende filnavn ($file) til små bokstaver ved å bruke tr-kommandoen og lagrer resultatet i newname-variabelen.
  15. [ $file != $newname ] && mv $file $newname : Sammenligner det opprinnelige filnavnet med det nye filnavnet med små bokstaver. Hvis de er forskjellige, gir den nytt navn til filen ved å bruke mv-kommandoen.
  16. være : Markerer slutten av den indre if-setningen.
  17. ferdig : Markerer slutten av løkken.

454

Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/test

27) Hvordan kan du bruke aritmetiske operasjoner i et skallskript?

Aritmetiske operasjoner kan utføres i et skallskript ved hjelp av ulike innebygde metoder. Skallet gir mekanismer for enkle aritmetiske beregninger ved bruk av aritmetisk utvidelse som:

  1. Aritmetisk utvidelse ($((...)))
  2. Bruke expr Command
  3. Bruk let Command

Her er vårt Shell-skript som forklarer alle tre metodene for aritmetiske operasjoner.

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

#Aritmetisk utvidelse ($((...)))

resultat=$((tall1 + tall2))
echo Sum: $resultat

#Bruk av kommandoen expr

sum=$(utløp $num1 + $num2)
echo Sum: $sum

#Bruke let Command

la sum = tall1 + tall2
echo Sum: $sum

Forklaring:

  1. `#!/bin/bash` : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
  2. `num1=10` og ` num2=5` : Disse linjene tildeler verdiene 10 og 5 til variablene ` nummer1 ` og ` nummer2 `, henholdsvis.
  3. `#Aritmetisk utvidelse ($((...)))` : Dette er en kommentar som indikerer starten på delen som viser aritmetisk utvidelse.
  4. `resultat=$((tall1 + tall2))` : Denne linjen bruker aritmetisk utvidelse for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` resultat ` variabel.
  5. `echo Sum: $result` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` resultat ` variabel.
  6. `#Using expr Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` uttr ` kommando for aritmetiske operasjoner.
  7. `sum=$(uttr $num1 + $num2)` : Denne linjen bruker ` uttr ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` sum ` variabel. Merk at ` uttr ` kommando krever mellomrom rundt operatørene.
  8. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
  9. `#Bruke let Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` la ` kommando for aritmetiske operasjoner.
  10. `la sum = num1 + num2″` : Denne linjen bruker ` la ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og tildeler resultatet til ` sum ` variabel. Den ` la ` kommandoen krever ikke mellomrom rundt operatørene.
  11. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
aritmetikk

aritmetikk

28) Lag et skript som sjekker om en nettverksvert er tilgjengelig.

Her er et enkelt skallskript som bruker ping-kommandoen for å sjekke om en nettverksvert er tilgjengelig:

#!/bin/bash
vert=$1″
if [ -z $vert ]; deretter
ekkobruk: $0
utgang 1
være
ping -c 4 $vert

hvis [$? -eq 0]; deretter
echo $host er tilgjengelig.
ellers
echo $host er ikke tilgjengelig.
være

Forklaring:

  1. Den tar et vertsnavn eller IP-adresse som argument og sjekker om argumentet er oppgitt.
  2. Hvis ingen argumenter er oppgitt, viser den en bruksmelding og avsluttes.
  3. Den bruker ping-kommandoen med -c 4-alternativet for å sende fire ICMP-ekkoforespørsler til den angitte verten.
  4. Etter at ping-kommandoen kjører, sjekker den utgangsstatusen ($?). Hvis utgangsstatusen er 0, betyr det at verten er tilgjengelig og skriptet skriver ut en suksessmelding. Ellers skriver den ut en feilmelding.

456

Merk : Vi må oppgi et vertsnavn som argument når vi kjører skriptet. Her har vi brukt google.com

29) Skriv et Shell-skript for å finne det største elementet i en matrise:

Her er et skallskript for å finne det beste elementet i en matrise.

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

# Initialiser en variabel for å lagre maksimumsverdien, start med det første elementet

max=${array[0]}

# Iterer gjennom matrisen

for num i ${array[@]}; gjøre

# Sammenlign hvert element med gjeldende maksimum

if ((antall> maks)); deretter
maks=$antall
være
ferdig

# Skriv ut maksimumsverdien

echo Maksimumselementet i matrisen er: $max

Forklaring:

  1. ` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.
  2. ` array=(3 56 24 89 67) `: Matrisen er deklarert og initialisert med verdier.
  3. ` max=${array[0]} `: `max` initialiseres med det første elementet i matrisen.
  4. ` for num i ${array[@]}; gjøre `: En `for`-løkke brukes til å iterere gjennom elementene i matrisen.
  5. ` if ((antall> maks)); deretter `: En `if`-setning sjekker om det gjeldende elementet `num` er større enn gjeldende maksimum `max`.
  6. ` max=$num`: If`num ` er større enn `max`, `max` er oppdatert med verdien av num.
  7. ` ferdig `: `For`-sløyfen er lukket.
  8. ` echo Maksimumselementet i matrisen er: $max `: Til slutt skriver skriptet ut den maksimale verdien som finnes i matrisen.
461

største antall

30) Skriv et skript for å beregne summen av elementer i en matrise.

#!/bin/bash

# Deklarer en matrise

array=(1 65 22 19 94)

# Initialiser en variabel for å lagre summen

sum=0

# Iterer gjennom matrisen og legg til hvert element til summen

for num i ${array[@]}; gjøre
am=$((am + am))
ferdig

# Skriv ut summen

echo Summen av elementene i matrisen er: $sum

Forklaring:

` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.

` array=(1 65 22 19 94) `: Matrisen er deklarert og initialisert med verdier.

` sum=0 `:` sum ` initialiseres til null for å holde summen av elementer.

` for num i ${array[@]}; gjøre `: A ` til ` loop brukes til å iterere gjennom elementene i matrisen.

` am=$((am + am)) `: Inne i løkken, hvert element ` på en ` er lagt til ` sum ` variabel.

` ferdig `: Den ` til `-sløyfen er lukket.

`echo Summen av elementene i matrisen er: $sum`: Til slutt skriver skriptet ut summen av alle elementene i matrisen.

462

Summen av elementer

Finn ut mer om Shell-skript

Konklusjon

Vi alle nerder vet at shell-script er veldig nyttig for å øke arbeidsproduktiviteten, så vel som det sparer tid. Så i denne artikkelen har vi dekket 30 veldig nyttige og mest besnærende shell-skripteksempler . Vi håper at denne komplette veiledningen for eksempel på shell-skript hjelper deg med å forstå alt om shell-skriptene.




echo Første argument:
echo Andre argument:

Hvis vi kjører skriptet med `.example.sh hello_1 hello_2`, vil det sende ut:

kli argumenter

kli argumenter

11) Hvordan bruker du for-løkken til å iterere gjennom en liste med verdier?

Opprett et skriptnavn `example.sh`.

#!/bin/bash

frukt=(eple banan kirsebærdato)
for frukt i ${fruits[@]}; gjøre
echo Nåværende frukt: $fruit
ferdig

Forklaring:

`fruits=`-linjen lager en matrise kalt frukt med fire elementer: eple, banan, kirsebær og daddel.

  • for frukt i ${fruits[@]}; do: Denne linjen starter en for-løkke. Her er hva hver del betyr:
  • for frukt: Dette erklærer en løkkevariabel kalt frukt. I hver iterasjon av løkken vil frukt holde verdien av det gjeldende elementet fra frukt-arrayen.
  • ${fruits[@]}: Dette er en matriseutvidelse som tar alle elementene fra fruktmatrisen. ${…}-syntaksen sikrer at hvert element behandles som et separat element.
  • do: Dette nøkkelordet markerer begynnelsen av løkken.
  • echo Current fruit: $fruit: Inne i loopen bruker denne linjen echo-kommandoen for å vise gjeldende verdi av loop-variabelen fruit. Den skriver ut en melding som Current fruit: apple for hver frukt i matrisen.
  • ferdig: Dette nøkkelordet markerer slutten av løkken. Den forteller skriptet at loopen er ferdig.
for løkke

for løkke

12) Skriv et skallskript som beregner summen av heltall fra 1 til N ved hjelp av en løkke.

Opprett et skriptnavn `example.sh`.

#!/bin/bash

echo Skriv inn et tall (N):
les N
sum=0
for ((i=1; i<=$N; i++)); gjøre
sum=$((sum + i))
ferdig
ekko Summen av heltall fra 1 til $N er: $sum

Forklaring:
Skriptet starter med å be deg skrive inn et tall (N) ved å bruke read. Dette tallet vil avgjøre hvor mange ganger sløyfen kjøres.

  1. Variabelsummen initialiseres til 0. Denne variabelen vil holde styr på summen av heltall.
  2. For-løkken begynner med for (( i=1; i<=$N; i++ )). Denne sløyfestrukturen brukes til å gjenta et sett med handlinger et visst antall ganger, i dette tilfellet fra 1 til verdien av N.
  3. Inne i loopen skjer disse tingene:
    • i=1 setter løkkevariabelen i til 1 i begynnelsen av hver iterasjon.
    • Sløyfebetingelsen i<=$N sjekker om i fortsatt er mindre enn eller lik det gitte tallet N.
    • Hvis betingelsen er sann, utføres loop body.
    • sum=$((sum + i)) beregner den nye verdien av sum ved å legge til den nåværende verdien av i. Dette legger opp heltallene fra 1 til gjeldende i-verdi.
  4. Etter hver iterasjon øker i++ verdien av i med 1.
  5. Løkken fortsetter å kjøre til betingelsen i<=$N blir usann (når i blir større enn N).
  6. Når sløyfen er ferdig, viser skriptet summen av heltallene fra 1 til det angitte tallet N.

439

13) Lag et skript som søker etter et spesifikt ord i en fil og teller dets forekomster.

Opprett et skriptnavn `word_count.sh`

#!/bin/bash

echo Skriv inn ordet du vil søke etter:
les målord
echo Skriv inn filnavnet:
les filnavn
count=$(grep -o -w $target_word $filnavn | wc -l)
echo Ordet '$target_word' vises $count ganger i '$filnavn'.

Forklaring:

konvertering fra streng til int i java
  • echo Skriv inn ordet det skal søkes etter:: Denne linjen viser en melding som ber brukeren skrive inn et ord de vil søke etter i en fil.
  • les målord: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt målord.
  • echo Skriv inn filnavnet:: Denne linjen viser en melding som ber brukeren skrive inn navnet på filen de vil søke i.
  • les filnavn: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt filnavn.
  • count=$(grep -o -w $målord $filnavn | wc -l): Denne linjen gjør hovedarbeidet med skriptet. La oss bryte det ned ytterligere:
    • grep -o -w $målord $filnavn: Denne delen av kommandoen søker etter forekomster av målordet i det angitte filnavnet. Alternativene -o og -w sørger for at kun hele ordtreff telles.
    • |: Dette er et rør som tar utdata fra forrige kommando og sender det som input til neste kommando.
    • wc -l: Denne delen av kommandoen bruker wc-kommandoen til å telle antall linjer i inngangen. Alternativet -l teller spesifikt linjene.
    • Hele kommandoen beregner antallet forekomster av target_word i filen og tilordner det antallet til variabelen count

441

14) Forklar forskjellene mellom standard utgang (stdout) og standardfeil (stderr).

Hovedforskjellen mellom standard utgang (stdout) og standardfeil (stderr) er som følger:

  • Standard utgang (stdout): Dette er standard utdatastrøm der en kommandos vanlige utgang går. Det vises på terminalen som standard. Du kan omdirigere den til en fil ved å bruke>.
  • Standardfeil (stderr): Dette er utdatastrømmen for feilmeldinger og advarsler. Det vises også på terminalen som standard. Du kan omdirigere den til en fil ved å bruke 2>.

15) Forklar konseptet med betingede utsagn i shell-scripting.

Betingede utsagn i shell-scripting tillate oss å ta avgjørelser og kontrollere flyten av skriptet vårt basert på visse forhold. De gjør det mulig for skriptet vårt å utføre forskjellige sett med kommandoer avhengig av om en bestemt betingelse er sann eller usann. De primære betingede setningene i shell-scripting er if-setningen, elif-setningen (valgfritt) og else-setningen (valgfritt).

Her er den grunnleggende strukturen til en betinget uttalelse i shell-scripting:

if [betingelse]; deretter
# Kommandoer som skal utføres hvis betingelsen er sann
elif [en annen_tilstand]; deretter
# Kommandoer som skal utføres hvis another_condition er sann (valgfritt)
ellers
# Kommandoer som skal utføres hvis ingen av betingelsene er sanne (valgfritt)
være

Forklaring:

  • [ condition ] = Kommando som evaluerer betingelsen og returnerer en sann (0) eller falsk (ikke-null) utgangsstatus.
  • then = Det er et nøkkelord som indikerer at kommandoene etter det vil bli utført hvis betingelsen evalueres til sann.
  • elif = (forkortelse for else if) Det er en del som lar oss spesifisere ytterligere betingelser for å sjekke.
  • else = det er en seksjon som inneholder kommandoer som vil bli utført hvis ingen av betingelsene er sanne.
  • fi = Det er et nøkkelord som markerer slutten på den betingede blokken.

16) Hvordan leser du linjer fra en fil i et shell-skript?

Til lese linjer fra en fil i et shell-skript kan vi bruke forskjellige metoder, men en vanlig tilnærming er å bruke en while-løkke i kombinasjon med read-kommandoen. Slik kan vi gjøre det:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Sjekk om filen eksisterer
if [ -e $fil ]; deretter
mens IFS= read -r line; gjøre
echo Line read: $line
# Legg til behandlingslogikken din her
ferdig <$fil
ellers
echo Fil ikke funnet: $file
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
  2. file=/home/jayeshkumar/jayesh.txt: Denne linjen definerer variabelfilen og tildeler hele banen til filen jayesh.txt i /home/jayeshkumar-katalogen. Endre denne banen for å matche den faktiske banen til filen du vil lese.
  3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Den sjekker om filen spesifisert av variabelen $file eksisterer. -e-flagget sjekker om filen eksisterer.
  4. mens IFS= read -r line; do: Denne linjen starter en while-løkke som leser linjer fra filen.
    • IFS=: IFS (Internal Field Separator) er satt til en tom verdi for å bevare innledende og etterfølgende mellomrom.
    • les -r linje: Dette leser gjeldende linje fra filen og lagrer den i variabellinjen.
  5. echo Line read: $line: Denne linjen skriver ut innholdet i linjen som ble lest fra filen. Variabelen $line inneholder gjeldende linjes innhold.
  6. # Legg til behandlingslogikken din her: Dette er en plassholderkommentar der du kan legge til din egen logikk for å behandle hver linje. Du kan for eksempel analysere linjen, trekke ut informasjon eller utføre spesifikke handlinger basert på innholdet.
  7. done <$file: Dette markerer slutten på while-løkken. < $filen omdirigerer innholdet i filen som skal leses av loopen.
  8. else: Hvis filen ikke eksisterer (betingelsen i if-setningen er usann), kjører skriptet koden under else-grenen.
  9. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet.
  10. fi: Denne linjen markerer slutten på if-setningen.
lese fil

lese fil

Her brukte vi ` pwd ` kommando for å få banen til gjeldende katalog.

17) Skriv en funksjon i et skallskript som beregner faktoren til et gitt tall.

Her er manuset somberegne faktorenav et gitt tall.

#!/bin/bash
# Definer en funksjon for å beregne faktorial
beregne_faktor() {
num=
fakta=1
for ((i=1; i<=antall; i++)); gjøre
fakta=$((fakta * i))
ferdig
ekko $fakta
}
# Be brukeren om å angi et nummer
echo Skriv inn et tall:
les input_num
# Kall calculate_fatorial-funksjonen med inndatanummeret
factorial_result=$(calculate_fatorial $input_num)
# Vis det faktorielle resultatet
echo Factorial av $input_num er: $factorial_result

Forklaring:

  1. Skriptet starter med shebang-linjen #!/bin/bash for å spesifisere tolken.
  2. calculate_fatorial() er definert som en funksjon. Det krever ett argument, num, som er tallet som faktoren må beregnes for.
  3. Inne i funksjonen initialiseres fakta til 1. Denne variabelen vil lagre det faktorielle resultatet.
  4. For-løkken itererer fra 1 til det gitte tallet (num). I hver iterasjon multipliserer den gjeldende faktaverdi med loopindeksen i.
  5. Etter at løkken er fullført, inneholder faktavariabelen den beregnede faktoren.
  6. Skriptet ber brukeren om å skrive inn et tall ved hjelp av read.
  7. Beregn_faktorfunksjonen kalles med det brukerangitte tallet, og resultatet lagres i variabelen faktorielt_resultat.
  8. Til slutt viser skriptet det beregnede faktorielle resultatet.
Faktoriell

Faktoriell

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

I et shell-skript kan du håndtere signaler som Ctrl+C (også kjent som SIGINT) ved å bruke trap-kommandoen. Ctrl+C genererer et SIGINT-signal når brukeren trykker på det for å avbryte det kjørende skriptet eller programmet. Ved å bruke trap-kommandoen kan du spesifisere handlinger som skal utføres når et bestemt signal mottas. Slik håndterer du signaler som Ctrl+C i et skallskript:

#!/bin/bash
rydde opp() {
ekko Skriptet avbrutt. Utfører opprydding …
# Legg til oppryddingshandlingene dine her
utgang 1
}
# Sett opp en felle for å kalle opp rensefunksjonen når Ctrl+C (SIGINT) mottas
felleopprydding SIGINT
# Resten av manuset ditt
ekko kjører...
sove 10
ekko Fullført.

Håndtering av signaler er viktig for å gjøre skript robuste og sikre at de håndterer uventede avbrudd på en elegant måte. Du kan tilpasse oppryddingsfunksjonen for å matche dine spesifikke behov, som å lukke filer, stoppe prosesser eller logge informasjon før skriptet avsluttes.

Forklaring:

  1. #!/bin/bash: Denne shebang-linjen spesifiserer tolken som skal brukes for å kjøre skriptet.
  2. cleanup() { … }: Dette definerer en funksjon som heter cleanup. Inne i denne funksjonen kan du inkludere alle handlinger som må utføres når skriptet blir avbrutt, for eksempel å lukke filer, frigjøre ressurser eller utføre andre oppryddingsoppgaver.
  3. trap cleanup SIGINT: Trappe-kommandoen brukes til å sette opp en signalbehandler. I dette tilfellet spesifiserer det at når SIGINT-signalet (Ctrl+C) mottas, skal oppryddingsfunksjonen utføres.
  4. echo Running…, sleep 10, echo Finished.: Dette er bare eksempelkommandoer for å simulere kjøringen av et skript.

446

19) Lag et skript som ser etter og fjerner dupliserte linjer i en tekstfil.

Her er linux-skriptet vårt der vi fjerner dupliserte linjer fra en tekstfil.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sorter $input_file | uniq> $output_file
echo Dupliserte linjer ble fjernet.

Forklaring:

  1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at skriptet skal tolkes ved hjelp av Bash-skallet.
  2. Variabelen input_file er satt til navnet på inputfilen som inneholder dupliserte linjer (endre dette til ditt faktiske inputfilnavn).
  3. Variabelen output_file er satt til navnet på utdatafilen der duplikatene vil bli fjernet (endre dette til ønsket utdatafilnavn).
  4. Skriptet bruker sorteringskommandoen til å sortere linjene i inndatafilen. Sortering av linjene sikrer at dupliserte linjer grupperes sammen.
  5. De sorterte linjene sendes deretter gjennom uniq-kommandoen, som fjerner påfølgende dupliserte linjer. Utdataene fra denne prosessen blir omdirigert til utdatafilen.
  6. Etter at duplikatene er fjernet, skriver skriptet ut en suksessmelding.
duplikatlinjefjerning

duplikatlinjefjerning

Her bruker vi ` katt ` for å vise teksten inne i tekstfilen.

20) Skriv et skript som genererer et sikkert tilfeldig passord.

Her er skriptet vårt for å generere et sikkert tilfeldig passord.

#!/bin/bash
# Funksjon for å generere et tilfeldig passord
generere_passord() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Ring opp funksjonen og lagre det genererte passordet
passord=$(generer_passord)
echo Generert passord: $password

Merk: Brukeren kan følgelig endre lengden på passordet ved å erstatte tallet '12'.

Forklaring:

  1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at det skal tolkes med Bash-skallet.
  2. Generer_passord-funksjonen er definert for å generere et tilfeldig passord. Slik fungerer det:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 deler de filtrerte tilfeldige dataene i linjer med bredde på 12 tegn hver.
    • head -n 1 velger den første linjen, og gir oss faktisk en tilfeldig sekvens av tegn med lengde 12.
  3. Passordvariabelen tildeles resultatet av å kalle generere_passord-funksjonen.
  4. Til slutt vises det genererte passordet ved hjelp av ekko.

448

21) Skriv et shell-script som beregner den totale størrelsen på alle filene i en katalog.

Her er et shell-skript for å beregne den totale størrelsen på alle filene i en katalog.

#!/bin/bash
katalog=/bane/til/din/katalog
total_size=$(du -csh $katalog | grep total | awk ‘{print }’)
echo Total størrelse på filer i $katalog: $total_size

Forklaring:

  1. Skriptet starter med #!/bin/bash shebang, noe som indikerer at det skal tolkes med Bash-skallet.
  2. Katalogvariabelen er satt til banen til katalogen du vil beregne den totale filstørrelsen for. Erstatt /bane/til/din/katalog med den faktiske banen.
  3. Du-kommandoen brukes til å beregne filplassbruk. Alternativene som brukes er:
    • -c: Produser en totalsum.
    • -s: Vis kun den totale størrelsen på den angitte katalogen.
    • -h: Utskriftsstørrelser i et format som kan leses av mennesker (f.eks. KB, MB, GB).
  4. Utdataene fra du sendes til grep total for å filtrere ut linjen som inneholder den totale størrelsen.
  5. awk '{print }' brukes til å trekke ut det første feltet (total størrelse) fra linjen.
  6. Den beregnede totale størrelsen lagres i variabelen total_size.
  7. Til slutt viser skriptet den totale størrelsen ved hjelp av ekko.
Total størrelse på filer

Total størrelse på filer

Her brukte vi ` pwd ` kommando for å se gjeldende katalogbane.

22) Forklar forskjellen mellom if- og elif-setninger i shell-scripting.

Trekk `hvis` Staiftement `elif`-uttalelse
Hensikt Forklar forskjellen mellom if- og elif-setninger i shell-scripting. Gir alternative betingelser for å sjekke når den innledende hvis betingelsen er falsk.
bruk Brukt til den opprinnelige tilstanden. Brukes etter den opprinnelige tilstanden for å sjekke ytterligere forhold.
antall blokker Kan bare ha én hvis blokk. Kan ha flere elif-blokker, men bare én annen blokk (valgfritt).
Henrettelse Utfører kodeblokken knyttet til if-setningen hvis betingelsen er sann. Hvis betingelsen er usann, utføres else-blokken (hvis den finnes) (valgfritt). Sjekker hver elif-tilstand i rekkefølge. Hvis en elif-betingelse er sann, blir den tilsvarende kodeblokken utført, og skriptet avslutter hele den betingede blokken. Hvis ingen av elif-betingelsene er sanne, blir else-blokken (hvis tilstede) utført.
Nestede strukturer Kan nestes i andre if-, elif- eller else-blokker. Kan ikke nestes i en annen elif-blokk, men kan brukes i en if eller else-blokk.

La oss forstå det med et eksempel.

#!/bin/bash
tall=5
if [ $nummer -gt 10 ]; deretter
ekko $nummer er større enn 10
ellers
echo $nummer er ikke større enn 10
være
ekko ---
if [ $nummer -gt 10 ]; deretter
ekko $nummer er større enn 10
elif [$nummer -eq 10 ]; deretter
ekko $nummer er lik 10
ellers
ekko $nummer er mindre enn 10
være

Forklaring:

I dette eksemplet sjekker den første if-blokken om tallet er større enn 10. Hvis ikke, skriver den ut en melding som indikerer at tallet ikke er større enn 10. Den andre blokken med elif-setninger sjekker flere betingelser sekvensielt til en av dem er sann. I dette tilfellet, siden verdien av tallet er 5, vil utgangen være:

if_elif forskjell

if_elif forskjell

23) Hvordan bruker du en while-løkke til å utføre kommandoer gjentatte ganger?

En while-løkke brukes i shell-skripting for å gjentatte ganger utføre et sett med kommandoer så lenge en spesifisert betingelse er sann. Løkken fortsetter å utføre kommandoene til betingelsen blir falsk.

Her er den grunnleggende syntaksen til en while-løkke:

while [betingelse]; gjøre
# Kommandoer som skal utføres
ferdig

Forklaring:

  1. `while`-løkken starter med nøkkelordet `while` etterfulgt av en betingelse omsluttet av hakeparenteser `[ ]`.
  2. Sløyfens hoveddel, som inneholder kommandoene som skal utføres, er omsluttet av nøkkelordene 'do' og 'done'.
  3. Løkken sjekker først tilstanden. Hvis betingelsen er sann, utføres kommandoene i løkkelegemet. Etter at loop-kroppen er utført, kontrolleres betingelsen igjen, og prosessen gjentas til betingelsen blir falsk.

Eksempel: Hvis vi ønsker å skrive ut tall fra 1 til 5

#!/bin/bash
teller=1
while [ $counter -le 5 ]; gjøre
ekkonummer: $counter
teller=$((teller + 1))
ferdig

Forklaring:

  • Tellervariabelen er satt til 1.
  • While-løkken sjekker om verdien til telleren er mindre enn eller lik 5. Så lenge denne betingelsen er sann, fortsetter løkken å kjøre.
  • Inne i sløyfen skrives gjeldende verdi av telleren ved bruk av ekko.
  • Telleren økes med 1 ved å bruke uttrykket $((teller + 1)).
mens loop

mens loop

tilkoblinger i java

24) Lag et shell-skript som finner og viser alle tomme filer i en katalog.

Shell-skript som du kan bruke til å finne og liste alle tomme filer i en katalog ved å bruke kommandoene `finn` og `stat`:

#!/bin/bash
katalog=″
if [ -z $katalog ]; deretter
ekkobruk:

For alle Linux-distribusjonene er shell-skriptet som en tryllestav som automatiserer prosessen, sparer brukere tid og øker produktiviteten. Denne skal-skriptopplæringen vil introdusere deg til 25 pluss-skal-skripteksemplene.

Men før vi går over til temaet shell scripting eksempler, la oss forstå shell script og de faktiske brukstilfellene av shell scripting.

Hva er Shell Script?

Vel, skallet er en CLI ( kommandolinjetolk ), som kjører i et tekstvindu der brukere kan administrere og utføre skallkommandoer. På den annen side, prosessen med å skrive et sett med kommandoer som skal utføres på et Linux-system. En fil som inneholder slike instruksjoner kalles et bash-skript.

Bruk av Shell-skript

Nedenfor er noen vanlige bruksområder for Shell Script:

  • Oppgaveautomatisering – Den kan brukes til å automatisere repeterende oppgaver som vanlige sikkerhetskopier og programvareinstallasjonsoppgaver.
  • Tilpasning – Man kan bruke shell-skript for å designe kommandolinjemiljøet og enkelt utføre oppgaven etter behov.
  • Filbehandling - Skallskriptene kan også brukes til å administrere og manipulere filer og kataloger, for eksempel å flytte, kopiere, gi nytt navn eller slette filer.

Shell Script eksempler i Linux

1) Hva indikerer shebang (#!) i begynnelsen av et skallskript?

De shebang (#!) i begynnelsen av et skript indikerer tolken som skal brukes til å utføre skriptet. Den forteller systemet hvilket skall eller tolk som skal tolke skriptets kommandoer.

For eksempel: Anta at vi har et skript som heter myscript.sh skrevet i Bash-skallet:

shebang

shebang

I dette eksemplet:

  • #!/bin/bash i begynnelsen av skriptet indikerer at skriptet skal tolkes med Bash-skallet.
  • Ekkokommandoene brukes til å skrive ut meldinger til terminalen.

2) Hvordan kjører du et shell-skript fra kommandolinjen?

For å kjøre et skallskript fra kommandolinjen, må vi følge disse trinnene:

  • Sørg for at skriptfilen har kjørbare tillatelser ved å bruke chmod kommando :
chmod +x myscript.sh>
  • Kjør skriptet med filnavnet:
./myscript.sh>

Her må du bytte ut myscrtipt.sh med ditt manusnavn.

3) Skriv et shell-script som skriver ut techcodeview.com til terminalen.

Opprett et skriptnavn `myscript.sh` (vi bruker ` fordi ` editor, du kan velge hvilken som helst editor)

vim myscript.sh>

#!/bin/bash
# Dette skriptet skriver ut techcodeview.com til terminalen
echo techcodeview.com

skrive ut navn

skrive ut navn

Vi gjør skriptet vårt kjørbart ved å bruke `chmod +x` og kjør deretter med `./myscipt.sh` og få ønsket utdata techcodeview.com.

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

De ekko kommando brukes til å vise tekst eller variabler på terminalen. Det brukes ofte til å skrive ut meldinger, variable verdier og generere programutdata.

434

ekko kommando

I dette eksemplet har vi kjørt 'echo' direkte på terminal, siden det fungerer på samme måte i shell-skriptet.

5) Hvordan kan du tilordne en verdi til en variabel i et shell-skript?

Variabler tildeles verdier ved å bruke tilordningsoperatoren =.

For eksempel:

#!/bin/bash
# Tilordne en verdi til en variabel
navn=Jayesh
alder=21
echo $navn $age

Forklaring:

  • Navnevariabelen tildeles verdien Jayesh.
  • Aldersvariabelen tildeles verdien 21.
  • echo brukes til å skrive ut og `$name` `$age` brukes til å kalle verdien som er lagret i variablene.

435

6) Skriv et shell-skript som tar en brukers navn som input og hilser dem velkommen.

Opprett et skriptnavn `example.sh`.

#!/bin/bash
# Spør brukeren om navnet
echo Hva heter du?
lese navn
# Hils brukeren
echo Hei, $navn! Hyggelig å møte deg.

Forklaring:

  • #!/bin/bash: Dette er shebang-linjen. Det forteller systemet å bruke Bash-tolken til å utføre skriptet.
  • # Spør brukeren om navnet sitt: Dette er en kommentar. Det gir kontekst om den kommende koden. Kommentarer ignoreres av tolken.
  • echo Hva heter du?: Ekko-kommandoen brukes til å vise teksten i doble anførselstegn på terminalen.
  • read name: Read-kommandoen venter på at brukeren skal legge inn tekst og lagrer den i variabelnavnet.
  • echo Hei, $navn! Hyggelig å møte deg.: Denne linjen bruker ekko-kommandoen til å skrive ut en hilsen som inkluderer verdien av navnevariabelen, som ble samlet inn fra brukerens input.

436

7) Hvordan legger du til kommentarer til et shell-skript?

Kommentarer i shell scripting brukes til å gi forklaringer eller kontekst til koden. De blir ignorert av tolken og er kun ment for mennesker som leser manuset. Du kan legge til kommentarer ved å bruke #-symbolet.

#!/bin/bash
# Dette er en kommentar som forklarer formålet med manuset
ekko gfg

8) Lag et shell-script som sjekker om det finnes en fil i gjeldende katalog.

Her er et skript som sjekker om en fil med navnet example.txt finnes i gjeldende katalog:

#!/bin/bash
file=example.txt
# Sjekk om filen eksisterer
if [ -e $fil ]; deretter
echo Filen eksisterer: $file
ellers
echo Fil ikke funnet: $file
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
  2. file=example.txt: Denne linjen definerer variabelfilen og tilordner verdien example.txt til den. Du kan erstatte dette med navnet på filen du vil se etter.
  3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Betingelsen [ -e $file ] sjekker om filen spesifisert av verdien til filvariabelen eksisterer. -e-flagget brukes til å sjekke om filen eksisterer.
  4. echo File exists: $file: Hvis betingelsen er sann (dvs. filen eksisterer), skriver denne linjen ut en melding som indikerer at filen eksisterer, sammen med filens navn.
  5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), kjører skriptet koden under else-grenen.
  6. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet, sammen med filens navn.
  7. fi: Denne linjen markerer slutten på if-setningen.
Finner fil

Finner fil

9) Hva er forskjellen mellom enkle anførselstegn (') og doble anførselstegn () i shell-scripting?

Enkelte anførselstegn (') og doble anførselstegn () brukes til å omslutte strenger i shell-scripting, men de har forskjellig oppførsel:

  • Enkeltsitater: Alt mellom enkeltsitater behandles som en bokstavelig streng. Variabelnavn og de fleste spesialtegn utvides ikke.
  • Doble anførselstegn: Variabler og visse spesialtegn innenfor doble anførselstegn utvides. Innholdet er underlagt variabel substitusjon og kommandosubstitusjon.

#!/bin/bash

abcd=Hei
ekko '$abcd' # Utgang: $abcd
echo $abcd # Utgang: Hei

10) Hvordan kan du bruke kommandolinjeargumenter i et shell-skript?

Kommandolinjeargumenter er verdier gitt til et skript når det kjøres. De kan nås i skriptet ved å bruke spesielle variabler som $1, $2, etc., der $1 representerer det første argumentet, $2 representerer det andre argumentet, og så videre.

For eksempel: Hvis skriptnavnet vårt i `example.sh`

#!/bin/bash

echo Skriptnavn: $0
echo Første argument: $1
echo Andre argument: $2

Hvis vi kjører skriptet med `.example.sh hello_1 hello_2`, vil det sende ut:

kli argumenter

kli argumenter

11) Hvordan bruker du for-løkken til å iterere gjennom en liste med verdier?

Opprett et skriptnavn `example.sh`.

#!/bin/bash

frukt=(eple banan kirsebærdato)
for frukt i ${fruits[@]}; gjøre
echo Nåværende frukt: $fruit
ferdig

Forklaring:

`fruits=`-linjen lager en matrise kalt frukt med fire elementer: eple, banan, kirsebær og daddel.

  • for frukt i ${fruits[@]}; do: Denne linjen starter en for-løkke. Her er hva hver del betyr:
  • for frukt: Dette erklærer en løkkevariabel kalt frukt. I hver iterasjon av løkken vil frukt holde verdien av det gjeldende elementet fra frukt-arrayen.
  • ${fruits[@]}: Dette er en matriseutvidelse som tar alle elementene fra fruktmatrisen. ${…}-syntaksen sikrer at hvert element behandles som et separat element.
  • do: Dette nøkkelordet markerer begynnelsen av løkken.
  • echo Current fruit: $fruit: Inne i loopen bruker denne linjen echo-kommandoen for å vise gjeldende verdi av loop-variabelen fruit. Den skriver ut en melding som Current fruit: apple for hver frukt i matrisen.
  • ferdig: Dette nøkkelordet markerer slutten av løkken. Den forteller skriptet at loopen er ferdig.
for løkke

for løkke

12) Skriv et skallskript som beregner summen av heltall fra 1 til N ved hjelp av en løkke.

Opprett et skriptnavn `example.sh`.

#!/bin/bash

echo Skriv inn et tall (N):
les N
sum=0
for ((i=1; i<=$N; i++)); gjøre
sum=$((sum + i))
ferdig
ekko Summen av heltall fra 1 til $N er: $sum

Forklaring:
Skriptet starter med å be deg skrive inn et tall (N) ved å bruke read. Dette tallet vil avgjøre hvor mange ganger sløyfen kjøres.

  1. Variabelsummen initialiseres til 0. Denne variabelen vil holde styr på summen av heltall.
  2. For-løkken begynner med for (( i=1; i<=$N; i++ )). Denne sløyfestrukturen brukes til å gjenta et sett med handlinger et visst antall ganger, i dette tilfellet fra 1 til verdien av N.
  3. Inne i loopen skjer disse tingene:
    • i=1 setter løkkevariabelen i til 1 i begynnelsen av hver iterasjon.
    • Sløyfebetingelsen i<=$N sjekker om i fortsatt er mindre enn eller lik det gitte tallet N.
    • Hvis betingelsen er sann, utføres loop body.
    • sum=$((sum + i)) beregner den nye verdien av sum ved å legge til den nåværende verdien av i. Dette legger opp heltallene fra 1 til gjeldende i-verdi.
  4. Etter hver iterasjon øker i++ verdien av i med 1.
  5. Løkken fortsetter å kjøre til betingelsen i<=$N blir usann (når i blir større enn N).
  6. Når sløyfen er ferdig, viser skriptet summen av heltallene fra 1 til det angitte tallet N.

439

13) Lag et skript som søker etter et spesifikt ord i en fil og teller dets forekomster.

Opprett et skriptnavn `word_count.sh`

#!/bin/bash

echo Skriv inn ordet du vil søke etter:
les målord
echo Skriv inn filnavnet:
les filnavn
count=$(grep -o -w $target_word $filnavn | wc -l)
echo Ordet '$target_word' vises $count ganger i '$filnavn'.

Forklaring:

  • echo Skriv inn ordet det skal søkes etter:: Denne linjen viser en melding som ber brukeren skrive inn et ord de vil søke etter i en fil.
  • les målord: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt målord.
  • echo Skriv inn filnavnet:: Denne linjen viser en melding som ber brukeren skrive inn navnet på filen de vil søke i.
  • les filnavn: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt filnavn.
  • count=$(grep -o -w $målord $filnavn | wc -l): Denne linjen gjør hovedarbeidet med skriptet. La oss bryte det ned ytterligere:
    • grep -o -w $målord $filnavn: Denne delen av kommandoen søker etter forekomster av målordet i det angitte filnavnet. Alternativene -o og -w sørger for at kun hele ordtreff telles.
    • |: Dette er et rør som tar utdata fra forrige kommando og sender det som input til neste kommando.
    • wc -l: Denne delen av kommandoen bruker wc-kommandoen til å telle antall linjer i inngangen. Alternativet -l teller spesifikt linjene.
    • Hele kommandoen beregner antallet forekomster av target_word i filen og tilordner det antallet til variabelen count

441

14) Forklar forskjellene mellom standard utgang (stdout) og standardfeil (stderr).

Hovedforskjellen mellom standard utgang (stdout) og standardfeil (stderr) er som følger:

  • Standard utgang (stdout): Dette er standard utdatastrøm der en kommandos vanlige utgang går. Det vises på terminalen som standard. Du kan omdirigere den til en fil ved å bruke>.
  • Standardfeil (stderr): Dette er utdatastrømmen for feilmeldinger og advarsler. Det vises også på terminalen som standard. Du kan omdirigere den til en fil ved å bruke 2>.

15) Forklar konseptet med betingede utsagn i shell-scripting.

Betingede utsagn i shell-scripting tillate oss å ta avgjørelser og kontrollere flyten av skriptet vårt basert på visse forhold. De gjør det mulig for skriptet vårt å utføre forskjellige sett med kommandoer avhengig av om en bestemt betingelse er sann eller usann. De primære betingede setningene i shell-scripting er if-setningen, elif-setningen (valgfritt) og else-setningen (valgfritt).

Her er den grunnleggende strukturen til en betinget uttalelse i shell-scripting:

if [betingelse]; deretter
# Kommandoer som skal utføres hvis betingelsen er sann
elif [en annen_tilstand]; deretter
# Kommandoer som skal utføres hvis another_condition er sann (valgfritt)
ellers
# Kommandoer som skal utføres hvis ingen av betingelsene er sanne (valgfritt)
være

Forklaring:

  • [ condition ] = Kommando som evaluerer betingelsen og returnerer en sann (0) eller falsk (ikke-null) utgangsstatus.
  • then = Det er et nøkkelord som indikerer at kommandoene etter det vil bli utført hvis betingelsen evalueres til sann.
  • elif = (forkortelse for else if) Det er en del som lar oss spesifisere ytterligere betingelser for å sjekke.
  • else = det er en seksjon som inneholder kommandoer som vil bli utført hvis ingen av betingelsene er sanne.
  • fi = Det er et nøkkelord som markerer slutten på den betingede blokken.

16) Hvordan leser du linjer fra en fil i et shell-skript?

Til lese linjer fra en fil i et shell-skript kan vi bruke forskjellige metoder, men en vanlig tilnærming er å bruke en while-løkke i kombinasjon med read-kommandoen. Slik kan vi gjøre det:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Sjekk om filen eksisterer
if [ -e $fil ]; deretter
mens IFS= read -r line; gjøre
echo Line read: $line
# Legg til behandlingslogikken din her
ferdig <$fil
ellers
echo Fil ikke funnet: $file
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
  2. file=/home/jayeshkumar/jayesh.txt: Denne linjen definerer variabelfilen og tildeler hele banen til filen jayesh.txt i /home/jayeshkumar-katalogen. Endre denne banen for å matche den faktiske banen til filen du vil lese.
  3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Den sjekker om filen spesifisert av variabelen $file eksisterer. -e-flagget sjekker om filen eksisterer.
  4. mens IFS= read -r line; do: Denne linjen starter en while-løkke som leser linjer fra filen.
    • IFS=: IFS (Internal Field Separator) er satt til en tom verdi for å bevare innledende og etterfølgende mellomrom.
    • les -r linje: Dette leser gjeldende linje fra filen og lagrer den i variabellinjen.
  5. echo Line read: $line: Denne linjen skriver ut innholdet i linjen som ble lest fra filen. Variabelen $line inneholder gjeldende linjes innhold.
  6. # Legg til behandlingslogikken din her: Dette er en plassholderkommentar der du kan legge til din egen logikk for å behandle hver linje. Du kan for eksempel analysere linjen, trekke ut informasjon eller utføre spesifikke handlinger basert på innholdet.
  7. done <$file: Dette markerer slutten på while-løkken. < $filen omdirigerer innholdet i filen som skal leses av loopen.
  8. else: Hvis filen ikke eksisterer (betingelsen i if-setningen er usann), kjører skriptet koden under else-grenen.
  9. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet.
  10. fi: Denne linjen markerer slutten på if-setningen.
lese fil

lese fil

Her brukte vi ` pwd ` kommando for å få banen til gjeldende katalog.

17) Skriv en funksjon i et skallskript som beregner faktoren til et gitt tall.

Her er manuset somberegne faktorenav et gitt tall.

#!/bin/bash
# Definer en funksjon for å beregne faktorial
beregne_faktor() {
num=$1
fakta=1
for ((i=1; i<=antall; i++)); gjøre
fakta=$((fakta * i))
ferdig
ekko $fakta
}
# Be brukeren om å angi et nummer
echo Skriv inn et tall:
les input_num
# Kall calculate_fatorial-funksjonen med inndatanummeret
factorial_result=$(calculate_fatorial $input_num)
# Vis det faktorielle resultatet
echo Factorial av $input_num er: $factorial_result

Forklaring:

  1. Skriptet starter med shebang-linjen #!/bin/bash for å spesifisere tolken.
  2. calculate_fatorial() er definert som en funksjon. Det krever ett argument, num, som er tallet som faktoren må beregnes for.
  3. Inne i funksjonen initialiseres fakta til 1. Denne variabelen vil lagre det faktorielle resultatet.
  4. For-løkken itererer fra 1 til det gitte tallet (num). I hver iterasjon multipliserer den gjeldende faktaverdi med loopindeksen i.
  5. Etter at løkken er fullført, inneholder faktavariabelen den beregnede faktoren.
  6. Skriptet ber brukeren om å skrive inn et tall ved hjelp av read.
  7. Beregn_faktorfunksjonen kalles med det brukerangitte tallet, og resultatet lagres i variabelen faktorielt_resultat.
  8. Til slutt viser skriptet det beregnede faktorielle resultatet.
Faktoriell

Faktoriell

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

I et shell-skript kan du håndtere signaler som Ctrl+C (også kjent som SIGINT) ved å bruke trap-kommandoen. Ctrl+C genererer et SIGINT-signal når brukeren trykker på det for å avbryte det kjørende skriptet eller programmet. Ved å bruke trap-kommandoen kan du spesifisere handlinger som skal utføres når et bestemt signal mottas. Slik håndterer du signaler som Ctrl+C i et skallskript:

#!/bin/bash
rydde opp() {
ekko Skriptet avbrutt. Utfører opprydding …
# Legg til oppryddingshandlingene dine her
utgang 1
}
# Sett opp en felle for å kalle opp rensefunksjonen når Ctrl+C (SIGINT) mottas
felleopprydding SIGINT
# Resten av manuset ditt
ekko kjører...
sove 10
ekko Fullført.

Håndtering av signaler er viktig for å gjøre skript robuste og sikre at de håndterer uventede avbrudd på en elegant måte. Du kan tilpasse oppryddingsfunksjonen for å matche dine spesifikke behov, som å lukke filer, stoppe prosesser eller logge informasjon før skriptet avsluttes.

Forklaring:

  1. #!/bin/bash: Denne shebang-linjen spesifiserer tolken som skal brukes for å kjøre skriptet.
  2. cleanup() { … }: Dette definerer en funksjon som heter cleanup. Inne i denne funksjonen kan du inkludere alle handlinger som må utføres når skriptet blir avbrutt, for eksempel å lukke filer, frigjøre ressurser eller utføre andre oppryddingsoppgaver.
  3. trap cleanup SIGINT: Trappe-kommandoen brukes til å sette opp en signalbehandler. I dette tilfellet spesifiserer det at når SIGINT-signalet (Ctrl+C) mottas, skal oppryddingsfunksjonen utføres.
  4. echo Running…, sleep 10, echo Finished.: Dette er bare eksempelkommandoer for å simulere kjøringen av et skript.

446

19) Lag et skript som ser etter og fjerner dupliserte linjer i en tekstfil.

Her er linux-skriptet vårt der vi fjerner dupliserte linjer fra en tekstfil.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sorter $input_file | uniq> $output_file
echo Dupliserte linjer ble fjernet.

Forklaring:

  1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at skriptet skal tolkes ved hjelp av Bash-skallet.
  2. Variabelen input_file er satt til navnet på inputfilen som inneholder dupliserte linjer (endre dette til ditt faktiske inputfilnavn).
  3. Variabelen output_file er satt til navnet på utdatafilen der duplikatene vil bli fjernet (endre dette til ønsket utdatafilnavn).
  4. Skriptet bruker sorteringskommandoen til å sortere linjene i inndatafilen. Sortering av linjene sikrer at dupliserte linjer grupperes sammen.
  5. De sorterte linjene sendes deretter gjennom uniq-kommandoen, som fjerner påfølgende dupliserte linjer. Utdataene fra denne prosessen blir omdirigert til utdatafilen.
  6. Etter at duplikatene er fjernet, skriver skriptet ut en suksessmelding.
duplikatlinjefjerning

duplikatlinjefjerning

Her bruker vi ` katt ` for å vise teksten inne i tekstfilen.

20) Skriv et skript som genererer et sikkert tilfeldig passord.

Her er skriptet vårt for å generere et sikkert tilfeldig passord.

#!/bin/bash
# Funksjon for å generere et tilfeldig passord
generere_passord() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Ring opp funksjonen og lagre det genererte passordet
passord=$(generer_passord)
echo Generert passord: $password

Merk: Brukeren kan følgelig endre lengden på passordet ved å erstatte tallet '12'.

Forklaring:

  1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at det skal tolkes med Bash-skallet.
  2. Generer_passord-funksjonen er definert for å generere et tilfeldig passord. Slik fungerer det:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 deler de filtrerte tilfeldige dataene i linjer med bredde på 12 tegn hver.
    • head -n 1 velger den første linjen, og gir oss faktisk en tilfeldig sekvens av tegn med lengde 12.
  3. Passordvariabelen tildeles resultatet av å kalle generere_passord-funksjonen.
  4. Til slutt vises det genererte passordet ved hjelp av ekko.

448

21) Skriv et shell-script som beregner den totale størrelsen på alle filene i en katalog.

Her er et shell-skript for å beregne den totale størrelsen på alle filene i en katalog.

#!/bin/bash
katalog=/bane/til/din/katalog
total_size=$(du -csh $katalog | grep total | awk ‘{print $1}’)
echo Total størrelse på filer i $katalog: $total_size

Forklaring:

  1. Skriptet starter med #!/bin/bash shebang, noe som indikerer at det skal tolkes med Bash-skallet.
  2. Katalogvariabelen er satt til banen til katalogen du vil beregne den totale filstørrelsen for. Erstatt /bane/til/din/katalog med den faktiske banen.
  3. Du-kommandoen brukes til å beregne filplassbruk. Alternativene som brukes er:
    • -c: Produser en totalsum.
    • -s: Vis kun den totale størrelsen på den angitte katalogen.
    • -h: Utskriftsstørrelser i et format som kan leses av mennesker (f.eks. KB, MB, GB).
  4. Utdataene fra du sendes til grep total for å filtrere ut linjen som inneholder den totale størrelsen.
  5. awk '{print $1}' brukes til å trekke ut det første feltet (total størrelse) fra linjen.
  6. Den beregnede totale størrelsen lagres i variabelen total_size.
  7. Til slutt viser skriptet den totale størrelsen ved hjelp av ekko.
Total størrelse på filer

Total størrelse på filer

Her brukte vi ` pwd ` kommando for å se gjeldende katalogbane.

22) Forklar forskjellen mellom if- og elif-setninger i shell-scripting.

Trekk `hvis` Staiftement `elif`-uttalelse
Hensikt Forklar forskjellen mellom if- og elif-setninger i shell-scripting. Gir alternative betingelser for å sjekke når den innledende hvis betingelsen er falsk.
bruk Brukt til den opprinnelige tilstanden. Brukes etter den opprinnelige tilstanden for å sjekke ytterligere forhold.
antall blokker Kan bare ha én hvis blokk. Kan ha flere elif-blokker, men bare én annen blokk (valgfritt).
Henrettelse Utfører kodeblokken knyttet til if-setningen hvis betingelsen er sann. Hvis betingelsen er usann, utføres else-blokken (hvis den finnes) (valgfritt). Sjekker hver elif-tilstand i rekkefølge. Hvis en elif-betingelse er sann, blir den tilsvarende kodeblokken utført, og skriptet avslutter hele den betingede blokken. Hvis ingen av elif-betingelsene er sanne, blir else-blokken (hvis tilstede) utført.
Nestede strukturer Kan nestes i andre if-, elif- eller else-blokker. Kan ikke nestes i en annen elif-blokk, men kan brukes i en if eller else-blokk.

La oss forstå det med et eksempel.

#!/bin/bash
tall=5
if [ $nummer -gt 10 ]; deretter
ekko $nummer er større enn 10
ellers
echo $nummer er ikke større enn 10
være
ekko ---
if [ $nummer -gt 10 ]; deretter
ekko $nummer er større enn 10
elif [$nummer -eq 10 ]; deretter
ekko $nummer er lik 10
ellers
ekko $nummer er mindre enn 10
være

Forklaring:

I dette eksemplet sjekker den første if-blokken om tallet er større enn 10. Hvis ikke, skriver den ut en melding som indikerer at tallet ikke er større enn 10. Den andre blokken med elif-setninger sjekker flere betingelser sekvensielt til en av dem er sann. I dette tilfellet, siden verdien av tallet er 5, vil utgangen være:

if_elif forskjell

if_elif forskjell

23) Hvordan bruker du en while-løkke til å utføre kommandoer gjentatte ganger?

En while-løkke brukes i shell-skripting for å gjentatte ganger utføre et sett med kommandoer så lenge en spesifisert betingelse er sann. Løkken fortsetter å utføre kommandoene til betingelsen blir falsk.

Her er den grunnleggende syntaksen til en while-løkke:

while [betingelse]; gjøre
# Kommandoer som skal utføres
ferdig

Forklaring:

  1. `while`-løkken starter med nøkkelordet `while` etterfulgt av en betingelse omsluttet av hakeparenteser `[ ]`.
  2. Sløyfens hoveddel, som inneholder kommandoene som skal utføres, er omsluttet av nøkkelordene 'do' og 'done'.
  3. Løkken sjekker først tilstanden. Hvis betingelsen er sann, utføres kommandoene i løkkelegemet. Etter at loop-kroppen er utført, kontrolleres betingelsen igjen, og prosessen gjentas til betingelsen blir falsk.

Eksempel: Hvis vi ønsker å skrive ut tall fra 1 til 5

#!/bin/bash
teller=1
while [ $counter -le 5 ]; gjøre
ekkonummer: $counter
teller=$((teller + 1))
ferdig

Forklaring:

  • Tellervariabelen er satt til 1.
  • While-løkken sjekker om verdien til telleren er mindre enn eller lik 5. Så lenge denne betingelsen er sann, fortsetter løkken å kjøre.
  • Inne i sløyfen skrives gjeldende verdi av telleren ved bruk av ekko.
  • Telleren økes med 1 ved å bruke uttrykket $((teller + 1)).
mens loop

mens loop

24) Lag et shell-skript som finner og viser alle tomme filer i en katalog.

Shell-skript som du kan bruke til å finne og liste alle tomme filer i en katalog ved å bruke kommandoene `finn` og `stat`:

#!/bin/bash
katalog=$1″
if [ -z $katalog ]; deretter
ekkobruk: $0
utgang 1
være

hvis [! -d $katalog ]; deretter
echo Error: '$directory' er ikke en gyldig katalog.
utgang 1
være
echo tomme filer i $katalogen:
finn $katalog -type f -tom

Forklaring:

  1. ` #!/bin/bash `: Dette kalles en shebang, og det forteller operativsystemet å bruke Bash-skallet til å tolke og utføre skriptet.
  2. ` katalog=$1″ `: Denne linjen tildeler det første kommandolinjeargumentet (angitt med $1) til variabelen ` katalog `.
  3. ` if [ -z $katalog ]; deretter `: Denne linjen starter en if-setning som sjekker om ` katalog ` variabelen er tom (-z tester for en tom streng).
  4. ` ekkobruk: $0 `: Hvis katalogen er tom, skriver denne linjen ut en bruksmelding, hvor ` $0 ` representerer skriptets navn.
  5. ` utgang 1 `: Denne linjen avslutter skriptet med en utgangskode på ` 1 `, som indikerer en feil.
  6. ` være `: Denne linjen markerer slutten på ` hvis ` uttalelse.
  7. ` hvis [! -d $katalog ]; deretter `: Dette starter en annen if-setning for å sjekke om den oppgitte katalogen eksisterer (` -d ` tester for en katalog).
  8. ` echo Error: '$directory' er ikke en gyldig katalog. `: Hvis den oppgitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
  9. ` utgang 1 `: Går ut av skriptet med en utgangskode på ` 1 `.
  10. ` være `: Markerer slutten på den andre ` hvis` uttalelse.
  11. ` echo tomme filer i $katalogen: `: Hvis alt er gyldig så langt, skriver denne linjen ut en melding som indikerer at skriptet vil vise tomme filer i den angitte katalogen.
  12. ` finn $katalog -type f -tom `: Denne linjen bruker ` finne ` kommando for å søke etter tomme filer (` -tømme `) av typen vanlige filer (` -type f `) i den angitte katalogen. Den viser deretter disse tomme filene.
Finner tomme filer

Finner tomme filer

Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/

25) Hva er hensikten med read-kommandoen i shell-scripting?

Les-kommandoen i shell-scripting lar skriptet spørre deg om informasjon. Det er som når en datamaskin stiller deg et spørsmål og venter på svaret ditt. Dette er nyttig for skript som krever at du skriver noe eller når skriptet trenger å fungere med informasjon fra filer. Lese-kommandoen hjelper skriptet å stoppe og vente på det du skriver, og så kan det bruke den informasjonen til å gjøre flere ting i skriptet.

Syntaks for lesekommando:

read variable_name>

Eksempel : Hvis vi ønsker å ta navn som et input fra brukeren for å skrive det ut.

#!/bin/bash
echo Vennligst skriv inn navnet ditt:
lese navn
echo Hei, $navn!

453

les nam

Oppsummert brukes lesekommandoen til å fange opp brukerinndata eller data fra filer i shell-skript, noe som gjør skriptene mer interaktive og allsidige.

26) Skriv et shell-script som konverterer alle filnavn i en katalog til små bokstaver.

Her er et skallskript som konverterer alle filnavn i en katalog til små bokstaver.

#!/bin/bash
katalog=$1″
if [ -z $katalog ]; deretter
ekkobruk: $0
utgang 1
være

hvis [! -d $katalog ]; deretter

echo Error: '$directory' er ikke en gyldig katalog.
utgang 1
være

cd $katalog || utgang 1

for fil i *; gjøre
if [ -f $fil ]; deretter
newname=$(ekko $fil | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
være
ferdig

Forklaring:

  1. #!/bin/bash : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
  2. katalog=$1″ : Denne linjen tildeler det første kommandolinjeargumentet til variabelkatalogen.
  3. if [ -z $katalog ]; deretter : Denne linjen sjekker om katalogvariabelen er tom (ingen argument oppgitt når skriptet kjøres).
  4. ekkobruk: $0 : Hvis katalogen er tom, skriver denne linjen ut en bruksmelding med skriptets navn ($0).
  5. utgang 1 : Denne linjen går ut av skriptet med en utgangskode på 1, noe som indikerer at det har oppstått en feil.
  6. f i: Dette markerer slutten på den første if-setningen.
  7. hvis [! -d $katalog ]; deretter : Denne linjen sjekker om den angitte katalogen ikke eksisterer (-d tester for en katalog).
  8. echo Error: '$directory' er ikke en gyldig katalog. : Hvis den angitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
  9. utgang 1 : Går ut av skriptet med en utgangskode på 1.
  10. være : Markerer slutten av den andre if-setningen.
  11. cd $katalog || utgang 1 : Endrer gjeldende arbeidskatalog til spesifisert katalog. Hvis katalogendringen mislykkes (f.eks. ikke-eksisterende katalog), avsluttes skriptet med en feilkode.
  12. for fil i *; gjøre: Jeg for fil i *; gjøre: starter en løkke som itererer over alle elementer i gjeldende katalog (* samsvarer med alle filnavn).
  13. if [ -f $fil ]; deretter : Sjekker om gjeldende loop-iterasjonselement er en vanlig fil (-f tester for en vanlig fil).
  14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer gjeldende filnavn ($file) til små bokstaver ved å bruke tr-kommandoen og lagrer resultatet i newname-variabelen.
  15. [ $file != $newname ] && mv $file $newname : Sammenligner det opprinnelige filnavnet med det nye filnavnet med små bokstaver. Hvis de er forskjellige, gir den nytt navn til filen ved å bruke mv-kommandoen.
  16. være : Markerer slutten av den indre if-setningen.
  17. ferdig : Markerer slutten av løkken.

454

Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/test

27) Hvordan kan du bruke aritmetiske operasjoner i et skallskript?

Aritmetiske operasjoner kan utføres i et skallskript ved hjelp av ulike innebygde metoder. Skallet gir mekanismer for enkle aritmetiske beregninger ved bruk av aritmetisk utvidelse som:

  1. Aritmetisk utvidelse ($((...)))
  2. Bruke expr Command
  3. Bruk let Command

Her er vårt Shell-skript som forklarer alle tre metodene for aritmetiske operasjoner.

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

#Aritmetisk utvidelse ($((...)))

resultat=$((tall1 + tall2))
echo Sum: $resultat

#Bruk av kommandoen expr

sum=$(utløp $num1 + $num2)
echo Sum: $sum

#Bruke let Command

la sum = tall1 + tall2
echo Sum: $sum

Forklaring:

  1. `#!/bin/bash` : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
  2. `num1=10` og ` num2=5` : Disse linjene tildeler verdiene 10 og 5 til variablene ` nummer1 ` og ` nummer2 `, henholdsvis.
  3. `#Aritmetisk utvidelse ($((...)))` : Dette er en kommentar som indikerer starten på delen som viser aritmetisk utvidelse.
  4. `resultat=$((tall1 + tall2))` : Denne linjen bruker aritmetisk utvidelse for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` resultat ` variabel.
  5. `echo Sum: $result` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` resultat ` variabel.
  6. `#Using expr Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` uttr ` kommando for aritmetiske operasjoner.
  7. `sum=$(uttr $num1 + $num2)` : Denne linjen bruker ` uttr ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` sum ` variabel. Merk at ` uttr ` kommando krever mellomrom rundt operatørene.
  8. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
  9. `#Bruke let Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` la ` kommando for aritmetiske operasjoner.
  10. `la sum = num1 + num2″` : Denne linjen bruker ` la ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og tildeler resultatet til ` sum ` variabel. Den ` la ` kommandoen krever ikke mellomrom rundt operatørene.
  11. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
aritmetikk

aritmetikk

28) Lag et skript som sjekker om en nettverksvert er tilgjengelig.

Her er et enkelt skallskript som bruker ping-kommandoen for å sjekke om en nettverksvert er tilgjengelig:

#!/bin/bash
vert=$1″
if [ -z $vert ]; deretter
ekkobruk: $0
utgang 1
være
ping -c 4 $vert

hvis [$? -eq 0]; deretter
echo $host er tilgjengelig.
ellers
echo $host er ikke tilgjengelig.
være

Forklaring:

  1. Den tar et vertsnavn eller IP-adresse som argument og sjekker om argumentet er oppgitt.
  2. Hvis ingen argumenter er oppgitt, viser den en bruksmelding og avsluttes.
  3. Den bruker ping-kommandoen med -c 4-alternativet for å sende fire ICMP-ekkoforespørsler til den angitte verten.
  4. Etter at ping-kommandoen kjører, sjekker den utgangsstatusen ($?). Hvis utgangsstatusen er 0, betyr det at verten er tilgjengelig og skriptet skriver ut en suksessmelding. Ellers skriver den ut en feilmelding.

456

Merk : Vi må oppgi et vertsnavn som argument når vi kjører skriptet. Her har vi brukt google.com

29) Skriv et Shell-skript for å finne det største elementet i en matrise:

Her er et skallskript for å finne det beste elementet i en matrise.

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

# Initialiser en variabel for å lagre maksimumsverdien, start med det første elementet

max=${array[0]}

# Iterer gjennom matrisen

for num i ${array[@]}; gjøre

# Sammenlign hvert element med gjeldende maksimum

if ((antall> maks)); deretter
maks=$antall
være
ferdig

# Skriv ut maksimumsverdien

echo Maksimumselementet i matrisen er: $max

Forklaring:

  1. ` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.
  2. ` array=(3 56 24 89 67) `: Matrisen er deklarert og initialisert med verdier.
  3. ` max=${array[0]} `: `max` initialiseres med det første elementet i matrisen.
  4. ` for num i ${array[@]}; gjøre `: En `for`-løkke brukes til å iterere gjennom elementene i matrisen.
  5. ` if ((antall> maks)); deretter `: En `if`-setning sjekker om det gjeldende elementet `num` er større enn gjeldende maksimum `max`.
  6. ` max=$num`: If`num ` er større enn `max`, `max` er oppdatert med verdien av num.
  7. ` ferdig `: `For`-sløyfen er lukket.
  8. ` echo Maksimumselementet i matrisen er: $max `: Til slutt skriver skriptet ut den maksimale verdien som finnes i matrisen.
461

største antall

30) Skriv et skript for å beregne summen av elementer i en matrise.

#!/bin/bash

# Deklarer en matrise

array=(1 65 22 19 94)

# Initialiser en variabel for å lagre summen

sum=0

# Iterer gjennom matrisen og legg til hvert element til summen

for num i ${array[@]}; gjøre
am=$((am + am))
ferdig

# Skriv ut summen

echo Summen av elementene i matrisen er: $sum

Forklaring:

` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.

` array=(1 65 22 19 94) `: Matrisen er deklarert og initialisert med verdier.

` sum=0 `:` sum ` initialiseres til null for å holde summen av elementer.

` for num i ${array[@]}; gjøre `: A ` til ` loop brukes til å iterere gjennom elementene i matrisen.

` am=$((am + am)) `: Inne i løkken, hvert element ` på en ` er lagt til ` sum ` variabel.

` ferdig `: Den ` til `-sløyfen er lukket.

`echo Summen av elementene i matrisen er: $sum`: Til slutt skriver skriptet ut summen av alle elementene i matrisen.

462

Summen av elementer

Finn ut mer om Shell-skript

Konklusjon

Vi alle nerder vet at shell-script er veldig nyttig for å øke arbeidsproduktiviteten, så vel som det sparer tid. Så i denne artikkelen har vi dekket 30 veldig nyttige og mest besnærende shell-skripteksempler . Vi håper at denne komplette veiledningen for eksempel på shell-skript hjelper deg med å forstå alt om shell-skriptene.




utgang 1
være

hvis [! -d $katalog ]; deretter
echo Error: '$directory' er ikke en gyldig katalog.
utgang 1
være
echo tomme filer i $katalogen:
finn $katalog -type f -tom

Forklaring:

  1. ` #!/bin/bash `: Dette kalles en shebang, og det forteller operativsystemet å bruke Bash-skallet til å tolke og utføre skriptet.
  2. ` katalog=″ `: Denne linjen tildeler det første kommandolinjeargumentet (angitt med ) til variabelen ` katalog `.
  3. ` if [ -z $katalog ]; deretter `: Denne linjen starter en if-setning som sjekker om ` katalog ` variabelen er tom (-z tester for en tom streng).
  4. ` ekkobruk:

    For alle Linux-distribusjonene er shell-skriptet som en tryllestav som automatiserer prosessen, sparer brukere tid og øker produktiviteten. Denne skal-skriptopplæringen vil introdusere deg til 25 pluss-skal-skripteksemplene.

    Men før vi går over til temaet shell scripting eksempler, la oss forstå shell script og de faktiske brukstilfellene av shell scripting.

    Hva er Shell Script?

    Vel, skallet er en CLI ( kommandolinjetolk ), som kjører i et tekstvindu der brukere kan administrere og utføre skallkommandoer. På den annen side, prosessen med å skrive et sett med kommandoer som skal utføres på et Linux-system. En fil som inneholder slike instruksjoner kalles et bash-skript.

    Bruk av Shell-skript

    Nedenfor er noen vanlige bruksområder for Shell Script:

    • Oppgaveautomatisering – Den kan brukes til å automatisere repeterende oppgaver som vanlige sikkerhetskopier og programvareinstallasjonsoppgaver.
    • Tilpasning – Man kan bruke shell-skript for å designe kommandolinjemiljøet og enkelt utføre oppgaven etter behov.
    • Filbehandling - Skallskriptene kan også brukes til å administrere og manipulere filer og kataloger, for eksempel å flytte, kopiere, gi nytt navn eller slette filer.

    Shell Script eksempler i Linux

    1) Hva indikerer shebang (#!) i begynnelsen av et skallskript?

    De shebang (#!) i begynnelsen av et skript indikerer tolken som skal brukes til å utføre skriptet. Den forteller systemet hvilket skall eller tolk som skal tolke skriptets kommandoer.

    For eksempel: Anta at vi har et skript som heter myscript.sh skrevet i Bash-skallet:

    shebang

    shebang

    I dette eksemplet:

    • #!/bin/bash i begynnelsen av skriptet indikerer at skriptet skal tolkes med Bash-skallet.
    • Ekkokommandoene brukes til å skrive ut meldinger til terminalen.

    2) Hvordan kjører du et shell-skript fra kommandolinjen?

    For å kjøre et skallskript fra kommandolinjen, må vi følge disse trinnene:

    • Sørg for at skriptfilen har kjørbare tillatelser ved å bruke chmod kommando :
    chmod +x myscript.sh>
    • Kjør skriptet med filnavnet:
    ./myscript.sh>

    Her må du bytte ut myscrtipt.sh med ditt manusnavn.

    3) Skriv et shell-script som skriver ut techcodeview.com til terminalen.

    Opprett et skriptnavn `myscript.sh` (vi bruker ` fordi ` editor, du kan velge hvilken som helst editor)

    vim myscript.sh>

    #!/bin/bash
    # Dette skriptet skriver ut techcodeview.com til terminalen
    echo techcodeview.com

    skrive ut navn

    skrive ut navn

    Vi gjør skriptet vårt kjørbart ved å bruke `chmod +x` og kjør deretter med `./myscipt.sh` og få ønsket utdata techcodeview.com.

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

    De ekko kommando brukes til å vise tekst eller variabler på terminalen. Det brukes ofte til å skrive ut meldinger, variable verdier og generere programutdata.

    434

    ekko kommando

    I dette eksemplet har vi kjørt 'echo' direkte på terminal, siden det fungerer på samme måte i shell-skriptet.

    5) Hvordan kan du tilordne en verdi til en variabel i et shell-skript?

    Variabler tildeles verdier ved å bruke tilordningsoperatoren =.

    For eksempel:

    #!/bin/bash
    # Tilordne en verdi til en variabel
    navn=Jayesh
    alder=21
    echo $navn $age

    Forklaring:

    • Navnevariabelen tildeles verdien Jayesh.
    • Aldersvariabelen tildeles verdien 21.
    • echo brukes til å skrive ut og `$name` `$age` brukes til å kalle verdien som er lagret i variablene.

    435

    6) Skriv et shell-skript som tar en brukers navn som input og hilser dem velkommen.

    Opprett et skriptnavn `example.sh`.

    #!/bin/bash
    # Spør brukeren om navnet
    echo Hva heter du?
    lese navn
    # Hils brukeren
    echo Hei, $navn! Hyggelig å møte deg.

    Forklaring:

    • #!/bin/bash: Dette er shebang-linjen. Det forteller systemet å bruke Bash-tolken til å utføre skriptet.
    • # Spør brukeren om navnet sitt: Dette er en kommentar. Det gir kontekst om den kommende koden. Kommentarer ignoreres av tolken.
    • echo Hva heter du?: Ekko-kommandoen brukes til å vise teksten i doble anførselstegn på terminalen.
    • read name: Read-kommandoen venter på at brukeren skal legge inn tekst og lagrer den i variabelnavnet.
    • echo Hei, $navn! Hyggelig å møte deg.: Denne linjen bruker ekko-kommandoen til å skrive ut en hilsen som inkluderer verdien av navnevariabelen, som ble samlet inn fra brukerens input.

    436

    7) Hvordan legger du til kommentarer til et shell-skript?

    Kommentarer i shell scripting brukes til å gi forklaringer eller kontekst til koden. De blir ignorert av tolken og er kun ment for mennesker som leser manuset. Du kan legge til kommentarer ved å bruke #-symbolet.

    #!/bin/bash
    # Dette er en kommentar som forklarer formålet med manuset
    ekko gfg

    8) Lag et shell-script som sjekker om det finnes en fil i gjeldende katalog.

    Her er et skript som sjekker om en fil med navnet example.txt finnes i gjeldende katalog:

    #!/bin/bash
    file=example.txt
    # Sjekk om filen eksisterer
    if [ -e $fil ]; deretter
    echo Filen eksisterer: $file
    ellers
    echo Fil ikke funnet: $file
    være

    Forklaring:

    1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
    2. file=example.txt: Denne linjen definerer variabelfilen og tilordner verdien example.txt til den. Du kan erstatte dette med navnet på filen du vil se etter.
    3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Betingelsen [ -e $file ] sjekker om filen spesifisert av verdien til filvariabelen eksisterer. -e-flagget brukes til å sjekke om filen eksisterer.
    4. echo File exists: $file: Hvis betingelsen er sann (dvs. filen eksisterer), skriver denne linjen ut en melding som indikerer at filen eksisterer, sammen med filens navn.
    5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), kjører skriptet koden under else-grenen.
    6. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet, sammen med filens navn.
    7. fi: Denne linjen markerer slutten på if-setningen.
    Finner fil

    Finner fil

    9) Hva er forskjellen mellom enkle anførselstegn (') og doble anførselstegn () i shell-scripting?

    Enkelte anførselstegn (') og doble anførselstegn () brukes til å omslutte strenger i shell-scripting, men de har forskjellig oppførsel:

    • Enkeltsitater: Alt mellom enkeltsitater behandles som en bokstavelig streng. Variabelnavn og de fleste spesialtegn utvides ikke.
    • Doble anførselstegn: Variabler og visse spesialtegn innenfor doble anførselstegn utvides. Innholdet er underlagt variabel substitusjon og kommandosubstitusjon.

    #!/bin/bash

    abcd=Hei
    ekko '$abcd' # Utgang: $abcd
    echo $abcd # Utgang: Hei

    10) Hvordan kan du bruke kommandolinjeargumenter i et shell-skript?

    Kommandolinjeargumenter er verdier gitt til et skript når det kjøres. De kan nås i skriptet ved å bruke spesielle variabler som $1, $2, etc., der $1 representerer det første argumentet, $2 representerer det andre argumentet, og så videre.

    For eksempel: Hvis skriptnavnet vårt i `example.sh`

    #!/bin/bash

    echo Skriptnavn: $0
    echo Første argument: $1
    echo Andre argument: $2

    Hvis vi kjører skriptet med `.example.sh hello_1 hello_2`, vil det sende ut:

    kli argumenter

    kli argumenter

    11) Hvordan bruker du for-løkken til å iterere gjennom en liste med verdier?

    Opprett et skriptnavn `example.sh`.

    #!/bin/bash

    frukt=(eple banan kirsebærdato)
    for frukt i ${fruits[@]}; gjøre
    echo Nåværende frukt: $fruit
    ferdig

    Forklaring:

    `fruits=`-linjen lager en matrise kalt frukt med fire elementer: eple, banan, kirsebær og daddel.

    • for frukt i ${fruits[@]}; do: Denne linjen starter en for-løkke. Her er hva hver del betyr:
    • for frukt: Dette erklærer en løkkevariabel kalt frukt. I hver iterasjon av løkken vil frukt holde verdien av det gjeldende elementet fra frukt-arrayen.
    • ${fruits[@]}: Dette er en matriseutvidelse som tar alle elementene fra fruktmatrisen. ${…}-syntaksen sikrer at hvert element behandles som et separat element.
    • do: Dette nøkkelordet markerer begynnelsen av løkken.
    • echo Current fruit: $fruit: Inne i loopen bruker denne linjen echo-kommandoen for å vise gjeldende verdi av loop-variabelen fruit. Den skriver ut en melding som Current fruit: apple for hver frukt i matrisen.
    • ferdig: Dette nøkkelordet markerer slutten av løkken. Den forteller skriptet at loopen er ferdig.
    for løkke

    for løkke

    12) Skriv et skallskript som beregner summen av heltall fra 1 til N ved hjelp av en løkke.

    Opprett et skriptnavn `example.sh`.

    #!/bin/bash

    echo Skriv inn et tall (N):
    les N
    sum=0
    for ((i=1; i<=$N; i++)); gjøre
    sum=$((sum + i))
    ferdig
    ekko Summen av heltall fra 1 til $N er: $sum

    Forklaring:
    Skriptet starter med å be deg skrive inn et tall (N) ved å bruke read. Dette tallet vil avgjøre hvor mange ganger sløyfen kjøres.

    1. Variabelsummen initialiseres til 0. Denne variabelen vil holde styr på summen av heltall.
    2. For-løkken begynner med for (( i=1; i<=$N; i++ )). Denne sløyfestrukturen brukes til å gjenta et sett med handlinger et visst antall ganger, i dette tilfellet fra 1 til verdien av N.
    3. Inne i loopen skjer disse tingene:
      • i=1 setter løkkevariabelen i til 1 i begynnelsen av hver iterasjon.
      • Sløyfebetingelsen i<=$N sjekker om i fortsatt er mindre enn eller lik det gitte tallet N.
      • Hvis betingelsen er sann, utføres loop body.
      • sum=$((sum + i)) beregner den nye verdien av sum ved å legge til den nåværende verdien av i. Dette legger opp heltallene fra 1 til gjeldende i-verdi.
    4. Etter hver iterasjon øker i++ verdien av i med 1.
    5. Løkken fortsetter å kjøre til betingelsen i<=$N blir usann (når i blir større enn N).
    6. Når sløyfen er ferdig, viser skriptet summen av heltallene fra 1 til det angitte tallet N.

    439

    13) Lag et skript som søker etter et spesifikt ord i en fil og teller dets forekomster.

    Opprett et skriptnavn `word_count.sh`

    #!/bin/bash

    echo Skriv inn ordet du vil søke etter:
    les målord
    echo Skriv inn filnavnet:
    les filnavn
    count=$(grep -o -w $target_word $filnavn | wc -l)
    echo Ordet '$target_word' vises $count ganger i '$filnavn'.

    Forklaring:

    • echo Skriv inn ordet det skal søkes etter:: Denne linjen viser en melding som ber brukeren skrive inn et ord de vil søke etter i en fil.
    • les målord: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt målord.
    • echo Skriv inn filnavnet:: Denne linjen viser en melding som ber brukeren skrive inn navnet på filen de vil søke i.
    • les filnavn: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt filnavn.
    • count=$(grep -o -w $målord $filnavn | wc -l): Denne linjen gjør hovedarbeidet med skriptet. La oss bryte det ned ytterligere:
      • grep -o -w $målord $filnavn: Denne delen av kommandoen søker etter forekomster av målordet i det angitte filnavnet. Alternativene -o og -w sørger for at kun hele ordtreff telles.
      • |: Dette er et rør som tar utdata fra forrige kommando og sender det som input til neste kommando.
      • wc -l: Denne delen av kommandoen bruker wc-kommandoen til å telle antall linjer i inngangen. Alternativet -l teller spesifikt linjene.
      • Hele kommandoen beregner antallet forekomster av target_word i filen og tilordner det antallet til variabelen count

    441

    14) Forklar forskjellene mellom standard utgang (stdout) og standardfeil (stderr).

    Hovedforskjellen mellom standard utgang (stdout) og standardfeil (stderr) er som følger:

    • Standard utgang (stdout): Dette er standard utdatastrøm der en kommandos vanlige utgang går. Det vises på terminalen som standard. Du kan omdirigere den til en fil ved å bruke>.
    • Standardfeil (stderr): Dette er utdatastrømmen for feilmeldinger og advarsler. Det vises også på terminalen som standard. Du kan omdirigere den til en fil ved å bruke 2>.

    15) Forklar konseptet med betingede utsagn i shell-scripting.

    Betingede utsagn i shell-scripting tillate oss å ta avgjørelser og kontrollere flyten av skriptet vårt basert på visse forhold. De gjør det mulig for skriptet vårt å utføre forskjellige sett med kommandoer avhengig av om en bestemt betingelse er sann eller usann. De primære betingede setningene i shell-scripting er if-setningen, elif-setningen (valgfritt) og else-setningen (valgfritt).

    Her er den grunnleggende strukturen til en betinget uttalelse i shell-scripting:

    if [betingelse]; deretter
    # Kommandoer som skal utføres hvis betingelsen er sann
    elif [en annen_tilstand]; deretter
    # Kommandoer som skal utføres hvis another_condition er sann (valgfritt)
    ellers
    # Kommandoer som skal utføres hvis ingen av betingelsene er sanne (valgfritt)
    være

    Forklaring:

    • [ condition ] = Kommando som evaluerer betingelsen og returnerer en sann (0) eller falsk (ikke-null) utgangsstatus.
    • then = Det er et nøkkelord som indikerer at kommandoene etter det vil bli utført hvis betingelsen evalueres til sann.
    • elif = (forkortelse for else if) Det er en del som lar oss spesifisere ytterligere betingelser for å sjekke.
    • else = det er en seksjon som inneholder kommandoer som vil bli utført hvis ingen av betingelsene er sanne.
    • fi = Det er et nøkkelord som markerer slutten på den betingede blokken.

    16) Hvordan leser du linjer fra en fil i et shell-skript?

    Til lese linjer fra en fil i et shell-skript kan vi bruke forskjellige metoder, men en vanlig tilnærming er å bruke en while-løkke i kombinasjon med read-kommandoen. Slik kan vi gjøre det:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Sjekk om filen eksisterer
    if [ -e $fil ]; deretter
    mens IFS= read -r line; gjøre
    echo Line read: $line
    # Legg til behandlingslogikken din her
    ferdig <$fil
    ellers
    echo Fil ikke funnet: $file
    være

    Forklaring:

    1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
    2. file=/home/jayeshkumar/jayesh.txt: Denne linjen definerer variabelfilen og tildeler hele banen til filen jayesh.txt i /home/jayeshkumar-katalogen. Endre denne banen for å matche den faktiske banen til filen du vil lese.
    3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Den sjekker om filen spesifisert av variabelen $file eksisterer. -e-flagget sjekker om filen eksisterer.
    4. mens IFS= read -r line; do: Denne linjen starter en while-løkke som leser linjer fra filen.
      • IFS=: IFS (Internal Field Separator) er satt til en tom verdi for å bevare innledende og etterfølgende mellomrom.
      • les -r linje: Dette leser gjeldende linje fra filen og lagrer den i variabellinjen.
    5. echo Line read: $line: Denne linjen skriver ut innholdet i linjen som ble lest fra filen. Variabelen $line inneholder gjeldende linjes innhold.
    6. # Legg til behandlingslogikken din her: Dette er en plassholderkommentar der du kan legge til din egen logikk for å behandle hver linje. Du kan for eksempel analysere linjen, trekke ut informasjon eller utføre spesifikke handlinger basert på innholdet.
    7. done <$file: Dette markerer slutten på while-løkken. < $filen omdirigerer innholdet i filen som skal leses av loopen.
    8. else: Hvis filen ikke eksisterer (betingelsen i if-setningen er usann), kjører skriptet koden under else-grenen.
    9. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet.
    10. fi: Denne linjen markerer slutten på if-setningen.
    lese fil

    lese fil

    Her brukte vi ` pwd ` kommando for å få banen til gjeldende katalog.

    17) Skriv en funksjon i et skallskript som beregner faktoren til et gitt tall.

    Her er manuset somberegne faktorenav et gitt tall.

    #!/bin/bash
    # Definer en funksjon for å beregne faktorial
    beregne_faktor() {
    num=$1
    fakta=1
    for ((i=1; i<=antall; i++)); gjøre
    fakta=$((fakta * i))
    ferdig
    ekko $fakta
    }
    # Be brukeren om å angi et nummer
    echo Skriv inn et tall:
    les input_num
    # Kall calculate_fatorial-funksjonen med inndatanummeret
    factorial_result=$(calculate_fatorial $input_num)
    # Vis det faktorielle resultatet
    echo Factorial av $input_num er: $factorial_result

    Forklaring:

    1. Skriptet starter med shebang-linjen #!/bin/bash for å spesifisere tolken.
    2. calculate_fatorial() er definert som en funksjon. Det krever ett argument, num, som er tallet som faktoren må beregnes for.
    3. Inne i funksjonen initialiseres fakta til 1. Denne variabelen vil lagre det faktorielle resultatet.
    4. For-løkken itererer fra 1 til det gitte tallet (num). I hver iterasjon multipliserer den gjeldende faktaverdi med loopindeksen i.
    5. Etter at løkken er fullført, inneholder faktavariabelen den beregnede faktoren.
    6. Skriptet ber brukeren om å skrive inn et tall ved hjelp av read.
    7. Beregn_faktorfunksjonen kalles med det brukerangitte tallet, og resultatet lagres i variabelen faktorielt_resultat.
    8. Til slutt viser skriptet det beregnede faktorielle resultatet.
    Faktoriell

    Faktoriell

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

    I et shell-skript kan du håndtere signaler som Ctrl+C (også kjent som SIGINT) ved å bruke trap-kommandoen. Ctrl+C genererer et SIGINT-signal når brukeren trykker på det for å avbryte det kjørende skriptet eller programmet. Ved å bruke trap-kommandoen kan du spesifisere handlinger som skal utføres når et bestemt signal mottas. Slik håndterer du signaler som Ctrl+C i et skallskript:

    #!/bin/bash
    rydde opp() {
    ekko Skriptet avbrutt. Utfører opprydding …
    # Legg til oppryddingshandlingene dine her
    utgang 1
    }
    # Sett opp en felle for å kalle opp rensefunksjonen når Ctrl+C (SIGINT) mottas
    felleopprydding SIGINT
    # Resten av manuset ditt
    ekko kjører...
    sove 10
    ekko Fullført.

    Håndtering av signaler er viktig for å gjøre skript robuste og sikre at de håndterer uventede avbrudd på en elegant måte. Du kan tilpasse oppryddingsfunksjonen for å matche dine spesifikke behov, som å lukke filer, stoppe prosesser eller logge informasjon før skriptet avsluttes.

    Forklaring:

    1. #!/bin/bash: Denne shebang-linjen spesifiserer tolken som skal brukes for å kjøre skriptet.
    2. cleanup() { … }: Dette definerer en funksjon som heter cleanup. Inne i denne funksjonen kan du inkludere alle handlinger som må utføres når skriptet blir avbrutt, for eksempel å lukke filer, frigjøre ressurser eller utføre andre oppryddingsoppgaver.
    3. trap cleanup SIGINT: Trappe-kommandoen brukes til å sette opp en signalbehandler. I dette tilfellet spesifiserer det at når SIGINT-signalet (Ctrl+C) mottas, skal oppryddingsfunksjonen utføres.
    4. echo Running…, sleep 10, echo Finished.: Dette er bare eksempelkommandoer for å simulere kjøringen av et skript.

    446

    19) Lag et skript som ser etter og fjerner dupliserte linjer i en tekstfil.

    Her er linux-skriptet vårt der vi fjerner dupliserte linjer fra en tekstfil.

    #!/bin/bash
    input_file=input.txt
    output_file=output.txt
    sorter $input_file | uniq> $output_file
    echo Dupliserte linjer ble fjernet.

    Forklaring:

    1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at skriptet skal tolkes ved hjelp av Bash-skallet.
    2. Variabelen input_file er satt til navnet på inputfilen som inneholder dupliserte linjer (endre dette til ditt faktiske inputfilnavn).
    3. Variabelen output_file er satt til navnet på utdatafilen der duplikatene vil bli fjernet (endre dette til ønsket utdatafilnavn).
    4. Skriptet bruker sorteringskommandoen til å sortere linjene i inndatafilen. Sortering av linjene sikrer at dupliserte linjer grupperes sammen.
    5. De sorterte linjene sendes deretter gjennom uniq-kommandoen, som fjerner påfølgende dupliserte linjer. Utdataene fra denne prosessen blir omdirigert til utdatafilen.
    6. Etter at duplikatene er fjernet, skriver skriptet ut en suksessmelding.
    duplikatlinjefjerning

    duplikatlinjefjerning

    Her bruker vi ` katt ` for å vise teksten inne i tekstfilen.

    20) Skriv et skript som genererer et sikkert tilfeldig passord.

    Her er skriptet vårt for å generere et sikkert tilfeldig passord.

    #!/bin/bash
    # Funksjon for å generere et tilfeldig passord
    generere_passord() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Ring opp funksjonen og lagre det genererte passordet
    passord=$(generer_passord)
    echo Generert passord: $password

    Merk: Brukeren kan følgelig endre lengden på passordet ved å erstatte tallet '12'.

    Forklaring:

    1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at det skal tolkes med Bash-skallet.
    2. Generer_passord-funksjonen er definert for å generere et tilfeldig passord. Slik fungerer det:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 deler de filtrerte tilfeldige dataene i linjer med bredde på 12 tegn hver.
      • head -n 1 velger den første linjen, og gir oss faktisk en tilfeldig sekvens av tegn med lengde 12.
    3. Passordvariabelen tildeles resultatet av å kalle generere_passord-funksjonen.
    4. Til slutt vises det genererte passordet ved hjelp av ekko.

    448

    21) Skriv et shell-script som beregner den totale størrelsen på alle filene i en katalog.

    Her er et shell-skript for å beregne den totale størrelsen på alle filene i en katalog.

    #!/bin/bash
    katalog=/bane/til/din/katalog
    total_size=$(du -csh $katalog | grep total | awk ‘{print $1}’)
    echo Total størrelse på filer i $katalog: $total_size

    Forklaring:

    1. Skriptet starter med #!/bin/bash shebang, noe som indikerer at det skal tolkes med Bash-skallet.
    2. Katalogvariabelen er satt til banen til katalogen du vil beregne den totale filstørrelsen for. Erstatt /bane/til/din/katalog med den faktiske banen.
    3. Du-kommandoen brukes til å beregne filplassbruk. Alternativene som brukes er:
      • -c: Produser en totalsum.
      • -s: Vis kun den totale størrelsen på den angitte katalogen.
      • -h: Utskriftsstørrelser i et format som kan leses av mennesker (f.eks. KB, MB, GB).
    4. Utdataene fra du sendes til grep total for å filtrere ut linjen som inneholder den totale størrelsen.
    5. awk '{print $1}' brukes til å trekke ut det første feltet (total størrelse) fra linjen.
    6. Den beregnede totale størrelsen lagres i variabelen total_size.
    7. Til slutt viser skriptet den totale størrelsen ved hjelp av ekko.
    Total størrelse på filer

    Total størrelse på filer

    Her brukte vi ` pwd ` kommando for å se gjeldende katalogbane.

    22) Forklar forskjellen mellom if- og elif-setninger i shell-scripting.

    Trekk `hvis` Staiftement `elif`-uttalelse
    Hensikt Forklar forskjellen mellom if- og elif-setninger i shell-scripting. Gir alternative betingelser for å sjekke når den innledende hvis betingelsen er falsk.
    bruk Brukt til den opprinnelige tilstanden. Brukes etter den opprinnelige tilstanden for å sjekke ytterligere forhold.
    antall blokker Kan bare ha én hvis blokk. Kan ha flere elif-blokker, men bare én annen blokk (valgfritt).
    Henrettelse Utfører kodeblokken knyttet til if-setningen hvis betingelsen er sann. Hvis betingelsen er usann, utføres else-blokken (hvis den finnes) (valgfritt). Sjekker hver elif-tilstand i rekkefølge. Hvis en elif-betingelse er sann, blir den tilsvarende kodeblokken utført, og skriptet avslutter hele den betingede blokken. Hvis ingen av elif-betingelsene er sanne, blir else-blokken (hvis tilstede) utført.
    Nestede strukturer Kan nestes i andre if-, elif- eller else-blokker. Kan ikke nestes i en annen elif-blokk, men kan brukes i en if eller else-blokk.

    La oss forstå det med et eksempel.

    #!/bin/bash
    tall=5
    if [ $nummer -gt 10 ]; deretter
    ekko $nummer er større enn 10
    ellers
    echo $nummer er ikke større enn 10
    være
    ekko ---
    if [ $nummer -gt 10 ]; deretter
    ekko $nummer er større enn 10
    elif [$nummer -eq 10 ]; deretter
    ekko $nummer er lik 10
    ellers
    ekko $nummer er mindre enn 10
    være

    Forklaring:

    I dette eksemplet sjekker den første if-blokken om tallet er større enn 10. Hvis ikke, skriver den ut en melding som indikerer at tallet ikke er større enn 10. Den andre blokken med elif-setninger sjekker flere betingelser sekvensielt til en av dem er sann. I dette tilfellet, siden verdien av tallet er 5, vil utgangen være:

    if_elif forskjell

    if_elif forskjell

    23) Hvordan bruker du en while-løkke til å utføre kommandoer gjentatte ganger?

    En while-løkke brukes i shell-skripting for å gjentatte ganger utføre et sett med kommandoer så lenge en spesifisert betingelse er sann. Løkken fortsetter å utføre kommandoene til betingelsen blir falsk.

    Her er den grunnleggende syntaksen til en while-løkke:

    while [betingelse]; gjøre
    # Kommandoer som skal utføres
    ferdig

    Forklaring:

    1. `while`-løkken starter med nøkkelordet `while` etterfulgt av en betingelse omsluttet av hakeparenteser `[ ]`.
    2. Sløyfens hoveddel, som inneholder kommandoene som skal utføres, er omsluttet av nøkkelordene 'do' og 'done'.
    3. Løkken sjekker først tilstanden. Hvis betingelsen er sann, utføres kommandoene i løkkelegemet. Etter at loop-kroppen er utført, kontrolleres betingelsen igjen, og prosessen gjentas til betingelsen blir falsk.

    Eksempel: Hvis vi ønsker å skrive ut tall fra 1 til 5

    #!/bin/bash
    teller=1
    while [ $counter -le 5 ]; gjøre
    ekkonummer: $counter
    teller=$((teller + 1))
    ferdig

    Forklaring:

    • Tellervariabelen er satt til 1.
    • While-løkken sjekker om verdien til telleren er mindre enn eller lik 5. Så lenge denne betingelsen er sann, fortsetter løkken å kjøre.
    • Inne i sløyfen skrives gjeldende verdi av telleren ved bruk av ekko.
    • Telleren økes med 1 ved å bruke uttrykket $((teller + 1)).
    mens loop

    mens loop

    24) Lag et shell-skript som finner og viser alle tomme filer i en katalog.

    Shell-skript som du kan bruke til å finne og liste alle tomme filer i en katalog ved å bruke kommandoene `finn` og `stat`:

    #!/bin/bash
    katalog=$1″
    if [ -z $katalog ]; deretter
    ekkobruk: $0
    utgang 1
    være

    hvis [! -d $katalog ]; deretter
    echo Error: '$directory' er ikke en gyldig katalog.
    utgang 1
    være
    echo tomme filer i $katalogen:
    finn $katalog -type f -tom

    Forklaring:

    1. ` #!/bin/bash `: Dette kalles en shebang, og det forteller operativsystemet å bruke Bash-skallet til å tolke og utføre skriptet.
    2. ` katalog=$1″ `: Denne linjen tildeler det første kommandolinjeargumentet (angitt med $1) til variabelen ` katalog `.
    3. ` if [ -z $katalog ]; deretter `: Denne linjen starter en if-setning som sjekker om ` katalog ` variabelen er tom (-z tester for en tom streng).
    4. ` ekkobruk: $0 `: Hvis katalogen er tom, skriver denne linjen ut en bruksmelding, hvor ` $0 ` representerer skriptets navn.
    5. ` utgang 1 `: Denne linjen avslutter skriptet med en utgangskode på ` 1 `, som indikerer en feil.
    6. ` være `: Denne linjen markerer slutten på ` hvis ` uttalelse.
    7. ` hvis [! -d $katalog ]; deretter `: Dette starter en annen if-setning for å sjekke om den oppgitte katalogen eksisterer (` -d ` tester for en katalog).
    8. ` echo Error: '$directory' er ikke en gyldig katalog. `: Hvis den oppgitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
    9. ` utgang 1 `: Går ut av skriptet med en utgangskode på ` 1 `.
    10. ` være `: Markerer slutten på den andre ` hvis` uttalelse.
    11. ` echo tomme filer i $katalogen: `: Hvis alt er gyldig så langt, skriver denne linjen ut en melding som indikerer at skriptet vil vise tomme filer i den angitte katalogen.
    12. ` finn $katalog -type f -tom `: Denne linjen bruker ` finne ` kommando for å søke etter tomme filer (` -tømme `) av typen vanlige filer (` -type f `) i den angitte katalogen. Den viser deretter disse tomme filene.
    Finner tomme filer

    Finner tomme filer

    Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/

    25) Hva er hensikten med read-kommandoen i shell-scripting?

    Les-kommandoen i shell-scripting lar skriptet spørre deg om informasjon. Det er som når en datamaskin stiller deg et spørsmål og venter på svaret ditt. Dette er nyttig for skript som krever at du skriver noe eller når skriptet trenger å fungere med informasjon fra filer. Lese-kommandoen hjelper skriptet å stoppe og vente på det du skriver, og så kan det bruke den informasjonen til å gjøre flere ting i skriptet.

    Syntaks for lesekommando:

    read variable_name>

    Eksempel : Hvis vi ønsker å ta navn som et input fra brukeren for å skrive det ut.

    #!/bin/bash
    echo Vennligst skriv inn navnet ditt:
    lese navn
    echo Hei, $navn!

    453

    les nam

    Oppsummert brukes lesekommandoen til å fange opp brukerinndata eller data fra filer i shell-skript, noe som gjør skriptene mer interaktive og allsidige.

    26) Skriv et shell-script som konverterer alle filnavn i en katalog til små bokstaver.

    Her er et skallskript som konverterer alle filnavn i en katalog til små bokstaver.

    #!/bin/bash
    katalog=$1″
    if [ -z $katalog ]; deretter
    ekkobruk: $0
    utgang 1
    være

    hvis [! -d $katalog ]; deretter

    echo Error: '$directory' er ikke en gyldig katalog.
    utgang 1
    være

    cd $katalog || utgang 1

    for fil i *; gjøre
    if [ -f $fil ]; deretter
    newname=$(ekko $fil | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    være
    ferdig

    Forklaring:

    1. #!/bin/bash : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
    2. katalog=$1″ : Denne linjen tildeler det første kommandolinjeargumentet til variabelkatalogen.
    3. if [ -z $katalog ]; deretter : Denne linjen sjekker om katalogvariabelen er tom (ingen argument oppgitt når skriptet kjøres).
    4. ekkobruk: $0 : Hvis katalogen er tom, skriver denne linjen ut en bruksmelding med skriptets navn ($0).
    5. utgang 1 : Denne linjen går ut av skriptet med en utgangskode på 1, noe som indikerer at det har oppstått en feil.
    6. f i: Dette markerer slutten på den første if-setningen.
    7. hvis [! -d $katalog ]; deretter : Denne linjen sjekker om den angitte katalogen ikke eksisterer (-d tester for en katalog).
    8. echo Error: '$directory' er ikke en gyldig katalog. : Hvis den angitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
    9. utgang 1 : Går ut av skriptet med en utgangskode på 1.
    10. være : Markerer slutten av den andre if-setningen.
    11. cd $katalog || utgang 1 : Endrer gjeldende arbeidskatalog til spesifisert katalog. Hvis katalogendringen mislykkes (f.eks. ikke-eksisterende katalog), avsluttes skriptet med en feilkode.
    12. for fil i *; gjøre: Jeg for fil i *; gjøre: starter en løkke som itererer over alle elementer i gjeldende katalog (* samsvarer med alle filnavn).
    13. if [ -f $fil ]; deretter : Sjekker om gjeldende loop-iterasjonselement er en vanlig fil (-f tester for en vanlig fil).
    14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer gjeldende filnavn ($file) til små bokstaver ved å bruke tr-kommandoen og lagrer resultatet i newname-variabelen.
    15. [ $file != $newname ] && mv $file $newname : Sammenligner det opprinnelige filnavnet med det nye filnavnet med små bokstaver. Hvis de er forskjellige, gir den nytt navn til filen ved å bruke mv-kommandoen.
    16. være : Markerer slutten av den indre if-setningen.
    17. ferdig : Markerer slutten av løkken.

    454

    Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/test

    27) Hvordan kan du bruke aritmetiske operasjoner i et skallskript?

    Aritmetiske operasjoner kan utføres i et skallskript ved hjelp av ulike innebygde metoder. Skallet gir mekanismer for enkle aritmetiske beregninger ved bruk av aritmetisk utvidelse som:

    1. Aritmetisk utvidelse ($((...)))
    2. Bruke expr Command
    3. Bruk let Command

    Her er vårt Shell-skript som forklarer alle tre metodene for aritmetiske operasjoner.

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

    #Aritmetisk utvidelse ($((...)))

    resultat=$((tall1 + tall2))
    echo Sum: $resultat

    #Bruk av kommandoen expr

    sum=$(utløp $num1 + $num2)
    echo Sum: $sum

    #Bruke let Command

    la sum = tall1 + tall2
    echo Sum: $sum

    Forklaring:

    1. `#!/bin/bash` : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
    2. `num1=10` og ` num2=5` : Disse linjene tildeler verdiene 10 og 5 til variablene ` nummer1 ` og ` nummer2 `, henholdsvis.
    3. `#Aritmetisk utvidelse ($((...)))` : Dette er en kommentar som indikerer starten på delen som viser aritmetisk utvidelse.
    4. `resultat=$((tall1 + tall2))` : Denne linjen bruker aritmetisk utvidelse for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` resultat ` variabel.
    5. `echo Sum: $result` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` resultat ` variabel.
    6. `#Using expr Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` uttr ` kommando for aritmetiske operasjoner.
    7. `sum=$(uttr $num1 + $num2)` : Denne linjen bruker ` uttr ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` sum ` variabel. Merk at ` uttr ` kommando krever mellomrom rundt operatørene.
    8. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
    9. `#Bruke let Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` la ` kommando for aritmetiske operasjoner.
    10. `la sum = num1 + num2″` : Denne linjen bruker ` la ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og tildeler resultatet til ` sum ` variabel. Den ` la ` kommandoen krever ikke mellomrom rundt operatørene.
    11. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
    aritmetikk

    aritmetikk

    28) Lag et skript som sjekker om en nettverksvert er tilgjengelig.

    Her er et enkelt skallskript som bruker ping-kommandoen for å sjekke om en nettverksvert er tilgjengelig:

    #!/bin/bash
    vert=$1″
    if [ -z $vert ]; deretter
    ekkobruk: $0
    utgang 1
    være
    ping -c 4 $vert

    hvis [$? -eq 0]; deretter
    echo $host er tilgjengelig.
    ellers
    echo $host er ikke tilgjengelig.
    være

    Forklaring:

    1. Den tar et vertsnavn eller IP-adresse som argument og sjekker om argumentet er oppgitt.
    2. Hvis ingen argumenter er oppgitt, viser den en bruksmelding og avsluttes.
    3. Den bruker ping-kommandoen med -c 4-alternativet for å sende fire ICMP-ekkoforespørsler til den angitte verten.
    4. Etter at ping-kommandoen kjører, sjekker den utgangsstatusen ($?). Hvis utgangsstatusen er 0, betyr det at verten er tilgjengelig og skriptet skriver ut en suksessmelding. Ellers skriver den ut en feilmelding.

    456

    Merk : Vi må oppgi et vertsnavn som argument når vi kjører skriptet. Her har vi brukt google.com

    29) Skriv et Shell-skript for å finne det største elementet i en matrise:

    Her er et skallskript for å finne det beste elementet i en matrise.

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

    # Initialiser en variabel for å lagre maksimumsverdien, start med det første elementet

    max=${array[0]}

    # Iterer gjennom matrisen

    for num i ${array[@]}; gjøre

    # Sammenlign hvert element med gjeldende maksimum

    if ((antall> maks)); deretter
    maks=$antall
    være
    ferdig

    # Skriv ut maksimumsverdien

    echo Maksimumselementet i matrisen er: $max

    Forklaring:

    1. ` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.
    2. ` array=(3 56 24 89 67) `: Matrisen er deklarert og initialisert med verdier.
    3. ` max=${array[0]} `: `max` initialiseres med det første elementet i matrisen.
    4. ` for num i ${array[@]}; gjøre `: En `for`-løkke brukes til å iterere gjennom elementene i matrisen.
    5. ` if ((antall> maks)); deretter `: En `if`-setning sjekker om det gjeldende elementet `num` er større enn gjeldende maksimum `max`.
    6. ` max=$num`: If`num ` er større enn `max`, `max` er oppdatert med verdien av num.
    7. ` ferdig `: `For`-sløyfen er lukket.
    8. ` echo Maksimumselementet i matrisen er: $max `: Til slutt skriver skriptet ut den maksimale verdien som finnes i matrisen.
    461

    største antall

    30) Skriv et skript for å beregne summen av elementer i en matrise.

    #!/bin/bash

    # Deklarer en matrise

    array=(1 65 22 19 94)

    # Initialiser en variabel for å lagre summen

    sum=0

    # Iterer gjennom matrisen og legg til hvert element til summen

    for num i ${array[@]}; gjøre
    am=$((am + am))
    ferdig

    # Skriv ut summen

    echo Summen av elementene i matrisen er: $sum

    Forklaring:

    ` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.

    ` array=(1 65 22 19 94) `: Matrisen er deklarert og initialisert med verdier.

    ` sum=0 `:` sum ` initialiseres til null for å holde summen av elementer.

    ` for num i ${array[@]}; gjøre `: A ` til ` loop brukes til å iterere gjennom elementene i matrisen.

    ` am=$((am + am)) `: Inne i løkken, hvert element ` på en ` er lagt til ` sum ` variabel.

    ` ferdig `: Den ` til `-sløyfen er lukket.

    `echo Summen av elementene i matrisen er: $sum`: Til slutt skriver skriptet ut summen av alle elementene i matrisen.

    462

    Summen av elementer

    Finn ut mer om Shell-skript

    Konklusjon

    Vi alle nerder vet at shell-script er veldig nyttig for å øke arbeidsproduktiviteten, så vel som det sparer tid. Så i denne artikkelen har vi dekket 30 veldig nyttige og mest besnærende shell-skripteksempler . Vi håper at denne komplette veiledningen for eksempel på shell-skript hjelper deg med å forstå alt om shell-skriptene.



    `: Hvis katalogen er tom, skriver denne linjen ut en bruksmelding, hvor `

    For alle Linux-distribusjonene er shell-skriptet som en tryllestav som automatiserer prosessen, sparer brukere tid og øker produktiviteten. Denne skal-skriptopplæringen vil introdusere deg til 25 pluss-skal-skripteksemplene.

    Men før vi går over til temaet shell scripting eksempler, la oss forstå shell script og de faktiske brukstilfellene av shell scripting.

    Hva er Shell Script?

    Vel, skallet er en CLI ( kommandolinjetolk ), som kjører i et tekstvindu der brukere kan administrere og utføre skallkommandoer. På den annen side, prosessen med å skrive et sett med kommandoer som skal utføres på et Linux-system. En fil som inneholder slike instruksjoner kalles et bash-skript.

    Bruk av Shell-skript

    Nedenfor er noen vanlige bruksområder for Shell Script:

    • Oppgaveautomatisering – Den kan brukes til å automatisere repeterende oppgaver som vanlige sikkerhetskopier og programvareinstallasjonsoppgaver.
    • Tilpasning – Man kan bruke shell-skript for å designe kommandolinjemiljøet og enkelt utføre oppgaven etter behov.
    • Filbehandling - Skallskriptene kan også brukes til å administrere og manipulere filer og kataloger, for eksempel å flytte, kopiere, gi nytt navn eller slette filer.

    Shell Script eksempler i Linux

    1) Hva indikerer shebang (#!) i begynnelsen av et skallskript?

    De shebang (#!) i begynnelsen av et skript indikerer tolken som skal brukes til å utføre skriptet. Den forteller systemet hvilket skall eller tolk som skal tolke skriptets kommandoer.

    For eksempel: Anta at vi har et skript som heter myscript.sh skrevet i Bash-skallet:

    shebang

    shebang

    I dette eksemplet:

    • #!/bin/bash i begynnelsen av skriptet indikerer at skriptet skal tolkes med Bash-skallet.
    • Ekkokommandoene brukes til å skrive ut meldinger til terminalen.

    2) Hvordan kjører du et shell-skript fra kommandolinjen?

    For å kjøre et skallskript fra kommandolinjen, må vi følge disse trinnene:

    • Sørg for at skriptfilen har kjørbare tillatelser ved å bruke chmod kommando :
    chmod +x myscript.sh>
    • Kjør skriptet med filnavnet:
    ./myscript.sh>

    Her må du bytte ut myscrtipt.sh med ditt manusnavn.

    3) Skriv et shell-script som skriver ut techcodeview.com til terminalen.

    Opprett et skriptnavn `myscript.sh` (vi bruker ` fordi ` editor, du kan velge hvilken som helst editor)

    vim myscript.sh>

    #!/bin/bash
    # Dette skriptet skriver ut techcodeview.com til terminalen
    echo techcodeview.com

    skrive ut navn

    skrive ut navn

    Vi gjør skriptet vårt kjørbart ved å bruke `chmod +x` og kjør deretter med `./myscipt.sh` og få ønsket utdata techcodeview.com.

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

    De ekko kommando brukes til å vise tekst eller variabler på terminalen. Det brukes ofte til å skrive ut meldinger, variable verdier og generere programutdata.

    434

    ekko kommando

    I dette eksemplet har vi kjørt 'echo' direkte på terminal, siden det fungerer på samme måte i shell-skriptet.

    5) Hvordan kan du tilordne en verdi til en variabel i et shell-skript?

    Variabler tildeles verdier ved å bruke tilordningsoperatoren =.

    For eksempel:

    #!/bin/bash
    # Tilordne en verdi til en variabel
    navn=Jayesh
    alder=21
    echo $navn $age

    Forklaring:

    • Navnevariabelen tildeles verdien Jayesh.
    • Aldersvariabelen tildeles verdien 21.
    • echo brukes til å skrive ut og `$name` `$age` brukes til å kalle verdien som er lagret i variablene.

    435

    6) Skriv et shell-skript som tar en brukers navn som input og hilser dem velkommen.

    Opprett et skriptnavn `example.sh`.

    #!/bin/bash
    # Spør brukeren om navnet
    echo Hva heter du?
    lese navn
    # Hils brukeren
    echo Hei, $navn! Hyggelig å møte deg.

    Forklaring:

    • #!/bin/bash: Dette er shebang-linjen. Det forteller systemet å bruke Bash-tolken til å utføre skriptet.
    • # Spør brukeren om navnet sitt: Dette er en kommentar. Det gir kontekst om den kommende koden. Kommentarer ignoreres av tolken.
    • echo Hva heter du?: Ekko-kommandoen brukes til å vise teksten i doble anførselstegn på terminalen.
    • read name: Read-kommandoen venter på at brukeren skal legge inn tekst og lagrer den i variabelnavnet.
    • echo Hei, $navn! Hyggelig å møte deg.: Denne linjen bruker ekko-kommandoen til å skrive ut en hilsen som inkluderer verdien av navnevariabelen, som ble samlet inn fra brukerens input.

    436

    7) Hvordan legger du til kommentarer til et shell-skript?

    Kommentarer i shell scripting brukes til å gi forklaringer eller kontekst til koden. De blir ignorert av tolken og er kun ment for mennesker som leser manuset. Du kan legge til kommentarer ved å bruke #-symbolet.

    #!/bin/bash
    # Dette er en kommentar som forklarer formålet med manuset
    ekko gfg

    8) Lag et shell-script som sjekker om det finnes en fil i gjeldende katalog.

    Her er et skript som sjekker om en fil med navnet example.txt finnes i gjeldende katalog:

    #!/bin/bash
    file=example.txt
    # Sjekk om filen eksisterer
    if [ -e $fil ]; deretter
    echo Filen eksisterer: $file
    ellers
    echo Fil ikke funnet: $file
    være

    Forklaring:

    1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
    2. file=example.txt: Denne linjen definerer variabelfilen og tilordner verdien example.txt til den. Du kan erstatte dette med navnet på filen du vil se etter.
    3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Betingelsen [ -e $file ] sjekker om filen spesifisert av verdien til filvariabelen eksisterer. -e-flagget brukes til å sjekke om filen eksisterer.
    4. echo File exists: $file: Hvis betingelsen er sann (dvs. filen eksisterer), skriver denne linjen ut en melding som indikerer at filen eksisterer, sammen med filens navn.
    5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), kjører skriptet koden under else-grenen.
    6. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet, sammen med filens navn.
    7. fi: Denne linjen markerer slutten på if-setningen.
    Finner fil

    Finner fil

    9) Hva er forskjellen mellom enkle anførselstegn (') og doble anførselstegn () i shell-scripting?

    Enkelte anførselstegn (') og doble anførselstegn () brukes til å omslutte strenger i shell-scripting, men de har forskjellig oppførsel:

    • Enkeltsitater: Alt mellom enkeltsitater behandles som en bokstavelig streng. Variabelnavn og de fleste spesialtegn utvides ikke.
    • Doble anførselstegn: Variabler og visse spesialtegn innenfor doble anførselstegn utvides. Innholdet er underlagt variabel substitusjon og kommandosubstitusjon.

    #!/bin/bash

    abcd=Hei
    ekko '$abcd' # Utgang: $abcd
    echo $abcd # Utgang: Hei

    10) Hvordan kan du bruke kommandolinjeargumenter i et shell-skript?

    Kommandolinjeargumenter er verdier gitt til et skript når det kjøres. De kan nås i skriptet ved å bruke spesielle variabler som $1, $2, etc., der $1 representerer det første argumentet, $2 representerer det andre argumentet, og så videre.

    For eksempel: Hvis skriptnavnet vårt i `example.sh`

    #!/bin/bash

    echo Skriptnavn: $0
    echo Første argument: $1
    echo Andre argument: $2

    Hvis vi kjører skriptet med `.example.sh hello_1 hello_2`, vil det sende ut:

    kli argumenter

    kli argumenter

    11) Hvordan bruker du for-løkken til å iterere gjennom en liste med verdier?

    Opprett et skriptnavn `example.sh`.

    #!/bin/bash

    frukt=(eple banan kirsebærdato)
    for frukt i ${fruits[@]}; gjøre
    echo Nåværende frukt: $fruit
    ferdig

    Forklaring:

    `fruits=`-linjen lager en matrise kalt frukt med fire elementer: eple, banan, kirsebær og daddel.

    • for frukt i ${fruits[@]}; do: Denne linjen starter en for-løkke. Her er hva hver del betyr:
    • for frukt: Dette erklærer en løkkevariabel kalt frukt. I hver iterasjon av løkken vil frukt holde verdien av det gjeldende elementet fra frukt-arrayen.
    • ${fruits[@]}: Dette er en matriseutvidelse som tar alle elementene fra fruktmatrisen. ${…}-syntaksen sikrer at hvert element behandles som et separat element.
    • do: Dette nøkkelordet markerer begynnelsen av løkken.
    • echo Current fruit: $fruit: Inne i loopen bruker denne linjen echo-kommandoen for å vise gjeldende verdi av loop-variabelen fruit. Den skriver ut en melding som Current fruit: apple for hver frukt i matrisen.
    • ferdig: Dette nøkkelordet markerer slutten av løkken. Den forteller skriptet at loopen er ferdig.
    for løkke

    for løkke

    12) Skriv et skallskript som beregner summen av heltall fra 1 til N ved hjelp av en løkke.

    Opprett et skriptnavn `example.sh`.

    #!/bin/bash

    echo Skriv inn et tall (N):
    les N
    sum=0
    for ((i=1; i<=$N; i++)); gjøre
    sum=$((sum + i))
    ferdig
    ekko Summen av heltall fra 1 til $N er: $sum

    Forklaring:
    Skriptet starter med å be deg skrive inn et tall (N) ved å bruke read. Dette tallet vil avgjøre hvor mange ganger sløyfen kjøres.

    1. Variabelsummen initialiseres til 0. Denne variabelen vil holde styr på summen av heltall.
    2. For-løkken begynner med for (( i=1; i<=$N; i++ )). Denne sløyfestrukturen brukes til å gjenta et sett med handlinger et visst antall ganger, i dette tilfellet fra 1 til verdien av N.
    3. Inne i loopen skjer disse tingene:
      • i=1 setter løkkevariabelen i til 1 i begynnelsen av hver iterasjon.
      • Sløyfebetingelsen i<=$N sjekker om i fortsatt er mindre enn eller lik det gitte tallet N.
      • Hvis betingelsen er sann, utføres loop body.
      • sum=$((sum + i)) beregner den nye verdien av sum ved å legge til den nåværende verdien av i. Dette legger opp heltallene fra 1 til gjeldende i-verdi.
    4. Etter hver iterasjon øker i++ verdien av i med 1.
    5. Løkken fortsetter å kjøre til betingelsen i<=$N blir usann (når i blir større enn N).
    6. Når sløyfen er ferdig, viser skriptet summen av heltallene fra 1 til det angitte tallet N.

    439

    13) Lag et skript som søker etter et spesifikt ord i en fil og teller dets forekomster.

    Opprett et skriptnavn `word_count.sh`

    #!/bin/bash

    echo Skriv inn ordet du vil søke etter:
    les målord
    echo Skriv inn filnavnet:
    les filnavn
    count=$(grep -o -w $target_word $filnavn | wc -l)
    echo Ordet '$target_word' vises $count ganger i '$filnavn'.

    Forklaring:

    • echo Skriv inn ordet det skal søkes etter:: Denne linjen viser en melding som ber brukeren skrive inn et ord de vil søke etter i en fil.
    • les målord: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt målord.
    • echo Skriv inn filnavnet:: Denne linjen viser en melding som ber brukeren skrive inn navnet på filen de vil søke i.
    • les filnavn: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt filnavn.
    • count=$(grep -o -w $målord $filnavn | wc -l): Denne linjen gjør hovedarbeidet med skriptet. La oss bryte det ned ytterligere:
      • grep -o -w $målord $filnavn: Denne delen av kommandoen søker etter forekomster av målordet i det angitte filnavnet. Alternativene -o og -w sørger for at kun hele ordtreff telles.
      • |: Dette er et rør som tar utdata fra forrige kommando og sender det som input til neste kommando.
      • wc -l: Denne delen av kommandoen bruker wc-kommandoen til å telle antall linjer i inngangen. Alternativet -l teller spesifikt linjene.
      • Hele kommandoen beregner antallet forekomster av target_word i filen og tilordner det antallet til variabelen count

    441

    14) Forklar forskjellene mellom standard utgang (stdout) og standardfeil (stderr).

    Hovedforskjellen mellom standard utgang (stdout) og standardfeil (stderr) er som følger:

    • Standard utgang (stdout): Dette er standard utdatastrøm der en kommandos vanlige utgang går. Det vises på terminalen som standard. Du kan omdirigere den til en fil ved å bruke>.
    • Standardfeil (stderr): Dette er utdatastrømmen for feilmeldinger og advarsler. Det vises også på terminalen som standard. Du kan omdirigere den til en fil ved å bruke 2>.

    15) Forklar konseptet med betingede utsagn i shell-scripting.

    Betingede utsagn i shell-scripting tillate oss å ta avgjørelser og kontrollere flyten av skriptet vårt basert på visse forhold. De gjør det mulig for skriptet vårt å utføre forskjellige sett med kommandoer avhengig av om en bestemt betingelse er sann eller usann. De primære betingede setningene i shell-scripting er if-setningen, elif-setningen (valgfritt) og else-setningen (valgfritt).

    Her er den grunnleggende strukturen til en betinget uttalelse i shell-scripting:

    if [betingelse]; deretter
    # Kommandoer som skal utføres hvis betingelsen er sann
    elif [en annen_tilstand]; deretter
    # Kommandoer som skal utføres hvis another_condition er sann (valgfritt)
    ellers
    # Kommandoer som skal utføres hvis ingen av betingelsene er sanne (valgfritt)
    være

    Forklaring:

    • [ condition ] = Kommando som evaluerer betingelsen og returnerer en sann (0) eller falsk (ikke-null) utgangsstatus.
    • then = Det er et nøkkelord som indikerer at kommandoene etter det vil bli utført hvis betingelsen evalueres til sann.
    • elif = (forkortelse for else if) Det er en del som lar oss spesifisere ytterligere betingelser for å sjekke.
    • else = det er en seksjon som inneholder kommandoer som vil bli utført hvis ingen av betingelsene er sanne.
    • fi = Det er et nøkkelord som markerer slutten på den betingede blokken.

    16) Hvordan leser du linjer fra en fil i et shell-skript?

    Til lese linjer fra en fil i et shell-skript kan vi bruke forskjellige metoder, men en vanlig tilnærming er å bruke en while-løkke i kombinasjon med read-kommandoen. Slik kan vi gjøre det:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Sjekk om filen eksisterer
    if [ -e $fil ]; deretter
    mens IFS= read -r line; gjøre
    echo Line read: $line
    # Legg til behandlingslogikken din her
    ferdig <$fil
    ellers
    echo Fil ikke funnet: $file
    være

    Forklaring:

    1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
    2. file=/home/jayeshkumar/jayesh.txt: Denne linjen definerer variabelfilen og tildeler hele banen til filen jayesh.txt i /home/jayeshkumar-katalogen. Endre denne banen for å matche den faktiske banen til filen du vil lese.
    3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Den sjekker om filen spesifisert av variabelen $file eksisterer. -e-flagget sjekker om filen eksisterer.
    4. mens IFS= read -r line; do: Denne linjen starter en while-løkke som leser linjer fra filen.
      • IFS=: IFS (Internal Field Separator) er satt til en tom verdi for å bevare innledende og etterfølgende mellomrom.
      • les -r linje: Dette leser gjeldende linje fra filen og lagrer den i variabellinjen.
    5. echo Line read: $line: Denne linjen skriver ut innholdet i linjen som ble lest fra filen. Variabelen $line inneholder gjeldende linjes innhold.
    6. # Legg til behandlingslogikken din her: Dette er en plassholderkommentar der du kan legge til din egen logikk for å behandle hver linje. Du kan for eksempel analysere linjen, trekke ut informasjon eller utføre spesifikke handlinger basert på innholdet.
    7. done <$file: Dette markerer slutten på while-løkken. < $filen omdirigerer innholdet i filen som skal leses av loopen.
    8. else: Hvis filen ikke eksisterer (betingelsen i if-setningen er usann), kjører skriptet koden under else-grenen.
    9. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet.
    10. fi: Denne linjen markerer slutten på if-setningen.
    lese fil

    lese fil

    Her brukte vi ` pwd ` kommando for å få banen til gjeldende katalog.

    17) Skriv en funksjon i et skallskript som beregner faktoren til et gitt tall.

    Her er manuset somberegne faktorenav et gitt tall.

    #!/bin/bash
    # Definer en funksjon for å beregne faktorial
    beregne_faktor() {
    num=$1
    fakta=1
    for ((i=1; i<=antall; i++)); gjøre
    fakta=$((fakta * i))
    ferdig
    ekko $fakta
    }
    # Be brukeren om å angi et nummer
    echo Skriv inn et tall:
    les input_num
    # Kall calculate_fatorial-funksjonen med inndatanummeret
    factorial_result=$(calculate_fatorial $input_num)
    # Vis det faktorielle resultatet
    echo Factorial av $input_num er: $factorial_result

    Forklaring:

    1. Skriptet starter med shebang-linjen #!/bin/bash for å spesifisere tolken.
    2. calculate_fatorial() er definert som en funksjon. Det krever ett argument, num, som er tallet som faktoren må beregnes for.
    3. Inne i funksjonen initialiseres fakta til 1. Denne variabelen vil lagre det faktorielle resultatet.
    4. For-løkken itererer fra 1 til det gitte tallet (num). I hver iterasjon multipliserer den gjeldende faktaverdi med loopindeksen i.
    5. Etter at løkken er fullført, inneholder faktavariabelen den beregnede faktoren.
    6. Skriptet ber brukeren om å skrive inn et tall ved hjelp av read.
    7. Beregn_faktorfunksjonen kalles med det brukerangitte tallet, og resultatet lagres i variabelen faktorielt_resultat.
    8. Til slutt viser skriptet det beregnede faktorielle resultatet.
    Faktoriell

    Faktoriell

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

    I et shell-skript kan du håndtere signaler som Ctrl+C (også kjent som SIGINT) ved å bruke trap-kommandoen. Ctrl+C genererer et SIGINT-signal når brukeren trykker på det for å avbryte det kjørende skriptet eller programmet. Ved å bruke trap-kommandoen kan du spesifisere handlinger som skal utføres når et bestemt signal mottas. Slik håndterer du signaler som Ctrl+C i et skallskript:

    #!/bin/bash
    rydde opp() {
    ekko Skriptet avbrutt. Utfører opprydding …
    # Legg til oppryddingshandlingene dine her
    utgang 1
    }
    # Sett opp en felle for å kalle opp rensefunksjonen når Ctrl+C (SIGINT) mottas
    felleopprydding SIGINT
    # Resten av manuset ditt
    ekko kjører...
    sove 10
    ekko Fullført.

    Håndtering av signaler er viktig for å gjøre skript robuste og sikre at de håndterer uventede avbrudd på en elegant måte. Du kan tilpasse oppryddingsfunksjonen for å matche dine spesifikke behov, som å lukke filer, stoppe prosesser eller logge informasjon før skriptet avsluttes.

    Forklaring:

    1. #!/bin/bash: Denne shebang-linjen spesifiserer tolken som skal brukes for å kjøre skriptet.
    2. cleanup() { … }: Dette definerer en funksjon som heter cleanup. Inne i denne funksjonen kan du inkludere alle handlinger som må utføres når skriptet blir avbrutt, for eksempel å lukke filer, frigjøre ressurser eller utføre andre oppryddingsoppgaver.
    3. trap cleanup SIGINT: Trappe-kommandoen brukes til å sette opp en signalbehandler. I dette tilfellet spesifiserer det at når SIGINT-signalet (Ctrl+C) mottas, skal oppryddingsfunksjonen utføres.
    4. echo Running…, sleep 10, echo Finished.: Dette er bare eksempelkommandoer for å simulere kjøringen av et skript.

    446

    19) Lag et skript som ser etter og fjerner dupliserte linjer i en tekstfil.

    Her er linux-skriptet vårt der vi fjerner dupliserte linjer fra en tekstfil.

    #!/bin/bash
    input_file=input.txt
    output_file=output.txt
    sorter $input_file | uniq> $output_file
    echo Dupliserte linjer ble fjernet.

    Forklaring:

    1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at skriptet skal tolkes ved hjelp av Bash-skallet.
    2. Variabelen input_file er satt til navnet på inputfilen som inneholder dupliserte linjer (endre dette til ditt faktiske inputfilnavn).
    3. Variabelen output_file er satt til navnet på utdatafilen der duplikatene vil bli fjernet (endre dette til ønsket utdatafilnavn).
    4. Skriptet bruker sorteringskommandoen til å sortere linjene i inndatafilen. Sortering av linjene sikrer at dupliserte linjer grupperes sammen.
    5. De sorterte linjene sendes deretter gjennom uniq-kommandoen, som fjerner påfølgende dupliserte linjer. Utdataene fra denne prosessen blir omdirigert til utdatafilen.
    6. Etter at duplikatene er fjernet, skriver skriptet ut en suksessmelding.
    duplikatlinjefjerning

    duplikatlinjefjerning

    Her bruker vi ` katt ` for å vise teksten inne i tekstfilen.

    20) Skriv et skript som genererer et sikkert tilfeldig passord.

    Her er skriptet vårt for å generere et sikkert tilfeldig passord.

    #!/bin/bash
    # Funksjon for å generere et tilfeldig passord
    generere_passord() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Ring opp funksjonen og lagre det genererte passordet
    passord=$(generer_passord)
    echo Generert passord: $password

    Merk: Brukeren kan følgelig endre lengden på passordet ved å erstatte tallet '12'.

    Forklaring:

    1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at det skal tolkes med Bash-skallet.
    2. Generer_passord-funksjonen er definert for å generere et tilfeldig passord. Slik fungerer det:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 deler de filtrerte tilfeldige dataene i linjer med bredde på 12 tegn hver.
      • head -n 1 velger den første linjen, og gir oss faktisk en tilfeldig sekvens av tegn med lengde 12.
    3. Passordvariabelen tildeles resultatet av å kalle generere_passord-funksjonen.
    4. Til slutt vises det genererte passordet ved hjelp av ekko.

    448

    21) Skriv et shell-script som beregner den totale størrelsen på alle filene i en katalog.

    Her er et shell-skript for å beregne den totale størrelsen på alle filene i en katalog.

    #!/bin/bash
    katalog=/bane/til/din/katalog
    total_size=$(du -csh $katalog | grep total | awk ‘{print $1}’)
    echo Total størrelse på filer i $katalog: $total_size

    Forklaring:

    1. Skriptet starter med #!/bin/bash shebang, noe som indikerer at det skal tolkes med Bash-skallet.
    2. Katalogvariabelen er satt til banen til katalogen du vil beregne den totale filstørrelsen for. Erstatt /bane/til/din/katalog med den faktiske banen.
    3. Du-kommandoen brukes til å beregne filplassbruk. Alternativene som brukes er:
      • -c: Produser en totalsum.
      • -s: Vis kun den totale størrelsen på den angitte katalogen.
      • -h: Utskriftsstørrelser i et format som kan leses av mennesker (f.eks. KB, MB, GB).
    4. Utdataene fra du sendes til grep total for å filtrere ut linjen som inneholder den totale størrelsen.
    5. awk '{print $1}' brukes til å trekke ut det første feltet (total størrelse) fra linjen.
    6. Den beregnede totale størrelsen lagres i variabelen total_size.
    7. Til slutt viser skriptet den totale størrelsen ved hjelp av ekko.
    Total størrelse på filer

    Total størrelse på filer

    Her brukte vi ` pwd ` kommando for å se gjeldende katalogbane.

    22) Forklar forskjellen mellom if- og elif-setninger i shell-scripting.

    Trekk `hvis` Staiftement `elif`-uttalelse
    Hensikt Forklar forskjellen mellom if- og elif-setninger i shell-scripting. Gir alternative betingelser for å sjekke når den innledende hvis betingelsen er falsk.
    bruk Brukt til den opprinnelige tilstanden. Brukes etter den opprinnelige tilstanden for å sjekke ytterligere forhold.
    antall blokker Kan bare ha én hvis blokk. Kan ha flere elif-blokker, men bare én annen blokk (valgfritt).
    Henrettelse Utfører kodeblokken knyttet til if-setningen hvis betingelsen er sann. Hvis betingelsen er usann, utføres else-blokken (hvis den finnes) (valgfritt). Sjekker hver elif-tilstand i rekkefølge. Hvis en elif-betingelse er sann, blir den tilsvarende kodeblokken utført, og skriptet avslutter hele den betingede blokken. Hvis ingen av elif-betingelsene er sanne, blir else-blokken (hvis tilstede) utført.
    Nestede strukturer Kan nestes i andre if-, elif- eller else-blokker. Kan ikke nestes i en annen elif-blokk, men kan brukes i en if eller else-blokk.

    La oss forstå det med et eksempel.

    #!/bin/bash
    tall=5
    if [ $nummer -gt 10 ]; deretter
    ekko $nummer er større enn 10
    ellers
    echo $nummer er ikke større enn 10
    være
    ekko ---
    if [ $nummer -gt 10 ]; deretter
    ekko $nummer er større enn 10
    elif [$nummer -eq 10 ]; deretter
    ekko $nummer er lik 10
    ellers
    ekko $nummer er mindre enn 10
    være

    Forklaring:

    I dette eksemplet sjekker den første if-blokken om tallet er større enn 10. Hvis ikke, skriver den ut en melding som indikerer at tallet ikke er større enn 10. Den andre blokken med elif-setninger sjekker flere betingelser sekvensielt til en av dem er sann. I dette tilfellet, siden verdien av tallet er 5, vil utgangen være:

    if_elif forskjell

    if_elif forskjell

    23) Hvordan bruker du en while-løkke til å utføre kommandoer gjentatte ganger?

    En while-løkke brukes i shell-skripting for å gjentatte ganger utføre et sett med kommandoer så lenge en spesifisert betingelse er sann. Løkken fortsetter å utføre kommandoene til betingelsen blir falsk.

    Her er den grunnleggende syntaksen til en while-løkke:

    while [betingelse]; gjøre
    # Kommandoer som skal utføres
    ferdig

    Forklaring:

    1. `while`-løkken starter med nøkkelordet `while` etterfulgt av en betingelse omsluttet av hakeparenteser `[ ]`.
    2. Sløyfens hoveddel, som inneholder kommandoene som skal utføres, er omsluttet av nøkkelordene 'do' og 'done'.
    3. Løkken sjekker først tilstanden. Hvis betingelsen er sann, utføres kommandoene i løkkelegemet. Etter at loop-kroppen er utført, kontrolleres betingelsen igjen, og prosessen gjentas til betingelsen blir falsk.

    Eksempel: Hvis vi ønsker å skrive ut tall fra 1 til 5

    #!/bin/bash
    teller=1
    while [ $counter -le 5 ]; gjøre
    ekkonummer: $counter
    teller=$((teller + 1))
    ferdig

    Forklaring:

    • Tellervariabelen er satt til 1.
    • While-løkken sjekker om verdien til telleren er mindre enn eller lik 5. Så lenge denne betingelsen er sann, fortsetter løkken å kjøre.
    • Inne i sløyfen skrives gjeldende verdi av telleren ved bruk av ekko.
    • Telleren økes med 1 ved å bruke uttrykket $((teller + 1)).
    mens loop

    mens loop

    24) Lag et shell-skript som finner og viser alle tomme filer i en katalog.

    Shell-skript som du kan bruke til å finne og liste alle tomme filer i en katalog ved å bruke kommandoene `finn` og `stat`:

    #!/bin/bash
    katalog=$1″
    if [ -z $katalog ]; deretter
    ekkobruk: $0
    utgang 1
    være

    hvis [! -d $katalog ]; deretter
    echo Error: '$directory' er ikke en gyldig katalog.
    utgang 1
    være
    echo tomme filer i $katalogen:
    finn $katalog -type f -tom

    Forklaring:

    1. ` #!/bin/bash `: Dette kalles en shebang, og det forteller operativsystemet å bruke Bash-skallet til å tolke og utføre skriptet.
    2. ` katalog=$1″ `: Denne linjen tildeler det første kommandolinjeargumentet (angitt med $1) til variabelen ` katalog `.
    3. ` if [ -z $katalog ]; deretter `: Denne linjen starter en if-setning som sjekker om ` katalog ` variabelen er tom (-z tester for en tom streng).
    4. ` ekkobruk: $0 `: Hvis katalogen er tom, skriver denne linjen ut en bruksmelding, hvor ` $0 ` representerer skriptets navn.
    5. ` utgang 1 `: Denne linjen avslutter skriptet med en utgangskode på ` 1 `, som indikerer en feil.
    6. ` være `: Denne linjen markerer slutten på ` hvis ` uttalelse.
    7. ` hvis [! -d $katalog ]; deretter `: Dette starter en annen if-setning for å sjekke om den oppgitte katalogen eksisterer (` -d ` tester for en katalog).
    8. ` echo Error: '$directory' er ikke en gyldig katalog. `: Hvis den oppgitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
    9. ` utgang 1 `: Går ut av skriptet med en utgangskode på ` 1 `.
    10. ` være `: Markerer slutten på den andre ` hvis` uttalelse.
    11. ` echo tomme filer i $katalogen: `: Hvis alt er gyldig så langt, skriver denne linjen ut en melding som indikerer at skriptet vil vise tomme filer i den angitte katalogen.
    12. ` finn $katalog -type f -tom `: Denne linjen bruker ` finne ` kommando for å søke etter tomme filer (` -tømme `) av typen vanlige filer (` -type f `) i den angitte katalogen. Den viser deretter disse tomme filene.
    Finner tomme filer

    Finner tomme filer

    Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/

    25) Hva er hensikten med read-kommandoen i shell-scripting?

    Les-kommandoen i shell-scripting lar skriptet spørre deg om informasjon. Det er som når en datamaskin stiller deg et spørsmål og venter på svaret ditt. Dette er nyttig for skript som krever at du skriver noe eller når skriptet trenger å fungere med informasjon fra filer. Lese-kommandoen hjelper skriptet å stoppe og vente på det du skriver, og så kan det bruke den informasjonen til å gjøre flere ting i skriptet.

    Syntaks for lesekommando:

    read variable_name>

    Eksempel : Hvis vi ønsker å ta navn som et input fra brukeren for å skrive det ut.

    #!/bin/bash
    echo Vennligst skriv inn navnet ditt:
    lese navn
    echo Hei, $navn!

    453

    les nam

    Oppsummert brukes lesekommandoen til å fange opp brukerinndata eller data fra filer i shell-skript, noe som gjør skriptene mer interaktive og allsidige.

    26) Skriv et shell-script som konverterer alle filnavn i en katalog til små bokstaver.

    Her er et skallskript som konverterer alle filnavn i en katalog til små bokstaver.

    #!/bin/bash
    katalog=$1″
    if [ -z $katalog ]; deretter
    ekkobruk: $0
    utgang 1
    være

    hvis [! -d $katalog ]; deretter

    echo Error: '$directory' er ikke en gyldig katalog.
    utgang 1
    være

    cd $katalog || utgang 1

    for fil i *; gjøre
    if [ -f $fil ]; deretter
    newname=$(ekko $fil | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    være
    ferdig

    Forklaring:

    1. #!/bin/bash : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
    2. katalog=$1″ : Denne linjen tildeler det første kommandolinjeargumentet til variabelkatalogen.
    3. if [ -z $katalog ]; deretter : Denne linjen sjekker om katalogvariabelen er tom (ingen argument oppgitt når skriptet kjøres).
    4. ekkobruk: $0 : Hvis katalogen er tom, skriver denne linjen ut en bruksmelding med skriptets navn ($0).
    5. utgang 1 : Denne linjen går ut av skriptet med en utgangskode på 1, noe som indikerer at det har oppstått en feil.
    6. f i: Dette markerer slutten på den første if-setningen.
    7. hvis [! -d $katalog ]; deretter : Denne linjen sjekker om den angitte katalogen ikke eksisterer (-d tester for en katalog).
    8. echo Error: '$directory' er ikke en gyldig katalog. : Hvis den angitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
    9. utgang 1 : Går ut av skriptet med en utgangskode på 1.
    10. være : Markerer slutten av den andre if-setningen.
    11. cd $katalog || utgang 1 : Endrer gjeldende arbeidskatalog til spesifisert katalog. Hvis katalogendringen mislykkes (f.eks. ikke-eksisterende katalog), avsluttes skriptet med en feilkode.
    12. for fil i *; gjøre: Jeg for fil i *; gjøre: starter en løkke som itererer over alle elementer i gjeldende katalog (* samsvarer med alle filnavn).
    13. if [ -f $fil ]; deretter : Sjekker om gjeldende loop-iterasjonselement er en vanlig fil (-f tester for en vanlig fil).
    14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer gjeldende filnavn ($file) til små bokstaver ved å bruke tr-kommandoen og lagrer resultatet i newname-variabelen.
    15. [ $file != $newname ] && mv $file $newname : Sammenligner det opprinnelige filnavnet med det nye filnavnet med små bokstaver. Hvis de er forskjellige, gir den nytt navn til filen ved å bruke mv-kommandoen.
    16. være : Markerer slutten av den indre if-setningen.
    17. ferdig : Markerer slutten av løkken.

    454

    Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/test

    27) Hvordan kan du bruke aritmetiske operasjoner i et skallskript?

    Aritmetiske operasjoner kan utføres i et skallskript ved hjelp av ulike innebygde metoder. Skallet gir mekanismer for enkle aritmetiske beregninger ved bruk av aritmetisk utvidelse som:

    1. Aritmetisk utvidelse ($((...)))
    2. Bruke expr Command
    3. Bruk let Command

    Her er vårt Shell-skript som forklarer alle tre metodene for aritmetiske operasjoner.

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

    #Aritmetisk utvidelse ($((...)))

    resultat=$((tall1 + tall2))
    echo Sum: $resultat

    #Bruk av kommandoen expr

    sum=$(utløp $num1 + $num2)
    echo Sum: $sum

    #Bruke let Command

    la sum = tall1 + tall2
    echo Sum: $sum

    Forklaring:

    1. `#!/bin/bash` : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
    2. `num1=10` og ` num2=5` : Disse linjene tildeler verdiene 10 og 5 til variablene ` nummer1 ` og ` nummer2 `, henholdsvis.
    3. `#Aritmetisk utvidelse ($((...)))` : Dette er en kommentar som indikerer starten på delen som viser aritmetisk utvidelse.
    4. `resultat=$((tall1 + tall2))` : Denne linjen bruker aritmetisk utvidelse for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` resultat ` variabel.
    5. `echo Sum: $result` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` resultat ` variabel.
    6. `#Using expr Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` uttr ` kommando for aritmetiske operasjoner.
    7. `sum=$(uttr $num1 + $num2)` : Denne linjen bruker ` uttr ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` sum ` variabel. Merk at ` uttr ` kommando krever mellomrom rundt operatørene.
    8. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
    9. `#Bruke let Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` la ` kommando for aritmetiske operasjoner.
    10. `la sum = num1 + num2″` : Denne linjen bruker ` la ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og tildeler resultatet til ` sum ` variabel. Den ` la ` kommandoen krever ikke mellomrom rundt operatørene.
    11. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
    aritmetikk

    aritmetikk

    28) Lag et skript som sjekker om en nettverksvert er tilgjengelig.

    Her er et enkelt skallskript som bruker ping-kommandoen for å sjekke om en nettverksvert er tilgjengelig:

    #!/bin/bash
    vert=$1″
    if [ -z $vert ]; deretter
    ekkobruk: $0
    utgang 1
    være
    ping -c 4 $vert

    hvis [$? -eq 0]; deretter
    echo $host er tilgjengelig.
    ellers
    echo $host er ikke tilgjengelig.
    være

    Forklaring:

    1. Den tar et vertsnavn eller IP-adresse som argument og sjekker om argumentet er oppgitt.
    2. Hvis ingen argumenter er oppgitt, viser den en bruksmelding og avsluttes.
    3. Den bruker ping-kommandoen med -c 4-alternativet for å sende fire ICMP-ekkoforespørsler til den angitte verten.
    4. Etter at ping-kommandoen kjører, sjekker den utgangsstatusen ($?). Hvis utgangsstatusen er 0, betyr det at verten er tilgjengelig og skriptet skriver ut en suksessmelding. Ellers skriver den ut en feilmelding.

    456

    Merk : Vi må oppgi et vertsnavn som argument når vi kjører skriptet. Her har vi brukt google.com

    29) Skriv et Shell-skript for å finne det største elementet i en matrise:

    Her er et skallskript for å finne det beste elementet i en matrise.

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

    # Initialiser en variabel for å lagre maksimumsverdien, start med det første elementet

    max=${array[0]}

    # Iterer gjennom matrisen

    for num i ${array[@]}; gjøre

    # Sammenlign hvert element med gjeldende maksimum

    if ((antall> maks)); deretter
    maks=$antall
    være
    ferdig

    # Skriv ut maksimumsverdien

    echo Maksimumselementet i matrisen er: $max

    Forklaring:

    1. ` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.
    2. ` array=(3 56 24 89 67) `: Matrisen er deklarert og initialisert med verdier.
    3. ` max=${array[0]} `: `max` initialiseres med det første elementet i matrisen.
    4. ` for num i ${array[@]}; gjøre `: En `for`-løkke brukes til å iterere gjennom elementene i matrisen.
    5. ` if ((antall> maks)); deretter `: En `if`-setning sjekker om det gjeldende elementet `num` er større enn gjeldende maksimum `max`.
    6. ` max=$num`: If`num ` er større enn `max`, `max` er oppdatert med verdien av num.
    7. ` ferdig `: `For`-sløyfen er lukket.
    8. ` echo Maksimumselementet i matrisen er: $max `: Til slutt skriver skriptet ut den maksimale verdien som finnes i matrisen.
    461

    største antall

    30) Skriv et skript for å beregne summen av elementer i en matrise.

    #!/bin/bash

    # Deklarer en matrise

    array=(1 65 22 19 94)

    # Initialiser en variabel for å lagre summen

    sum=0

    # Iterer gjennom matrisen og legg til hvert element til summen

    for num i ${array[@]}; gjøre
    am=$((am + am))
    ferdig

    # Skriv ut summen

    echo Summen av elementene i matrisen er: $sum

    Forklaring:

    ` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.

    ` array=(1 65 22 19 94) `: Matrisen er deklarert og initialisert med verdier.

    ` sum=0 `:` sum ` initialiseres til null for å holde summen av elementer.

    ` for num i ${array[@]}; gjøre `: A ` til ` loop brukes til å iterere gjennom elementene i matrisen.

    ` am=$((am + am)) `: Inne i løkken, hvert element ` på en ` er lagt til ` sum ` variabel.

    ` ferdig `: Den ` til `-sløyfen er lukket.

    `echo Summen av elementene i matrisen er: $sum`: Til slutt skriver skriptet ut summen av alle elementene i matrisen.

    462

    Summen av elementer

    Finn ut mer om Shell-skript

    Konklusjon

    Vi alle nerder vet at shell-script er veldig nyttig for å øke arbeidsproduktiviteten, så vel som det sparer tid. Så i denne artikkelen har vi dekket 30 veldig nyttige og mest besnærende shell-skripteksempler . Vi håper at denne komplette veiledningen for eksempel på shell-skript hjelper deg med å forstå alt om shell-skriptene.



    ` representerer skriptets navn.
  5. ` utgang 1 `: Denne linjen avslutter skriptet med en utgangskode på ` 1 `, som indikerer en feil.
  6. ` være `: Denne linjen markerer slutten på ` hvis ` uttalelse.
  7. ` hvis [! -d $katalog ]; deretter `: Dette starter en annen if-setning for å sjekke om den oppgitte katalogen eksisterer (` -d ` tester for en katalog).
  8. ` echo Error: '$directory' er ikke en gyldig katalog. `: Hvis den oppgitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
  9. ` utgang 1 `: Går ut av skriptet med en utgangskode på ` 1 `.
  10. ` være `: Markerer slutten på den andre ` hvis` uttalelse.
  11. ` echo tomme filer i $katalogen: `: Hvis alt er gyldig så langt, skriver denne linjen ut en melding som indikerer at skriptet vil vise tomme filer i den angitte katalogen.
  12. ` finn $katalog -type f -tom `: Denne linjen bruker ` finne ` kommando for å søke etter tomme filer (` -tømme `) av typen vanlige filer (` -type f `) i den angitte katalogen. Den viser deretter disse tomme filene.
Finner tomme filer

Finner tomme filer

Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/

25) Hva er hensikten med read-kommandoen i shell-scripting?

Les-kommandoen i shell-scripting lar skriptet spørre deg om informasjon. Det er som når en datamaskin stiller deg et spørsmål og venter på svaret ditt. Dette er nyttig for skript som krever at du skriver noe eller når skriptet trenger å fungere med informasjon fra filer. Lese-kommandoen hjelper skriptet å stoppe og vente på det du skriver, og så kan det bruke den informasjonen til å gjøre flere ting i skriptet.

Syntaks for lesekommando:

read variable_name>

Eksempel : Hvis vi ønsker å ta navn som et input fra brukeren for å skrive det ut.

#!/bin/bash
echo Vennligst skriv inn navnet ditt:
lese navn
echo Hei, $navn!

453

les nam

Oppsummert brukes lesekommandoen til å fange opp brukerinndata eller data fra filer i shell-skript, noe som gjør skriptene mer interaktive og allsidige.

26) Skriv et shell-script som konverterer alle filnavn i en katalog til små bokstaver.

Her er et skallskript som konverterer alle filnavn i en katalog til små bokstaver.

#!/bin/bash
katalog=″
if [ -z $katalog ]; deretter
ekkobruk:

For alle Linux-distribusjonene er shell-skriptet som en tryllestav som automatiserer prosessen, sparer brukere tid og øker produktiviteten. Denne skal-skriptopplæringen vil introdusere deg til 25 pluss-skal-skripteksemplene.

Men før vi går over til temaet shell scripting eksempler, la oss forstå shell script og de faktiske brukstilfellene av shell scripting.

Hva er Shell Script?

Vel, skallet er en CLI ( kommandolinjetolk ), som kjører i et tekstvindu der brukere kan administrere og utføre skallkommandoer. På den annen side, prosessen med å skrive et sett med kommandoer som skal utføres på et Linux-system. En fil som inneholder slike instruksjoner kalles et bash-skript.

Bruk av Shell-skript

Nedenfor er noen vanlige bruksområder for Shell Script:

  • Oppgaveautomatisering – Den kan brukes til å automatisere repeterende oppgaver som vanlige sikkerhetskopier og programvareinstallasjonsoppgaver.
  • Tilpasning – Man kan bruke shell-skript for å designe kommandolinjemiljøet og enkelt utføre oppgaven etter behov.
  • Filbehandling - Skallskriptene kan også brukes til å administrere og manipulere filer og kataloger, for eksempel å flytte, kopiere, gi nytt navn eller slette filer.

Shell Script eksempler i Linux

1) Hva indikerer shebang (#!) i begynnelsen av et skallskript?

De shebang (#!) i begynnelsen av et skript indikerer tolken som skal brukes til å utføre skriptet. Den forteller systemet hvilket skall eller tolk som skal tolke skriptets kommandoer.

For eksempel: Anta at vi har et skript som heter myscript.sh skrevet i Bash-skallet:

shebang

shebang

I dette eksemplet:

  • #!/bin/bash i begynnelsen av skriptet indikerer at skriptet skal tolkes med Bash-skallet.
  • Ekkokommandoene brukes til å skrive ut meldinger til terminalen.

2) Hvordan kjører du et shell-skript fra kommandolinjen?

For å kjøre et skallskript fra kommandolinjen, må vi følge disse trinnene:

  • Sørg for at skriptfilen har kjørbare tillatelser ved å bruke chmod kommando :
chmod +x myscript.sh>
  • Kjør skriptet med filnavnet:
./myscript.sh>

Her må du bytte ut myscrtipt.sh med ditt manusnavn.

3) Skriv et shell-script som skriver ut techcodeview.com til terminalen.

Opprett et skriptnavn `myscript.sh` (vi bruker ` fordi ` editor, du kan velge hvilken som helst editor)

vim myscript.sh>

#!/bin/bash
# Dette skriptet skriver ut techcodeview.com til terminalen
echo techcodeview.com

skrive ut navn

skrive ut navn

Vi gjør skriptet vårt kjørbart ved å bruke `chmod +x` og kjør deretter med `./myscipt.sh` og få ønsket utdata techcodeview.com.

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

De ekko kommando brukes til å vise tekst eller variabler på terminalen. Det brukes ofte til å skrive ut meldinger, variable verdier og generere programutdata.

434

ekko kommando

I dette eksemplet har vi kjørt 'echo' direkte på terminal, siden det fungerer på samme måte i shell-skriptet.

5) Hvordan kan du tilordne en verdi til en variabel i et shell-skript?

Variabler tildeles verdier ved å bruke tilordningsoperatoren =.

For eksempel:

#!/bin/bash
# Tilordne en verdi til en variabel
navn=Jayesh
alder=21
echo $navn $age

Forklaring:

  • Navnevariabelen tildeles verdien Jayesh.
  • Aldersvariabelen tildeles verdien 21.
  • echo brukes til å skrive ut og `$name` `$age` brukes til å kalle verdien som er lagret i variablene.

435

6) Skriv et shell-skript som tar en brukers navn som input og hilser dem velkommen.

Opprett et skriptnavn `example.sh`.

#!/bin/bash
# Spør brukeren om navnet
echo Hva heter du?
lese navn
# Hils brukeren
echo Hei, $navn! Hyggelig å møte deg.

Forklaring:

  • #!/bin/bash: Dette er shebang-linjen. Det forteller systemet å bruke Bash-tolken til å utføre skriptet.
  • # Spør brukeren om navnet sitt: Dette er en kommentar. Det gir kontekst om den kommende koden. Kommentarer ignoreres av tolken.
  • echo Hva heter du?: Ekko-kommandoen brukes til å vise teksten i doble anførselstegn på terminalen.
  • read name: Read-kommandoen venter på at brukeren skal legge inn tekst og lagrer den i variabelnavnet.
  • echo Hei, $navn! Hyggelig å møte deg.: Denne linjen bruker ekko-kommandoen til å skrive ut en hilsen som inkluderer verdien av navnevariabelen, som ble samlet inn fra brukerens input.

436

7) Hvordan legger du til kommentarer til et shell-skript?

Kommentarer i shell scripting brukes til å gi forklaringer eller kontekst til koden. De blir ignorert av tolken og er kun ment for mennesker som leser manuset. Du kan legge til kommentarer ved å bruke #-symbolet.

#!/bin/bash
# Dette er en kommentar som forklarer formålet med manuset
ekko gfg

8) Lag et shell-script som sjekker om det finnes en fil i gjeldende katalog.

Her er et skript som sjekker om en fil med navnet example.txt finnes i gjeldende katalog:

#!/bin/bash
file=example.txt
# Sjekk om filen eksisterer
if [ -e $fil ]; deretter
echo Filen eksisterer: $file
ellers
echo Fil ikke funnet: $file
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
  2. file=example.txt: Denne linjen definerer variabelfilen og tilordner verdien example.txt til den. Du kan erstatte dette med navnet på filen du vil se etter.
  3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Betingelsen [ -e $file ] sjekker om filen spesifisert av verdien til filvariabelen eksisterer. -e-flagget brukes til å sjekke om filen eksisterer.
  4. echo File exists: $file: Hvis betingelsen er sann (dvs. filen eksisterer), skriver denne linjen ut en melding som indikerer at filen eksisterer, sammen med filens navn.
  5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), kjører skriptet koden under else-grenen.
  6. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet, sammen med filens navn.
  7. fi: Denne linjen markerer slutten på if-setningen.
Finner fil

Finner fil

9) Hva er forskjellen mellom enkle anførselstegn (') og doble anførselstegn () i shell-scripting?

Enkelte anførselstegn (') og doble anførselstegn () brukes til å omslutte strenger i shell-scripting, men de har forskjellig oppførsel:

  • Enkeltsitater: Alt mellom enkeltsitater behandles som en bokstavelig streng. Variabelnavn og de fleste spesialtegn utvides ikke.
  • Doble anførselstegn: Variabler og visse spesialtegn innenfor doble anførselstegn utvides. Innholdet er underlagt variabel substitusjon og kommandosubstitusjon.

#!/bin/bash

abcd=Hei
ekko '$abcd' # Utgang: $abcd
echo $abcd # Utgang: Hei

10) Hvordan kan du bruke kommandolinjeargumenter i et shell-skript?

Kommandolinjeargumenter er verdier gitt til et skript når det kjøres. De kan nås i skriptet ved å bruke spesielle variabler som $1, $2, etc., der $1 representerer det første argumentet, $2 representerer det andre argumentet, og så videre.

For eksempel: Hvis skriptnavnet vårt i `example.sh`

#!/bin/bash

echo Skriptnavn: $0
echo Første argument: $1
echo Andre argument: $2

Hvis vi kjører skriptet med `.example.sh hello_1 hello_2`, vil det sende ut:

kli argumenter

kli argumenter

11) Hvordan bruker du for-løkken til å iterere gjennom en liste med verdier?

Opprett et skriptnavn `example.sh`.

#!/bin/bash

frukt=(eple banan kirsebærdato)
for frukt i ${fruits[@]}; gjøre
echo Nåværende frukt: $fruit
ferdig

Forklaring:

`fruits=`-linjen lager en matrise kalt frukt med fire elementer: eple, banan, kirsebær og daddel.

  • for frukt i ${fruits[@]}; do: Denne linjen starter en for-løkke. Her er hva hver del betyr:
  • for frukt: Dette erklærer en løkkevariabel kalt frukt. I hver iterasjon av løkken vil frukt holde verdien av det gjeldende elementet fra frukt-arrayen.
  • ${fruits[@]}: Dette er en matriseutvidelse som tar alle elementene fra fruktmatrisen. ${…}-syntaksen sikrer at hvert element behandles som et separat element.
  • do: Dette nøkkelordet markerer begynnelsen av løkken.
  • echo Current fruit: $fruit: Inne i loopen bruker denne linjen echo-kommandoen for å vise gjeldende verdi av loop-variabelen fruit. Den skriver ut en melding som Current fruit: apple for hver frukt i matrisen.
  • ferdig: Dette nøkkelordet markerer slutten av løkken. Den forteller skriptet at loopen er ferdig.
for løkke

for løkke

12) Skriv et skallskript som beregner summen av heltall fra 1 til N ved hjelp av en løkke.

Opprett et skriptnavn `example.sh`.

#!/bin/bash

echo Skriv inn et tall (N):
les N
sum=0
for ((i=1; i<=$N; i++)); gjøre
sum=$((sum + i))
ferdig
ekko Summen av heltall fra 1 til $N er: $sum

Forklaring:
Skriptet starter med å be deg skrive inn et tall (N) ved å bruke read. Dette tallet vil avgjøre hvor mange ganger sløyfen kjøres.

  1. Variabelsummen initialiseres til 0. Denne variabelen vil holde styr på summen av heltall.
  2. For-løkken begynner med for (( i=1; i<=$N; i++ )). Denne sløyfestrukturen brukes til å gjenta et sett med handlinger et visst antall ganger, i dette tilfellet fra 1 til verdien av N.
  3. Inne i loopen skjer disse tingene:
    • i=1 setter løkkevariabelen i til 1 i begynnelsen av hver iterasjon.
    • Sløyfebetingelsen i<=$N sjekker om i fortsatt er mindre enn eller lik det gitte tallet N.
    • Hvis betingelsen er sann, utføres loop body.
    • sum=$((sum + i)) beregner den nye verdien av sum ved å legge til den nåværende verdien av i. Dette legger opp heltallene fra 1 til gjeldende i-verdi.
  4. Etter hver iterasjon øker i++ verdien av i med 1.
  5. Løkken fortsetter å kjøre til betingelsen i<=$N blir usann (når i blir større enn N).
  6. Når sløyfen er ferdig, viser skriptet summen av heltallene fra 1 til det angitte tallet N.

439

13) Lag et skript som søker etter et spesifikt ord i en fil og teller dets forekomster.

Opprett et skriptnavn `word_count.sh`

#!/bin/bash

echo Skriv inn ordet du vil søke etter:
les målord
echo Skriv inn filnavnet:
les filnavn
count=$(grep -o -w $target_word $filnavn | wc -l)
echo Ordet '$target_word' vises $count ganger i '$filnavn'.

Forklaring:

  • echo Skriv inn ordet det skal søkes etter:: Denne linjen viser en melding som ber brukeren skrive inn et ord de vil søke etter i en fil.
  • les målord: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt målord.
  • echo Skriv inn filnavnet:: Denne linjen viser en melding som ber brukeren skrive inn navnet på filen de vil søke i.
  • les filnavn: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt filnavn.
  • count=$(grep -o -w $målord $filnavn | wc -l): Denne linjen gjør hovedarbeidet med skriptet. La oss bryte det ned ytterligere:
    • grep -o -w $målord $filnavn: Denne delen av kommandoen søker etter forekomster av målordet i det angitte filnavnet. Alternativene -o og -w sørger for at kun hele ordtreff telles.
    • |: Dette er et rør som tar utdata fra forrige kommando og sender det som input til neste kommando.
    • wc -l: Denne delen av kommandoen bruker wc-kommandoen til å telle antall linjer i inngangen. Alternativet -l teller spesifikt linjene.
    • Hele kommandoen beregner antallet forekomster av target_word i filen og tilordner det antallet til variabelen count

441

14) Forklar forskjellene mellom standard utgang (stdout) og standardfeil (stderr).

Hovedforskjellen mellom standard utgang (stdout) og standardfeil (stderr) er som følger:

  • Standard utgang (stdout): Dette er standard utdatastrøm der en kommandos vanlige utgang går. Det vises på terminalen som standard. Du kan omdirigere den til en fil ved å bruke>.
  • Standardfeil (stderr): Dette er utdatastrømmen for feilmeldinger og advarsler. Det vises også på terminalen som standard. Du kan omdirigere den til en fil ved å bruke 2>.

15) Forklar konseptet med betingede utsagn i shell-scripting.

Betingede utsagn i shell-scripting tillate oss å ta avgjørelser og kontrollere flyten av skriptet vårt basert på visse forhold. De gjør det mulig for skriptet vårt å utføre forskjellige sett med kommandoer avhengig av om en bestemt betingelse er sann eller usann. De primære betingede setningene i shell-scripting er if-setningen, elif-setningen (valgfritt) og else-setningen (valgfritt).

Her er den grunnleggende strukturen til en betinget uttalelse i shell-scripting:

if [betingelse]; deretter
# Kommandoer som skal utføres hvis betingelsen er sann
elif [en annen_tilstand]; deretter
# Kommandoer som skal utføres hvis another_condition er sann (valgfritt)
ellers
# Kommandoer som skal utføres hvis ingen av betingelsene er sanne (valgfritt)
være

Forklaring:

  • [ condition ] = Kommando som evaluerer betingelsen og returnerer en sann (0) eller falsk (ikke-null) utgangsstatus.
  • then = Det er et nøkkelord som indikerer at kommandoene etter det vil bli utført hvis betingelsen evalueres til sann.
  • elif = (forkortelse for else if) Det er en del som lar oss spesifisere ytterligere betingelser for å sjekke.
  • else = det er en seksjon som inneholder kommandoer som vil bli utført hvis ingen av betingelsene er sanne.
  • fi = Det er et nøkkelord som markerer slutten på den betingede blokken.

16) Hvordan leser du linjer fra en fil i et shell-skript?

Til lese linjer fra en fil i et shell-skript kan vi bruke forskjellige metoder, men en vanlig tilnærming er å bruke en while-løkke i kombinasjon med read-kommandoen. Slik kan vi gjøre det:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Sjekk om filen eksisterer
if [ -e $fil ]; deretter
mens IFS= read -r line; gjøre
echo Line read: $line
# Legg til behandlingslogikken din her
ferdig <$fil
ellers
echo Fil ikke funnet: $file
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
  2. file=/home/jayeshkumar/jayesh.txt: Denne linjen definerer variabelfilen og tildeler hele banen til filen jayesh.txt i /home/jayeshkumar-katalogen. Endre denne banen for å matche den faktiske banen til filen du vil lese.
  3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Den sjekker om filen spesifisert av variabelen $file eksisterer. -e-flagget sjekker om filen eksisterer.
  4. mens IFS= read -r line; do: Denne linjen starter en while-løkke som leser linjer fra filen.
    • IFS=: IFS (Internal Field Separator) er satt til en tom verdi for å bevare innledende og etterfølgende mellomrom.
    • les -r linje: Dette leser gjeldende linje fra filen og lagrer den i variabellinjen.
  5. echo Line read: $line: Denne linjen skriver ut innholdet i linjen som ble lest fra filen. Variabelen $line inneholder gjeldende linjes innhold.
  6. # Legg til behandlingslogikken din her: Dette er en plassholderkommentar der du kan legge til din egen logikk for å behandle hver linje. Du kan for eksempel analysere linjen, trekke ut informasjon eller utføre spesifikke handlinger basert på innholdet.
  7. done <$file: Dette markerer slutten på while-løkken. < $filen omdirigerer innholdet i filen som skal leses av loopen.
  8. else: Hvis filen ikke eksisterer (betingelsen i if-setningen er usann), kjører skriptet koden under else-grenen.
  9. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet.
  10. fi: Denne linjen markerer slutten på if-setningen.
lese fil

lese fil

Her brukte vi ` pwd ` kommando for å få banen til gjeldende katalog.

17) Skriv en funksjon i et skallskript som beregner faktoren til et gitt tall.

Her er manuset somberegne faktorenav et gitt tall.

#!/bin/bash
# Definer en funksjon for å beregne faktorial
beregne_faktor() {
num=$1
fakta=1
for ((i=1; i<=antall; i++)); gjøre
fakta=$((fakta * i))
ferdig
ekko $fakta
}
# Be brukeren om å angi et nummer
echo Skriv inn et tall:
les input_num
# Kall calculate_fatorial-funksjonen med inndatanummeret
factorial_result=$(calculate_fatorial $input_num)
# Vis det faktorielle resultatet
echo Factorial av $input_num er: $factorial_result

Forklaring:

  1. Skriptet starter med shebang-linjen #!/bin/bash for å spesifisere tolken.
  2. calculate_fatorial() er definert som en funksjon. Det krever ett argument, num, som er tallet som faktoren må beregnes for.
  3. Inne i funksjonen initialiseres fakta til 1. Denne variabelen vil lagre det faktorielle resultatet.
  4. For-løkken itererer fra 1 til det gitte tallet (num). I hver iterasjon multipliserer den gjeldende faktaverdi med loopindeksen i.
  5. Etter at løkken er fullført, inneholder faktavariabelen den beregnede faktoren.
  6. Skriptet ber brukeren om å skrive inn et tall ved hjelp av read.
  7. Beregn_faktorfunksjonen kalles med det brukerangitte tallet, og resultatet lagres i variabelen faktorielt_resultat.
  8. Til slutt viser skriptet det beregnede faktorielle resultatet.
Faktoriell

Faktoriell

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

I et shell-skript kan du håndtere signaler som Ctrl+C (også kjent som SIGINT) ved å bruke trap-kommandoen. Ctrl+C genererer et SIGINT-signal når brukeren trykker på det for å avbryte det kjørende skriptet eller programmet. Ved å bruke trap-kommandoen kan du spesifisere handlinger som skal utføres når et bestemt signal mottas. Slik håndterer du signaler som Ctrl+C i et skallskript:

#!/bin/bash
rydde opp() {
ekko Skriptet avbrutt. Utfører opprydding …
# Legg til oppryddingshandlingene dine her
utgang 1
}
# Sett opp en felle for å kalle opp rensefunksjonen når Ctrl+C (SIGINT) mottas
felleopprydding SIGINT
# Resten av manuset ditt
ekko kjører...
sove 10
ekko Fullført.

Håndtering av signaler er viktig for å gjøre skript robuste og sikre at de håndterer uventede avbrudd på en elegant måte. Du kan tilpasse oppryddingsfunksjonen for å matche dine spesifikke behov, som å lukke filer, stoppe prosesser eller logge informasjon før skriptet avsluttes.

Forklaring:

  1. #!/bin/bash: Denne shebang-linjen spesifiserer tolken som skal brukes for å kjøre skriptet.
  2. cleanup() { … }: Dette definerer en funksjon som heter cleanup. Inne i denne funksjonen kan du inkludere alle handlinger som må utføres når skriptet blir avbrutt, for eksempel å lukke filer, frigjøre ressurser eller utføre andre oppryddingsoppgaver.
  3. trap cleanup SIGINT: Trappe-kommandoen brukes til å sette opp en signalbehandler. I dette tilfellet spesifiserer det at når SIGINT-signalet (Ctrl+C) mottas, skal oppryddingsfunksjonen utføres.
  4. echo Running…, sleep 10, echo Finished.: Dette er bare eksempelkommandoer for å simulere kjøringen av et skript.

446

19) Lag et skript som ser etter og fjerner dupliserte linjer i en tekstfil.

Her er linux-skriptet vårt der vi fjerner dupliserte linjer fra en tekstfil.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sorter $input_file | uniq> $output_file
echo Dupliserte linjer ble fjernet.

Forklaring:

  1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at skriptet skal tolkes ved hjelp av Bash-skallet.
  2. Variabelen input_file er satt til navnet på inputfilen som inneholder dupliserte linjer (endre dette til ditt faktiske inputfilnavn).
  3. Variabelen output_file er satt til navnet på utdatafilen der duplikatene vil bli fjernet (endre dette til ønsket utdatafilnavn).
  4. Skriptet bruker sorteringskommandoen til å sortere linjene i inndatafilen. Sortering av linjene sikrer at dupliserte linjer grupperes sammen.
  5. De sorterte linjene sendes deretter gjennom uniq-kommandoen, som fjerner påfølgende dupliserte linjer. Utdataene fra denne prosessen blir omdirigert til utdatafilen.
  6. Etter at duplikatene er fjernet, skriver skriptet ut en suksessmelding.
duplikatlinjefjerning

duplikatlinjefjerning

Her bruker vi ` katt ` for å vise teksten inne i tekstfilen.

20) Skriv et skript som genererer et sikkert tilfeldig passord.

Her er skriptet vårt for å generere et sikkert tilfeldig passord.

#!/bin/bash
# Funksjon for å generere et tilfeldig passord
generere_passord() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Ring opp funksjonen og lagre det genererte passordet
passord=$(generer_passord)
echo Generert passord: $password

Merk: Brukeren kan følgelig endre lengden på passordet ved å erstatte tallet '12'.

Forklaring:

  1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at det skal tolkes med Bash-skallet.
  2. Generer_passord-funksjonen er definert for å generere et tilfeldig passord. Slik fungerer det:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 deler de filtrerte tilfeldige dataene i linjer med bredde på 12 tegn hver.
    • head -n 1 velger den første linjen, og gir oss faktisk en tilfeldig sekvens av tegn med lengde 12.
  3. Passordvariabelen tildeles resultatet av å kalle generere_passord-funksjonen.
  4. Til slutt vises det genererte passordet ved hjelp av ekko.

448

21) Skriv et shell-script som beregner den totale størrelsen på alle filene i en katalog.

Her er et shell-skript for å beregne den totale størrelsen på alle filene i en katalog.

#!/bin/bash
katalog=/bane/til/din/katalog
total_size=$(du -csh $katalog | grep total | awk ‘{print $1}’)
echo Total størrelse på filer i $katalog: $total_size

Forklaring:

  1. Skriptet starter med #!/bin/bash shebang, noe som indikerer at det skal tolkes med Bash-skallet.
  2. Katalogvariabelen er satt til banen til katalogen du vil beregne den totale filstørrelsen for. Erstatt /bane/til/din/katalog med den faktiske banen.
  3. Du-kommandoen brukes til å beregne filplassbruk. Alternativene som brukes er:
    • -c: Produser en totalsum.
    • -s: Vis kun den totale størrelsen på den angitte katalogen.
    • -h: Utskriftsstørrelser i et format som kan leses av mennesker (f.eks. KB, MB, GB).
  4. Utdataene fra du sendes til grep total for å filtrere ut linjen som inneholder den totale størrelsen.
  5. awk '{print $1}' brukes til å trekke ut det første feltet (total størrelse) fra linjen.
  6. Den beregnede totale størrelsen lagres i variabelen total_size.
  7. Til slutt viser skriptet den totale størrelsen ved hjelp av ekko.
Total størrelse på filer

Total størrelse på filer

Her brukte vi ` pwd ` kommando for å se gjeldende katalogbane.

22) Forklar forskjellen mellom if- og elif-setninger i shell-scripting.

Trekk `hvis` Staiftement `elif`-uttalelse
Hensikt Forklar forskjellen mellom if- og elif-setninger i shell-scripting. Gir alternative betingelser for å sjekke når den innledende hvis betingelsen er falsk.
bruk Brukt til den opprinnelige tilstanden. Brukes etter den opprinnelige tilstanden for å sjekke ytterligere forhold.
antall blokker Kan bare ha én hvis blokk. Kan ha flere elif-blokker, men bare én annen blokk (valgfritt).
Henrettelse Utfører kodeblokken knyttet til if-setningen hvis betingelsen er sann. Hvis betingelsen er usann, utføres else-blokken (hvis den finnes) (valgfritt). Sjekker hver elif-tilstand i rekkefølge. Hvis en elif-betingelse er sann, blir den tilsvarende kodeblokken utført, og skriptet avslutter hele den betingede blokken. Hvis ingen av elif-betingelsene er sanne, blir else-blokken (hvis tilstede) utført.
Nestede strukturer Kan nestes i andre if-, elif- eller else-blokker. Kan ikke nestes i en annen elif-blokk, men kan brukes i en if eller else-blokk.

La oss forstå det med et eksempel.

#!/bin/bash
tall=5
if [ $nummer -gt 10 ]; deretter
ekko $nummer er større enn 10
ellers
echo $nummer er ikke større enn 10
være
ekko ---
if [ $nummer -gt 10 ]; deretter
ekko $nummer er større enn 10
elif [$nummer -eq 10 ]; deretter
ekko $nummer er lik 10
ellers
ekko $nummer er mindre enn 10
være

Forklaring:

I dette eksemplet sjekker den første if-blokken om tallet er større enn 10. Hvis ikke, skriver den ut en melding som indikerer at tallet ikke er større enn 10. Den andre blokken med elif-setninger sjekker flere betingelser sekvensielt til en av dem er sann. I dette tilfellet, siden verdien av tallet er 5, vil utgangen være:

if_elif forskjell

if_elif forskjell

23) Hvordan bruker du en while-løkke til å utføre kommandoer gjentatte ganger?

En while-løkke brukes i shell-skripting for å gjentatte ganger utføre et sett med kommandoer så lenge en spesifisert betingelse er sann. Løkken fortsetter å utføre kommandoene til betingelsen blir falsk.

Her er den grunnleggende syntaksen til en while-løkke:

while [betingelse]; gjøre
# Kommandoer som skal utføres
ferdig

Forklaring:

  1. `while`-løkken starter med nøkkelordet `while` etterfulgt av en betingelse omsluttet av hakeparenteser `[ ]`.
  2. Sløyfens hoveddel, som inneholder kommandoene som skal utføres, er omsluttet av nøkkelordene 'do' og 'done'.
  3. Løkken sjekker først tilstanden. Hvis betingelsen er sann, utføres kommandoene i løkkelegemet. Etter at loop-kroppen er utført, kontrolleres betingelsen igjen, og prosessen gjentas til betingelsen blir falsk.

Eksempel: Hvis vi ønsker å skrive ut tall fra 1 til 5

#!/bin/bash
teller=1
while [ $counter -le 5 ]; gjøre
ekkonummer: $counter
teller=$((teller + 1))
ferdig

Forklaring:

  • Tellervariabelen er satt til 1.
  • While-løkken sjekker om verdien til telleren er mindre enn eller lik 5. Så lenge denne betingelsen er sann, fortsetter løkken å kjøre.
  • Inne i sløyfen skrives gjeldende verdi av telleren ved bruk av ekko.
  • Telleren økes med 1 ved å bruke uttrykket $((teller + 1)).
mens loop

mens loop

24) Lag et shell-skript som finner og viser alle tomme filer i en katalog.

Shell-skript som du kan bruke til å finne og liste alle tomme filer i en katalog ved å bruke kommandoene `finn` og `stat`:

#!/bin/bash
katalog=$1″
if [ -z $katalog ]; deretter
ekkobruk: $0
utgang 1
være

hvis [! -d $katalog ]; deretter
echo Error: '$directory' er ikke en gyldig katalog.
utgang 1
være
echo tomme filer i $katalogen:
finn $katalog -type f -tom

Forklaring:

  1. ` #!/bin/bash `: Dette kalles en shebang, og det forteller operativsystemet å bruke Bash-skallet til å tolke og utføre skriptet.
  2. ` katalog=$1″ `: Denne linjen tildeler det første kommandolinjeargumentet (angitt med $1) til variabelen ` katalog `.
  3. ` if [ -z $katalog ]; deretter `: Denne linjen starter en if-setning som sjekker om ` katalog ` variabelen er tom (-z tester for en tom streng).
  4. ` ekkobruk: $0 `: Hvis katalogen er tom, skriver denne linjen ut en bruksmelding, hvor ` $0 ` representerer skriptets navn.
  5. ` utgang 1 `: Denne linjen avslutter skriptet med en utgangskode på ` 1 `, som indikerer en feil.
  6. ` være `: Denne linjen markerer slutten på ` hvis ` uttalelse.
  7. ` hvis [! -d $katalog ]; deretter `: Dette starter en annen if-setning for å sjekke om den oppgitte katalogen eksisterer (` -d ` tester for en katalog).
  8. ` echo Error: '$directory' er ikke en gyldig katalog. `: Hvis den oppgitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
  9. ` utgang 1 `: Går ut av skriptet med en utgangskode på ` 1 `.
  10. ` være `: Markerer slutten på den andre ` hvis` uttalelse.
  11. ` echo tomme filer i $katalogen: `: Hvis alt er gyldig så langt, skriver denne linjen ut en melding som indikerer at skriptet vil vise tomme filer i den angitte katalogen.
  12. ` finn $katalog -type f -tom `: Denne linjen bruker ` finne ` kommando for å søke etter tomme filer (` -tømme `) av typen vanlige filer (` -type f `) i den angitte katalogen. Den viser deretter disse tomme filene.
Finner tomme filer

Finner tomme filer

Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/

25) Hva er hensikten med read-kommandoen i shell-scripting?

Les-kommandoen i shell-scripting lar skriptet spørre deg om informasjon. Det er som når en datamaskin stiller deg et spørsmål og venter på svaret ditt. Dette er nyttig for skript som krever at du skriver noe eller når skriptet trenger å fungere med informasjon fra filer. Lese-kommandoen hjelper skriptet å stoppe og vente på det du skriver, og så kan det bruke den informasjonen til å gjøre flere ting i skriptet.

Syntaks for lesekommando:

read variable_name>

Eksempel : Hvis vi ønsker å ta navn som et input fra brukeren for å skrive det ut.

#!/bin/bash
echo Vennligst skriv inn navnet ditt:
lese navn
echo Hei, $navn!

453

les nam

Oppsummert brukes lesekommandoen til å fange opp brukerinndata eller data fra filer i shell-skript, noe som gjør skriptene mer interaktive og allsidige.

26) Skriv et shell-script som konverterer alle filnavn i en katalog til små bokstaver.

Her er et skallskript som konverterer alle filnavn i en katalog til små bokstaver.

#!/bin/bash
katalog=$1″
if [ -z $katalog ]; deretter
ekkobruk: $0
utgang 1
være

hvis [! -d $katalog ]; deretter

echo Error: '$directory' er ikke en gyldig katalog.
utgang 1
være

cd $katalog || utgang 1

for fil i *; gjøre
if [ -f $fil ]; deretter
newname=$(ekko $fil | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
være
ferdig

Forklaring:

  1. #!/bin/bash : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
  2. katalog=$1″ : Denne linjen tildeler det første kommandolinjeargumentet til variabelkatalogen.
  3. if [ -z $katalog ]; deretter : Denne linjen sjekker om katalogvariabelen er tom (ingen argument oppgitt når skriptet kjøres).
  4. ekkobruk: $0 : Hvis katalogen er tom, skriver denne linjen ut en bruksmelding med skriptets navn ($0).
  5. utgang 1 : Denne linjen går ut av skriptet med en utgangskode på 1, noe som indikerer at det har oppstått en feil.
  6. f i: Dette markerer slutten på den første if-setningen.
  7. hvis [! -d $katalog ]; deretter : Denne linjen sjekker om den angitte katalogen ikke eksisterer (-d tester for en katalog).
  8. echo Error: '$directory' er ikke en gyldig katalog. : Hvis den angitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
  9. utgang 1 : Går ut av skriptet med en utgangskode på 1.
  10. være : Markerer slutten av den andre if-setningen.
  11. cd $katalog || utgang 1 : Endrer gjeldende arbeidskatalog til spesifisert katalog. Hvis katalogendringen mislykkes (f.eks. ikke-eksisterende katalog), avsluttes skriptet med en feilkode.
  12. for fil i *; gjøre: Jeg for fil i *; gjøre: starter en løkke som itererer over alle elementer i gjeldende katalog (* samsvarer med alle filnavn).
  13. if [ -f $fil ]; deretter : Sjekker om gjeldende loop-iterasjonselement er en vanlig fil (-f tester for en vanlig fil).
  14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer gjeldende filnavn ($file) til små bokstaver ved å bruke tr-kommandoen og lagrer resultatet i newname-variabelen.
  15. [ $file != $newname ] && mv $file $newname : Sammenligner det opprinnelige filnavnet med det nye filnavnet med små bokstaver. Hvis de er forskjellige, gir den nytt navn til filen ved å bruke mv-kommandoen.
  16. være : Markerer slutten av den indre if-setningen.
  17. ferdig : Markerer slutten av løkken.

454

Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/test

27) Hvordan kan du bruke aritmetiske operasjoner i et skallskript?

Aritmetiske operasjoner kan utføres i et skallskript ved hjelp av ulike innebygde metoder. Skallet gir mekanismer for enkle aritmetiske beregninger ved bruk av aritmetisk utvidelse som:

  1. Aritmetisk utvidelse ($((...)))
  2. Bruke expr Command
  3. Bruk let Command

Her er vårt Shell-skript som forklarer alle tre metodene for aritmetiske operasjoner.

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

#Aritmetisk utvidelse ($((...)))

resultat=$((tall1 + tall2))
echo Sum: $resultat

#Bruk av kommandoen expr

sum=$(utløp $num1 + $num2)
echo Sum: $sum

#Bruke let Command

la sum = tall1 + tall2
echo Sum: $sum

Forklaring:

  1. `#!/bin/bash` : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
  2. `num1=10` og ` num2=5` : Disse linjene tildeler verdiene 10 og 5 til variablene ` nummer1 ` og ` nummer2 `, henholdsvis.
  3. `#Aritmetisk utvidelse ($((...)))` : Dette er en kommentar som indikerer starten på delen som viser aritmetisk utvidelse.
  4. `resultat=$((tall1 + tall2))` : Denne linjen bruker aritmetisk utvidelse for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` resultat ` variabel.
  5. `echo Sum: $result` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` resultat ` variabel.
  6. `#Using expr Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` uttr ` kommando for aritmetiske operasjoner.
  7. `sum=$(uttr $num1 + $num2)` : Denne linjen bruker ` uttr ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` sum ` variabel. Merk at ` uttr ` kommando krever mellomrom rundt operatørene.
  8. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
  9. `#Bruke let Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` la ` kommando for aritmetiske operasjoner.
  10. `la sum = num1 + num2″` : Denne linjen bruker ` la ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og tildeler resultatet til ` sum ` variabel. Den ` la ` kommandoen krever ikke mellomrom rundt operatørene.
  11. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
aritmetikk

aritmetikk

28) Lag et skript som sjekker om en nettverksvert er tilgjengelig.

Her er et enkelt skallskript som bruker ping-kommandoen for å sjekke om en nettverksvert er tilgjengelig:

#!/bin/bash
vert=$1″
if [ -z $vert ]; deretter
ekkobruk: $0
utgang 1
være
ping -c 4 $vert

hvis [$? -eq 0]; deretter
echo $host er tilgjengelig.
ellers
echo $host er ikke tilgjengelig.
være

Forklaring:

  1. Den tar et vertsnavn eller IP-adresse som argument og sjekker om argumentet er oppgitt.
  2. Hvis ingen argumenter er oppgitt, viser den en bruksmelding og avsluttes.
  3. Den bruker ping-kommandoen med -c 4-alternativet for å sende fire ICMP-ekkoforespørsler til den angitte verten.
  4. Etter at ping-kommandoen kjører, sjekker den utgangsstatusen ($?). Hvis utgangsstatusen er 0, betyr det at verten er tilgjengelig og skriptet skriver ut en suksessmelding. Ellers skriver den ut en feilmelding.

456

Merk : Vi må oppgi et vertsnavn som argument når vi kjører skriptet. Her har vi brukt google.com

29) Skriv et Shell-skript for å finne det største elementet i en matrise:

Her er et skallskript for å finne det beste elementet i en matrise.

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

# Initialiser en variabel for å lagre maksimumsverdien, start med det første elementet

max=${array[0]}

# Iterer gjennom matrisen

for num i ${array[@]}; gjøre

# Sammenlign hvert element med gjeldende maksimum

if ((antall> maks)); deretter
maks=$antall
være
ferdig

# Skriv ut maksimumsverdien

echo Maksimumselementet i matrisen er: $max

Forklaring:

  1. ` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.
  2. ` array=(3 56 24 89 67) `: Matrisen er deklarert og initialisert med verdier.
  3. ` max=${array[0]} `: `max` initialiseres med det første elementet i matrisen.
  4. ` for num i ${array[@]}; gjøre `: En `for`-løkke brukes til å iterere gjennom elementene i matrisen.
  5. ` if ((antall> maks)); deretter `: En `if`-setning sjekker om det gjeldende elementet `num` er større enn gjeldende maksimum `max`.
  6. ` max=$num`: If`num ` er større enn `max`, `max` er oppdatert med verdien av num.
  7. ` ferdig `: `For`-sløyfen er lukket.
  8. ` echo Maksimumselementet i matrisen er: $max `: Til slutt skriver skriptet ut den maksimale verdien som finnes i matrisen.
461

største antall

30) Skriv et skript for å beregne summen av elementer i en matrise.

#!/bin/bash

# Deklarer en matrise

array=(1 65 22 19 94)

# Initialiser en variabel for å lagre summen

sum=0

# Iterer gjennom matrisen og legg til hvert element til summen

for num i ${array[@]}; gjøre
am=$((am + am))
ferdig

# Skriv ut summen

echo Summen av elementene i matrisen er: $sum

Forklaring:

` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.

` array=(1 65 22 19 94) `: Matrisen er deklarert og initialisert med verdier.

` sum=0 `:` sum ` initialiseres til null for å holde summen av elementer.

` for num i ${array[@]}; gjøre `: A ` til ` loop brukes til å iterere gjennom elementene i matrisen.

` am=$((am + am)) `: Inne i løkken, hvert element ` på en ` er lagt til ` sum ` variabel.

` ferdig `: Den ` til `-sløyfen er lukket.

`echo Summen av elementene i matrisen er: $sum`: Til slutt skriver skriptet ut summen av alle elementene i matrisen.

462

Summen av elementer

Finn ut mer om Shell-skript

Konklusjon

Vi alle nerder vet at shell-script er veldig nyttig for å øke arbeidsproduktiviteten, så vel som det sparer tid. Så i denne artikkelen har vi dekket 30 veldig nyttige og mest besnærende shell-skripteksempler . Vi håper at denne komplette veiledningen for eksempel på shell-skript hjelper deg med å forstå alt om shell-skriptene.




utgang 1
være

hvis [! -d $katalog ]; deretter

echo Error: '$directory' er ikke en gyldig katalog.
utgang 1
være

cd $katalog || utgang 1

for fil i *; gjøre
if [ -f $fil ]; deretter
newname=$(ekko $fil | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
være
ferdig

Forklaring:

  1. #!/bin/bash : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
  2. katalog=″ : Denne linjen tildeler det første kommandolinjeargumentet til variabelkatalogen.
  3. if [ -z $katalog ]; deretter : Denne linjen sjekker om katalogvariabelen er tom (ingen argument oppgitt når skriptet kjøres).
  4. ekkobruk:

    For alle Linux-distribusjonene er shell-skriptet som en tryllestav som automatiserer prosessen, sparer brukere tid og øker produktiviteten. Denne skal-skriptopplæringen vil introdusere deg til 25 pluss-skal-skripteksemplene.

    Men før vi går over til temaet shell scripting eksempler, la oss forstå shell script og de faktiske brukstilfellene av shell scripting.

    Hva er Shell Script?

    Vel, skallet er en CLI ( kommandolinjetolk ), som kjører i et tekstvindu der brukere kan administrere og utføre skallkommandoer. På den annen side, prosessen med å skrive et sett med kommandoer som skal utføres på et Linux-system. En fil som inneholder slike instruksjoner kalles et bash-skript.

    Bruk av Shell-skript

    Nedenfor er noen vanlige bruksområder for Shell Script:

    • Oppgaveautomatisering – Den kan brukes til å automatisere repeterende oppgaver som vanlige sikkerhetskopier og programvareinstallasjonsoppgaver.
    • Tilpasning – Man kan bruke shell-skript for å designe kommandolinjemiljøet og enkelt utføre oppgaven etter behov.
    • Filbehandling - Skallskriptene kan også brukes til å administrere og manipulere filer og kataloger, for eksempel å flytte, kopiere, gi nytt navn eller slette filer.

    Shell Script eksempler i Linux

    1) Hva indikerer shebang (#!) i begynnelsen av et skallskript?

    De shebang (#!) i begynnelsen av et skript indikerer tolken som skal brukes til å utføre skriptet. Den forteller systemet hvilket skall eller tolk som skal tolke skriptets kommandoer.

    For eksempel: Anta at vi har et skript som heter myscript.sh skrevet i Bash-skallet:

    shebang

    shebang

    I dette eksemplet:

    • #!/bin/bash i begynnelsen av skriptet indikerer at skriptet skal tolkes med Bash-skallet.
    • Ekkokommandoene brukes til å skrive ut meldinger til terminalen.

    2) Hvordan kjører du et shell-skript fra kommandolinjen?

    For å kjøre et skallskript fra kommandolinjen, må vi følge disse trinnene:

    • Sørg for at skriptfilen har kjørbare tillatelser ved å bruke chmod kommando :
    chmod +x myscript.sh>
    • Kjør skriptet med filnavnet:
    ./myscript.sh>

    Her må du bytte ut myscrtipt.sh med ditt manusnavn.

    3) Skriv et shell-script som skriver ut techcodeview.com til terminalen.

    Opprett et skriptnavn `myscript.sh` (vi bruker ` fordi ` editor, du kan velge hvilken som helst editor)

    vim myscript.sh>

    #!/bin/bash
    # Dette skriptet skriver ut techcodeview.com til terminalen
    echo techcodeview.com

    skrive ut navn

    skrive ut navn

    Vi gjør skriptet vårt kjørbart ved å bruke `chmod +x` og kjør deretter med `./myscipt.sh` og få ønsket utdata techcodeview.com.

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

    De ekko kommando brukes til å vise tekst eller variabler på terminalen. Det brukes ofte til å skrive ut meldinger, variable verdier og generere programutdata.

    434

    ekko kommando

    I dette eksemplet har vi kjørt 'echo' direkte på terminal, siden det fungerer på samme måte i shell-skriptet.

    5) Hvordan kan du tilordne en verdi til en variabel i et shell-skript?

    Variabler tildeles verdier ved å bruke tilordningsoperatoren =.

    For eksempel:

    #!/bin/bash
    # Tilordne en verdi til en variabel
    navn=Jayesh
    alder=21
    echo $navn $age

    Forklaring:

    • Navnevariabelen tildeles verdien Jayesh.
    • Aldersvariabelen tildeles verdien 21.
    • echo brukes til å skrive ut og `$name` `$age` brukes til å kalle verdien som er lagret i variablene.

    435

    6) Skriv et shell-skript som tar en brukers navn som input og hilser dem velkommen.

    Opprett et skriptnavn `example.sh`.

    #!/bin/bash
    # Spør brukeren om navnet
    echo Hva heter du?
    lese navn
    # Hils brukeren
    echo Hei, $navn! Hyggelig å møte deg.

    Forklaring:

    • #!/bin/bash: Dette er shebang-linjen. Det forteller systemet å bruke Bash-tolken til å utføre skriptet.
    • # Spør brukeren om navnet sitt: Dette er en kommentar. Det gir kontekst om den kommende koden. Kommentarer ignoreres av tolken.
    • echo Hva heter du?: Ekko-kommandoen brukes til å vise teksten i doble anførselstegn på terminalen.
    • read name: Read-kommandoen venter på at brukeren skal legge inn tekst og lagrer den i variabelnavnet.
    • echo Hei, $navn! Hyggelig å møte deg.: Denne linjen bruker ekko-kommandoen til å skrive ut en hilsen som inkluderer verdien av navnevariabelen, som ble samlet inn fra brukerens input.

    436

    7) Hvordan legger du til kommentarer til et shell-skript?

    Kommentarer i shell scripting brukes til å gi forklaringer eller kontekst til koden. De blir ignorert av tolken og er kun ment for mennesker som leser manuset. Du kan legge til kommentarer ved å bruke #-symbolet.

    #!/bin/bash
    # Dette er en kommentar som forklarer formålet med manuset
    ekko gfg

    8) Lag et shell-script som sjekker om det finnes en fil i gjeldende katalog.

    Her er et skript som sjekker om en fil med navnet example.txt finnes i gjeldende katalog:

    #!/bin/bash
    file=example.txt
    # Sjekk om filen eksisterer
    if [ -e $fil ]; deretter
    echo Filen eksisterer: $file
    ellers
    echo Fil ikke funnet: $file
    være

    Forklaring:

    1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
    2. file=example.txt: Denne linjen definerer variabelfilen og tilordner verdien example.txt til den. Du kan erstatte dette med navnet på filen du vil se etter.
    3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Betingelsen [ -e $file ] sjekker om filen spesifisert av verdien til filvariabelen eksisterer. -e-flagget brukes til å sjekke om filen eksisterer.
    4. echo File exists: $file: Hvis betingelsen er sann (dvs. filen eksisterer), skriver denne linjen ut en melding som indikerer at filen eksisterer, sammen med filens navn.
    5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), kjører skriptet koden under else-grenen.
    6. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet, sammen med filens navn.
    7. fi: Denne linjen markerer slutten på if-setningen.
    Finner fil

    Finner fil

    9) Hva er forskjellen mellom enkle anførselstegn (') og doble anførselstegn () i shell-scripting?

    Enkelte anførselstegn (') og doble anførselstegn () brukes til å omslutte strenger i shell-scripting, men de har forskjellig oppførsel:

    • Enkeltsitater: Alt mellom enkeltsitater behandles som en bokstavelig streng. Variabelnavn og de fleste spesialtegn utvides ikke.
    • Doble anførselstegn: Variabler og visse spesialtegn innenfor doble anførselstegn utvides. Innholdet er underlagt variabel substitusjon og kommandosubstitusjon.

    #!/bin/bash

    abcd=Hei
    ekko '$abcd' # Utgang: $abcd
    echo $abcd # Utgang: Hei

    10) Hvordan kan du bruke kommandolinjeargumenter i et shell-skript?

    Kommandolinjeargumenter er verdier gitt til et skript når det kjøres. De kan nås i skriptet ved å bruke spesielle variabler som $1, $2, etc., der $1 representerer det første argumentet, $2 representerer det andre argumentet, og så videre.

    For eksempel: Hvis skriptnavnet vårt i `example.sh`

    #!/bin/bash

    echo Skriptnavn: $0
    echo Første argument: $1
    echo Andre argument: $2

    Hvis vi kjører skriptet med `.example.sh hello_1 hello_2`, vil det sende ut:

    kli argumenter

    kli argumenter

    11) Hvordan bruker du for-løkken til å iterere gjennom en liste med verdier?

    Opprett et skriptnavn `example.sh`.

    #!/bin/bash

    frukt=(eple banan kirsebærdato)
    for frukt i ${fruits[@]}; gjøre
    echo Nåværende frukt: $fruit
    ferdig

    Forklaring:

    `fruits=`-linjen lager en matrise kalt frukt med fire elementer: eple, banan, kirsebær og daddel.

    • for frukt i ${fruits[@]}; do: Denne linjen starter en for-løkke. Her er hva hver del betyr:
    • for frukt: Dette erklærer en løkkevariabel kalt frukt. I hver iterasjon av løkken vil frukt holde verdien av det gjeldende elementet fra frukt-arrayen.
    • ${fruits[@]}: Dette er en matriseutvidelse som tar alle elementene fra fruktmatrisen. ${…}-syntaksen sikrer at hvert element behandles som et separat element.
    • do: Dette nøkkelordet markerer begynnelsen av løkken.
    • echo Current fruit: $fruit: Inne i loopen bruker denne linjen echo-kommandoen for å vise gjeldende verdi av loop-variabelen fruit. Den skriver ut en melding som Current fruit: apple for hver frukt i matrisen.
    • ferdig: Dette nøkkelordet markerer slutten av løkken. Den forteller skriptet at loopen er ferdig.
    for løkke

    for løkke

    12) Skriv et skallskript som beregner summen av heltall fra 1 til N ved hjelp av en løkke.

    Opprett et skriptnavn `example.sh`.

    #!/bin/bash

    echo Skriv inn et tall (N):
    les N
    sum=0
    for ((i=1; i<=$N; i++)); gjøre
    sum=$((sum + i))
    ferdig
    ekko Summen av heltall fra 1 til $N er: $sum

    Forklaring:
    Skriptet starter med å be deg skrive inn et tall (N) ved å bruke read. Dette tallet vil avgjøre hvor mange ganger sløyfen kjøres.

    1. Variabelsummen initialiseres til 0. Denne variabelen vil holde styr på summen av heltall.
    2. For-løkken begynner med for (( i=1; i<=$N; i++ )). Denne sløyfestrukturen brukes til å gjenta et sett med handlinger et visst antall ganger, i dette tilfellet fra 1 til verdien av N.
    3. Inne i loopen skjer disse tingene:
      • i=1 setter løkkevariabelen i til 1 i begynnelsen av hver iterasjon.
      • Sløyfebetingelsen i<=$N sjekker om i fortsatt er mindre enn eller lik det gitte tallet N.
      • Hvis betingelsen er sann, utføres loop body.
      • sum=$((sum + i)) beregner den nye verdien av sum ved å legge til den nåværende verdien av i. Dette legger opp heltallene fra 1 til gjeldende i-verdi.
    4. Etter hver iterasjon øker i++ verdien av i med 1.
    5. Løkken fortsetter å kjøre til betingelsen i<=$N blir usann (når i blir større enn N).
    6. Når sløyfen er ferdig, viser skriptet summen av heltallene fra 1 til det angitte tallet N.

    439

    13) Lag et skript som søker etter et spesifikt ord i en fil og teller dets forekomster.

    Opprett et skriptnavn `word_count.sh`

    #!/bin/bash

    echo Skriv inn ordet du vil søke etter:
    les målord
    echo Skriv inn filnavnet:
    les filnavn
    count=$(grep -o -w $target_word $filnavn | wc -l)
    echo Ordet '$target_word' vises $count ganger i '$filnavn'.

    Forklaring:

    • echo Skriv inn ordet det skal søkes etter:: Denne linjen viser en melding som ber brukeren skrive inn et ord de vil søke etter i en fil.
    • les målord: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt målord.
    • echo Skriv inn filnavnet:: Denne linjen viser en melding som ber brukeren skrive inn navnet på filen de vil søke i.
    • les filnavn: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt filnavn.
    • count=$(grep -o -w $målord $filnavn | wc -l): Denne linjen gjør hovedarbeidet med skriptet. La oss bryte det ned ytterligere:
      • grep -o -w $målord $filnavn: Denne delen av kommandoen søker etter forekomster av målordet i det angitte filnavnet. Alternativene -o og -w sørger for at kun hele ordtreff telles.
      • |: Dette er et rør som tar utdata fra forrige kommando og sender det som input til neste kommando.
      • wc -l: Denne delen av kommandoen bruker wc-kommandoen til å telle antall linjer i inngangen. Alternativet -l teller spesifikt linjene.
      • Hele kommandoen beregner antallet forekomster av target_word i filen og tilordner det antallet til variabelen count

    441

    14) Forklar forskjellene mellom standard utgang (stdout) og standardfeil (stderr).

    Hovedforskjellen mellom standard utgang (stdout) og standardfeil (stderr) er som følger:

    • Standard utgang (stdout): Dette er standard utdatastrøm der en kommandos vanlige utgang går. Det vises på terminalen som standard. Du kan omdirigere den til en fil ved å bruke>.
    • Standardfeil (stderr): Dette er utdatastrømmen for feilmeldinger og advarsler. Det vises også på terminalen som standard. Du kan omdirigere den til en fil ved å bruke 2>.

    15) Forklar konseptet med betingede utsagn i shell-scripting.

    Betingede utsagn i shell-scripting tillate oss å ta avgjørelser og kontrollere flyten av skriptet vårt basert på visse forhold. De gjør det mulig for skriptet vårt å utføre forskjellige sett med kommandoer avhengig av om en bestemt betingelse er sann eller usann. De primære betingede setningene i shell-scripting er if-setningen, elif-setningen (valgfritt) og else-setningen (valgfritt).

    Her er den grunnleggende strukturen til en betinget uttalelse i shell-scripting:

    if [betingelse]; deretter
    # Kommandoer som skal utføres hvis betingelsen er sann
    elif [en annen_tilstand]; deretter
    # Kommandoer som skal utføres hvis another_condition er sann (valgfritt)
    ellers
    # Kommandoer som skal utføres hvis ingen av betingelsene er sanne (valgfritt)
    være

    Forklaring:

    • [ condition ] = Kommando som evaluerer betingelsen og returnerer en sann (0) eller falsk (ikke-null) utgangsstatus.
    • then = Det er et nøkkelord som indikerer at kommandoene etter det vil bli utført hvis betingelsen evalueres til sann.
    • elif = (forkortelse for else if) Det er en del som lar oss spesifisere ytterligere betingelser for å sjekke.
    • else = det er en seksjon som inneholder kommandoer som vil bli utført hvis ingen av betingelsene er sanne.
    • fi = Det er et nøkkelord som markerer slutten på den betingede blokken.

    16) Hvordan leser du linjer fra en fil i et shell-skript?

    Til lese linjer fra en fil i et shell-skript kan vi bruke forskjellige metoder, men en vanlig tilnærming er å bruke en while-løkke i kombinasjon med read-kommandoen. Slik kan vi gjøre det:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Sjekk om filen eksisterer
    if [ -e $fil ]; deretter
    mens IFS= read -r line; gjøre
    echo Line read: $line
    # Legg til behandlingslogikken din her
    ferdig <$fil
    ellers
    echo Fil ikke funnet: $file
    være

    Forklaring:

    1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
    2. file=/home/jayeshkumar/jayesh.txt: Denne linjen definerer variabelfilen og tildeler hele banen til filen jayesh.txt i /home/jayeshkumar-katalogen. Endre denne banen for å matche den faktiske banen til filen du vil lese.
    3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Den sjekker om filen spesifisert av variabelen $file eksisterer. -e-flagget sjekker om filen eksisterer.
    4. mens IFS= read -r line; do: Denne linjen starter en while-løkke som leser linjer fra filen.
      • IFS=: IFS (Internal Field Separator) er satt til en tom verdi for å bevare innledende og etterfølgende mellomrom.
      • les -r linje: Dette leser gjeldende linje fra filen og lagrer den i variabellinjen.
    5. echo Line read: $line: Denne linjen skriver ut innholdet i linjen som ble lest fra filen. Variabelen $line inneholder gjeldende linjes innhold.
    6. # Legg til behandlingslogikken din her: Dette er en plassholderkommentar der du kan legge til din egen logikk for å behandle hver linje. Du kan for eksempel analysere linjen, trekke ut informasjon eller utføre spesifikke handlinger basert på innholdet.
    7. done <$file: Dette markerer slutten på while-løkken. < $filen omdirigerer innholdet i filen som skal leses av loopen.
    8. else: Hvis filen ikke eksisterer (betingelsen i if-setningen er usann), kjører skriptet koden under else-grenen.
    9. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet.
    10. fi: Denne linjen markerer slutten på if-setningen.
    lese fil

    lese fil

    Her brukte vi ` pwd ` kommando for å få banen til gjeldende katalog.

    17) Skriv en funksjon i et skallskript som beregner faktoren til et gitt tall.

    Her er manuset somberegne faktorenav et gitt tall.

    #!/bin/bash
    # Definer en funksjon for å beregne faktorial
    beregne_faktor() {
    num=$1
    fakta=1
    for ((i=1; i<=antall; i++)); gjøre
    fakta=$((fakta * i))
    ferdig
    ekko $fakta
    }
    # Be brukeren om å angi et nummer
    echo Skriv inn et tall:
    les input_num
    # Kall calculate_fatorial-funksjonen med inndatanummeret
    factorial_result=$(calculate_fatorial $input_num)
    # Vis det faktorielle resultatet
    echo Factorial av $input_num er: $factorial_result

    Forklaring:

    1. Skriptet starter med shebang-linjen #!/bin/bash for å spesifisere tolken.
    2. calculate_fatorial() er definert som en funksjon. Det krever ett argument, num, som er tallet som faktoren må beregnes for.
    3. Inne i funksjonen initialiseres fakta til 1. Denne variabelen vil lagre det faktorielle resultatet.
    4. For-løkken itererer fra 1 til det gitte tallet (num). I hver iterasjon multipliserer den gjeldende faktaverdi med loopindeksen i.
    5. Etter at løkken er fullført, inneholder faktavariabelen den beregnede faktoren.
    6. Skriptet ber brukeren om å skrive inn et tall ved hjelp av read.
    7. Beregn_faktorfunksjonen kalles med det brukerangitte tallet, og resultatet lagres i variabelen faktorielt_resultat.
    8. Til slutt viser skriptet det beregnede faktorielle resultatet.
    Faktoriell

    Faktoriell

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

    I et shell-skript kan du håndtere signaler som Ctrl+C (også kjent som SIGINT) ved å bruke trap-kommandoen. Ctrl+C genererer et SIGINT-signal når brukeren trykker på det for å avbryte det kjørende skriptet eller programmet. Ved å bruke trap-kommandoen kan du spesifisere handlinger som skal utføres når et bestemt signal mottas. Slik håndterer du signaler som Ctrl+C i et skallskript:

    #!/bin/bash
    rydde opp() {
    ekko Skriptet avbrutt. Utfører opprydding …
    # Legg til oppryddingshandlingene dine her
    utgang 1
    }
    # Sett opp en felle for å kalle opp rensefunksjonen når Ctrl+C (SIGINT) mottas
    felleopprydding SIGINT
    # Resten av manuset ditt
    ekko kjører...
    sove 10
    ekko Fullført.

    Håndtering av signaler er viktig for å gjøre skript robuste og sikre at de håndterer uventede avbrudd på en elegant måte. Du kan tilpasse oppryddingsfunksjonen for å matche dine spesifikke behov, som å lukke filer, stoppe prosesser eller logge informasjon før skriptet avsluttes.

    Forklaring:

    1. #!/bin/bash: Denne shebang-linjen spesifiserer tolken som skal brukes for å kjøre skriptet.
    2. cleanup() { … }: Dette definerer en funksjon som heter cleanup. Inne i denne funksjonen kan du inkludere alle handlinger som må utføres når skriptet blir avbrutt, for eksempel å lukke filer, frigjøre ressurser eller utføre andre oppryddingsoppgaver.
    3. trap cleanup SIGINT: Trappe-kommandoen brukes til å sette opp en signalbehandler. I dette tilfellet spesifiserer det at når SIGINT-signalet (Ctrl+C) mottas, skal oppryddingsfunksjonen utføres.
    4. echo Running…, sleep 10, echo Finished.: Dette er bare eksempelkommandoer for å simulere kjøringen av et skript.

    446

    19) Lag et skript som ser etter og fjerner dupliserte linjer i en tekstfil.

    Her er linux-skriptet vårt der vi fjerner dupliserte linjer fra en tekstfil.

    #!/bin/bash
    input_file=input.txt
    output_file=output.txt
    sorter $input_file | uniq> $output_file
    echo Dupliserte linjer ble fjernet.

    Forklaring:

    1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at skriptet skal tolkes ved hjelp av Bash-skallet.
    2. Variabelen input_file er satt til navnet på inputfilen som inneholder dupliserte linjer (endre dette til ditt faktiske inputfilnavn).
    3. Variabelen output_file er satt til navnet på utdatafilen der duplikatene vil bli fjernet (endre dette til ønsket utdatafilnavn).
    4. Skriptet bruker sorteringskommandoen til å sortere linjene i inndatafilen. Sortering av linjene sikrer at dupliserte linjer grupperes sammen.
    5. De sorterte linjene sendes deretter gjennom uniq-kommandoen, som fjerner påfølgende dupliserte linjer. Utdataene fra denne prosessen blir omdirigert til utdatafilen.
    6. Etter at duplikatene er fjernet, skriver skriptet ut en suksessmelding.
    duplikatlinjefjerning

    duplikatlinjefjerning

    Her bruker vi ` katt ` for å vise teksten inne i tekstfilen.

    20) Skriv et skript som genererer et sikkert tilfeldig passord.

    Her er skriptet vårt for å generere et sikkert tilfeldig passord.

    #!/bin/bash
    # Funksjon for å generere et tilfeldig passord
    generere_passord() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Ring opp funksjonen og lagre det genererte passordet
    passord=$(generer_passord)
    echo Generert passord: $password

    Merk: Brukeren kan følgelig endre lengden på passordet ved å erstatte tallet '12'.

    Forklaring:

    1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at det skal tolkes med Bash-skallet.
    2. Generer_passord-funksjonen er definert for å generere et tilfeldig passord. Slik fungerer det:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 deler de filtrerte tilfeldige dataene i linjer med bredde på 12 tegn hver.
      • head -n 1 velger den første linjen, og gir oss faktisk en tilfeldig sekvens av tegn med lengde 12.
    3. Passordvariabelen tildeles resultatet av å kalle generere_passord-funksjonen.
    4. Til slutt vises det genererte passordet ved hjelp av ekko.

    448

    21) Skriv et shell-script som beregner den totale størrelsen på alle filene i en katalog.

    Her er et shell-skript for å beregne den totale størrelsen på alle filene i en katalog.

    #!/bin/bash
    katalog=/bane/til/din/katalog
    total_size=$(du -csh $katalog | grep total | awk ‘{print $1}’)
    echo Total størrelse på filer i $katalog: $total_size

    Forklaring:

    1. Skriptet starter med #!/bin/bash shebang, noe som indikerer at det skal tolkes med Bash-skallet.
    2. Katalogvariabelen er satt til banen til katalogen du vil beregne den totale filstørrelsen for. Erstatt /bane/til/din/katalog med den faktiske banen.
    3. Du-kommandoen brukes til å beregne filplassbruk. Alternativene som brukes er:
      • -c: Produser en totalsum.
      • -s: Vis kun den totale størrelsen på den angitte katalogen.
      • -h: Utskriftsstørrelser i et format som kan leses av mennesker (f.eks. KB, MB, GB).
    4. Utdataene fra du sendes til grep total for å filtrere ut linjen som inneholder den totale størrelsen.
    5. awk '{print $1}' brukes til å trekke ut det første feltet (total størrelse) fra linjen.
    6. Den beregnede totale størrelsen lagres i variabelen total_size.
    7. Til slutt viser skriptet den totale størrelsen ved hjelp av ekko.
    Total størrelse på filer

    Total størrelse på filer

    Her brukte vi ` pwd ` kommando for å se gjeldende katalogbane.

    22) Forklar forskjellen mellom if- og elif-setninger i shell-scripting.

    Trekk `hvis` Staiftement `elif`-uttalelse
    Hensikt Forklar forskjellen mellom if- og elif-setninger i shell-scripting. Gir alternative betingelser for å sjekke når den innledende hvis betingelsen er falsk.
    bruk Brukt til den opprinnelige tilstanden. Brukes etter den opprinnelige tilstanden for å sjekke ytterligere forhold.
    antall blokker Kan bare ha én hvis blokk. Kan ha flere elif-blokker, men bare én annen blokk (valgfritt).
    Henrettelse Utfører kodeblokken knyttet til if-setningen hvis betingelsen er sann. Hvis betingelsen er usann, utføres else-blokken (hvis den finnes) (valgfritt). Sjekker hver elif-tilstand i rekkefølge. Hvis en elif-betingelse er sann, blir den tilsvarende kodeblokken utført, og skriptet avslutter hele den betingede blokken. Hvis ingen av elif-betingelsene er sanne, blir else-blokken (hvis tilstede) utført.
    Nestede strukturer Kan nestes i andre if-, elif- eller else-blokker. Kan ikke nestes i en annen elif-blokk, men kan brukes i en if eller else-blokk.

    La oss forstå det med et eksempel.

    #!/bin/bash
    tall=5
    if [ $nummer -gt 10 ]; deretter
    ekko $nummer er større enn 10
    ellers
    echo $nummer er ikke større enn 10
    være
    ekko ---
    if [ $nummer -gt 10 ]; deretter
    ekko $nummer er større enn 10
    elif [$nummer -eq 10 ]; deretter
    ekko $nummer er lik 10
    ellers
    ekko $nummer er mindre enn 10
    være

    Forklaring:

    I dette eksemplet sjekker den første if-blokken om tallet er større enn 10. Hvis ikke, skriver den ut en melding som indikerer at tallet ikke er større enn 10. Den andre blokken med elif-setninger sjekker flere betingelser sekvensielt til en av dem er sann. I dette tilfellet, siden verdien av tallet er 5, vil utgangen være:

    if_elif forskjell

    if_elif forskjell

    23) Hvordan bruker du en while-løkke til å utføre kommandoer gjentatte ganger?

    En while-løkke brukes i shell-skripting for å gjentatte ganger utføre et sett med kommandoer så lenge en spesifisert betingelse er sann. Løkken fortsetter å utføre kommandoene til betingelsen blir falsk.

    Her er den grunnleggende syntaksen til en while-løkke:

    while [betingelse]; gjøre
    # Kommandoer som skal utføres
    ferdig

    Forklaring:

    1. `while`-løkken starter med nøkkelordet `while` etterfulgt av en betingelse omsluttet av hakeparenteser `[ ]`.
    2. Sløyfens hoveddel, som inneholder kommandoene som skal utføres, er omsluttet av nøkkelordene 'do' og 'done'.
    3. Løkken sjekker først tilstanden. Hvis betingelsen er sann, utføres kommandoene i løkkelegemet. Etter at loop-kroppen er utført, kontrolleres betingelsen igjen, og prosessen gjentas til betingelsen blir falsk.

    Eksempel: Hvis vi ønsker å skrive ut tall fra 1 til 5

    #!/bin/bash
    teller=1
    while [ $counter -le 5 ]; gjøre
    ekkonummer: $counter
    teller=$((teller + 1))
    ferdig

    Forklaring:

    • Tellervariabelen er satt til 1.
    • While-løkken sjekker om verdien til telleren er mindre enn eller lik 5. Så lenge denne betingelsen er sann, fortsetter løkken å kjøre.
    • Inne i sløyfen skrives gjeldende verdi av telleren ved bruk av ekko.
    • Telleren økes med 1 ved å bruke uttrykket $((teller + 1)).
    mens loop

    mens loop

    24) Lag et shell-skript som finner og viser alle tomme filer i en katalog.

    Shell-skript som du kan bruke til å finne og liste alle tomme filer i en katalog ved å bruke kommandoene `finn` og `stat`:

    #!/bin/bash
    katalog=$1″
    if [ -z $katalog ]; deretter
    ekkobruk: $0
    utgang 1
    være

    hvis [! -d $katalog ]; deretter
    echo Error: '$directory' er ikke en gyldig katalog.
    utgang 1
    være
    echo tomme filer i $katalogen:
    finn $katalog -type f -tom

    Forklaring:

    1. ` #!/bin/bash `: Dette kalles en shebang, og det forteller operativsystemet å bruke Bash-skallet til å tolke og utføre skriptet.
    2. ` katalog=$1″ `: Denne linjen tildeler det første kommandolinjeargumentet (angitt med $1) til variabelen ` katalog `.
    3. ` if [ -z $katalog ]; deretter `: Denne linjen starter en if-setning som sjekker om ` katalog ` variabelen er tom (-z tester for en tom streng).
    4. ` ekkobruk: $0 `: Hvis katalogen er tom, skriver denne linjen ut en bruksmelding, hvor ` $0 ` representerer skriptets navn.
    5. ` utgang 1 `: Denne linjen avslutter skriptet med en utgangskode på ` 1 `, som indikerer en feil.
    6. ` være `: Denne linjen markerer slutten på ` hvis ` uttalelse.
    7. ` hvis [! -d $katalog ]; deretter `: Dette starter en annen if-setning for å sjekke om den oppgitte katalogen eksisterer (` -d ` tester for en katalog).
    8. ` echo Error: '$directory' er ikke en gyldig katalog. `: Hvis den oppgitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
    9. ` utgang 1 `: Går ut av skriptet med en utgangskode på ` 1 `.
    10. ` være `: Markerer slutten på den andre ` hvis` uttalelse.
    11. ` echo tomme filer i $katalogen: `: Hvis alt er gyldig så langt, skriver denne linjen ut en melding som indikerer at skriptet vil vise tomme filer i den angitte katalogen.
    12. ` finn $katalog -type f -tom `: Denne linjen bruker ` finne ` kommando for å søke etter tomme filer (` -tømme `) av typen vanlige filer (` -type f `) i den angitte katalogen. Den viser deretter disse tomme filene.
    Finner tomme filer

    Finner tomme filer

    Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/

    25) Hva er hensikten med read-kommandoen i shell-scripting?

    Les-kommandoen i shell-scripting lar skriptet spørre deg om informasjon. Det er som når en datamaskin stiller deg et spørsmål og venter på svaret ditt. Dette er nyttig for skript som krever at du skriver noe eller når skriptet trenger å fungere med informasjon fra filer. Lese-kommandoen hjelper skriptet å stoppe og vente på det du skriver, og så kan det bruke den informasjonen til å gjøre flere ting i skriptet.

    Syntaks for lesekommando:

    read variable_name>

    Eksempel : Hvis vi ønsker å ta navn som et input fra brukeren for å skrive det ut.

    #!/bin/bash
    echo Vennligst skriv inn navnet ditt:
    lese navn
    echo Hei, $navn!

    453

    les nam

    Oppsummert brukes lesekommandoen til å fange opp brukerinndata eller data fra filer i shell-skript, noe som gjør skriptene mer interaktive og allsidige.

    26) Skriv et shell-script som konverterer alle filnavn i en katalog til små bokstaver.

    Her er et skallskript som konverterer alle filnavn i en katalog til små bokstaver.

    #!/bin/bash
    katalog=$1″
    if [ -z $katalog ]; deretter
    ekkobruk: $0
    utgang 1
    være

    hvis [! -d $katalog ]; deretter

    echo Error: '$directory' er ikke en gyldig katalog.
    utgang 1
    være

    cd $katalog || utgang 1

    for fil i *; gjøre
    if [ -f $fil ]; deretter
    newname=$(ekko $fil | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    være
    ferdig

    Forklaring:

    1. #!/bin/bash : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
    2. katalog=$1″ : Denne linjen tildeler det første kommandolinjeargumentet til variabelkatalogen.
    3. if [ -z $katalog ]; deretter : Denne linjen sjekker om katalogvariabelen er tom (ingen argument oppgitt når skriptet kjøres).
    4. ekkobruk: $0 : Hvis katalogen er tom, skriver denne linjen ut en bruksmelding med skriptets navn ($0).
    5. utgang 1 : Denne linjen går ut av skriptet med en utgangskode på 1, noe som indikerer at det har oppstått en feil.
    6. f i: Dette markerer slutten på den første if-setningen.
    7. hvis [! -d $katalog ]; deretter : Denne linjen sjekker om den angitte katalogen ikke eksisterer (-d tester for en katalog).
    8. echo Error: '$directory' er ikke en gyldig katalog. : Hvis den angitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
    9. utgang 1 : Går ut av skriptet med en utgangskode på 1.
    10. være : Markerer slutten av den andre if-setningen.
    11. cd $katalog || utgang 1 : Endrer gjeldende arbeidskatalog til spesifisert katalog. Hvis katalogendringen mislykkes (f.eks. ikke-eksisterende katalog), avsluttes skriptet med en feilkode.
    12. for fil i *; gjøre: Jeg for fil i *; gjøre: starter en løkke som itererer over alle elementer i gjeldende katalog (* samsvarer med alle filnavn).
    13. if [ -f $fil ]; deretter : Sjekker om gjeldende loop-iterasjonselement er en vanlig fil (-f tester for en vanlig fil).
    14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer gjeldende filnavn ($file) til små bokstaver ved å bruke tr-kommandoen og lagrer resultatet i newname-variabelen.
    15. [ $file != $newname ] && mv $file $newname : Sammenligner det opprinnelige filnavnet med det nye filnavnet med små bokstaver. Hvis de er forskjellige, gir den nytt navn til filen ved å bruke mv-kommandoen.
    16. være : Markerer slutten av den indre if-setningen.
    17. ferdig : Markerer slutten av løkken.

    454

    Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/test

    27) Hvordan kan du bruke aritmetiske operasjoner i et skallskript?

    Aritmetiske operasjoner kan utføres i et skallskript ved hjelp av ulike innebygde metoder. Skallet gir mekanismer for enkle aritmetiske beregninger ved bruk av aritmetisk utvidelse som:

    1. Aritmetisk utvidelse ($((...)))
    2. Bruke expr Command
    3. Bruk let Command

    Her er vårt Shell-skript som forklarer alle tre metodene for aritmetiske operasjoner.

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

    #Aritmetisk utvidelse ($((...)))

    resultat=$((tall1 + tall2))
    echo Sum: $resultat

    #Bruk av kommandoen expr

    sum=$(utløp $num1 + $num2)
    echo Sum: $sum

    #Bruke let Command

    la sum = tall1 + tall2
    echo Sum: $sum

    Forklaring:

    1. `#!/bin/bash` : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
    2. `num1=10` og ` num2=5` : Disse linjene tildeler verdiene 10 og 5 til variablene ` nummer1 ` og ` nummer2 `, henholdsvis.
    3. `#Aritmetisk utvidelse ($((...)))` : Dette er en kommentar som indikerer starten på delen som viser aritmetisk utvidelse.
    4. `resultat=$((tall1 + tall2))` : Denne linjen bruker aritmetisk utvidelse for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` resultat ` variabel.
    5. `echo Sum: $result` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` resultat ` variabel.
    6. `#Using expr Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` uttr ` kommando for aritmetiske operasjoner.
    7. `sum=$(uttr $num1 + $num2)` : Denne linjen bruker ` uttr ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` sum ` variabel. Merk at ` uttr ` kommando krever mellomrom rundt operatørene.
    8. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
    9. `#Bruke let Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` la ` kommando for aritmetiske operasjoner.
    10. `la sum = num1 + num2″` : Denne linjen bruker ` la ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og tildeler resultatet til ` sum ` variabel. Den ` la ` kommandoen krever ikke mellomrom rundt operatørene.
    11. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
    aritmetikk

    aritmetikk

    28) Lag et skript som sjekker om en nettverksvert er tilgjengelig.

    Her er et enkelt skallskript som bruker ping-kommandoen for å sjekke om en nettverksvert er tilgjengelig:

    #!/bin/bash
    vert=$1″
    if [ -z $vert ]; deretter
    ekkobruk: $0
    utgang 1
    være
    ping -c 4 $vert

    hvis [$? -eq 0]; deretter
    echo $host er tilgjengelig.
    ellers
    echo $host er ikke tilgjengelig.
    være

    Forklaring:

    1. Den tar et vertsnavn eller IP-adresse som argument og sjekker om argumentet er oppgitt.
    2. Hvis ingen argumenter er oppgitt, viser den en bruksmelding og avsluttes.
    3. Den bruker ping-kommandoen med -c 4-alternativet for å sende fire ICMP-ekkoforespørsler til den angitte verten.
    4. Etter at ping-kommandoen kjører, sjekker den utgangsstatusen ($?). Hvis utgangsstatusen er 0, betyr det at verten er tilgjengelig og skriptet skriver ut en suksessmelding. Ellers skriver den ut en feilmelding.

    456

    Merk : Vi må oppgi et vertsnavn som argument når vi kjører skriptet. Her har vi brukt google.com

    29) Skriv et Shell-skript for å finne det største elementet i en matrise:

    Her er et skallskript for å finne det beste elementet i en matrise.

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

    # Initialiser en variabel for å lagre maksimumsverdien, start med det første elementet

    max=${array[0]}

    # Iterer gjennom matrisen

    for num i ${array[@]}; gjøre

    # Sammenlign hvert element med gjeldende maksimum

    if ((antall> maks)); deretter
    maks=$antall
    være
    ferdig

    # Skriv ut maksimumsverdien

    echo Maksimumselementet i matrisen er: $max

    Forklaring:

    1. ` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.
    2. ` array=(3 56 24 89 67) `: Matrisen er deklarert og initialisert med verdier.
    3. ` max=${array[0]} `: `max` initialiseres med det første elementet i matrisen.
    4. ` for num i ${array[@]}; gjøre `: En `for`-løkke brukes til å iterere gjennom elementene i matrisen.
    5. ` if ((antall> maks)); deretter `: En `if`-setning sjekker om det gjeldende elementet `num` er større enn gjeldende maksimum `max`.
    6. ` max=$num`: If`num ` er større enn `max`, `max` er oppdatert med verdien av num.
    7. ` ferdig `: `For`-sløyfen er lukket.
    8. ` echo Maksimumselementet i matrisen er: $max `: Til slutt skriver skriptet ut den maksimale verdien som finnes i matrisen.
    461

    største antall

    30) Skriv et skript for å beregne summen av elementer i en matrise.

    #!/bin/bash

    # Deklarer en matrise

    array=(1 65 22 19 94)

    # Initialiser en variabel for å lagre summen

    sum=0

    # Iterer gjennom matrisen og legg til hvert element til summen

    for num i ${array[@]}; gjøre
    am=$((am + am))
    ferdig

    # Skriv ut summen

    echo Summen av elementene i matrisen er: $sum

    Forklaring:

    ` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.

    ` array=(1 65 22 19 94) `: Matrisen er deklarert og initialisert med verdier.

    ` sum=0 `:` sum ` initialiseres til null for å holde summen av elementer.

    ` for num i ${array[@]}; gjøre `: A ` til ` loop brukes til å iterere gjennom elementene i matrisen.

    ` am=$((am + am)) `: Inne i løkken, hvert element ` på en ` er lagt til ` sum ` variabel.

    ` ferdig `: Den ` til `-sløyfen er lukket.

    `echo Summen av elementene i matrisen er: $sum`: Til slutt skriver skriptet ut summen av alle elementene i matrisen.

    462

    Summen av elementer

    Finn ut mer om Shell-skript

    Konklusjon

    Vi alle nerder vet at shell-script er veldig nyttig for å øke arbeidsproduktiviteten, så vel som det sparer tid. Så i denne artikkelen har vi dekket 30 veldig nyttige og mest besnærende shell-skripteksempler . Vi håper at denne komplette veiledningen for eksempel på shell-skript hjelper deg med å forstå alt om shell-skriptene.



    : Hvis katalogen er tom, skriver denne linjen ut en bruksmelding med skriptets navn (

    For alle Linux-distribusjonene er shell-skriptet som en tryllestav som automatiserer prosessen, sparer brukere tid og øker produktiviteten. Denne skal-skriptopplæringen vil introdusere deg til 25 pluss-skal-skripteksemplene.

    Men før vi går over til temaet shell scripting eksempler, la oss forstå shell script og de faktiske brukstilfellene av shell scripting.

    Hva er Shell Script?

    Vel, skallet er en CLI ( kommandolinjetolk ), som kjører i et tekstvindu der brukere kan administrere og utføre skallkommandoer. På den annen side, prosessen med å skrive et sett med kommandoer som skal utføres på et Linux-system. En fil som inneholder slike instruksjoner kalles et bash-skript.

    Bruk av Shell-skript

    Nedenfor er noen vanlige bruksområder for Shell Script:

    • Oppgaveautomatisering – Den kan brukes til å automatisere repeterende oppgaver som vanlige sikkerhetskopier og programvareinstallasjonsoppgaver.
    • Tilpasning – Man kan bruke shell-skript for å designe kommandolinjemiljøet og enkelt utføre oppgaven etter behov.
    • Filbehandling - Skallskriptene kan også brukes til å administrere og manipulere filer og kataloger, for eksempel å flytte, kopiere, gi nytt navn eller slette filer.

    Shell Script eksempler i Linux

    1) Hva indikerer shebang (#!) i begynnelsen av et skallskript?

    De shebang (#!) i begynnelsen av et skript indikerer tolken som skal brukes til å utføre skriptet. Den forteller systemet hvilket skall eller tolk som skal tolke skriptets kommandoer.

    For eksempel: Anta at vi har et skript som heter myscript.sh skrevet i Bash-skallet:

    shebang

    shebang

    I dette eksemplet:

    • #!/bin/bash i begynnelsen av skriptet indikerer at skriptet skal tolkes med Bash-skallet.
    • Ekkokommandoene brukes til å skrive ut meldinger til terminalen.

    2) Hvordan kjører du et shell-skript fra kommandolinjen?

    For å kjøre et skallskript fra kommandolinjen, må vi følge disse trinnene:

    • Sørg for at skriptfilen har kjørbare tillatelser ved å bruke chmod kommando :
    chmod +x myscript.sh>
    • Kjør skriptet med filnavnet:
    ./myscript.sh>

    Her må du bytte ut myscrtipt.sh med ditt manusnavn.

    3) Skriv et shell-script som skriver ut techcodeview.com til terminalen.

    Opprett et skriptnavn `myscript.sh` (vi bruker ` fordi ` editor, du kan velge hvilken som helst editor)

    vim myscript.sh>

    #!/bin/bash
    # Dette skriptet skriver ut techcodeview.com til terminalen
    echo techcodeview.com

    skrive ut navn

    skrive ut navn

    Vi gjør skriptet vårt kjørbart ved å bruke `chmod +x` og kjør deretter med `./myscipt.sh` og få ønsket utdata techcodeview.com.

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

    De ekko kommando brukes til å vise tekst eller variabler på terminalen. Det brukes ofte til å skrive ut meldinger, variable verdier og generere programutdata.

    434

    ekko kommando

    I dette eksemplet har vi kjørt 'echo' direkte på terminal, siden det fungerer på samme måte i shell-skriptet.

    5) Hvordan kan du tilordne en verdi til en variabel i et shell-skript?

    Variabler tildeles verdier ved å bruke tilordningsoperatoren =.

    For eksempel:

    #!/bin/bash
    # Tilordne en verdi til en variabel
    navn=Jayesh
    alder=21
    echo $navn $age

    Forklaring:

    • Navnevariabelen tildeles verdien Jayesh.
    • Aldersvariabelen tildeles verdien 21.
    • echo brukes til å skrive ut og `$name` `$age` brukes til å kalle verdien som er lagret i variablene.

    435

    6) Skriv et shell-skript som tar en brukers navn som input og hilser dem velkommen.

    Opprett et skriptnavn `example.sh`.

    #!/bin/bash
    # Spør brukeren om navnet
    echo Hva heter du?
    lese navn
    # Hils brukeren
    echo Hei, $navn! Hyggelig å møte deg.

    Forklaring:

    • #!/bin/bash: Dette er shebang-linjen. Det forteller systemet å bruke Bash-tolken til å utføre skriptet.
    • # Spør brukeren om navnet sitt: Dette er en kommentar. Det gir kontekst om den kommende koden. Kommentarer ignoreres av tolken.
    • echo Hva heter du?: Ekko-kommandoen brukes til å vise teksten i doble anførselstegn på terminalen.
    • read name: Read-kommandoen venter på at brukeren skal legge inn tekst og lagrer den i variabelnavnet.
    • echo Hei, $navn! Hyggelig å møte deg.: Denne linjen bruker ekko-kommandoen til å skrive ut en hilsen som inkluderer verdien av navnevariabelen, som ble samlet inn fra brukerens input.

    436

    7) Hvordan legger du til kommentarer til et shell-skript?

    Kommentarer i shell scripting brukes til å gi forklaringer eller kontekst til koden. De blir ignorert av tolken og er kun ment for mennesker som leser manuset. Du kan legge til kommentarer ved å bruke #-symbolet.

    #!/bin/bash
    # Dette er en kommentar som forklarer formålet med manuset
    ekko gfg

    8) Lag et shell-script som sjekker om det finnes en fil i gjeldende katalog.

    Her er et skript som sjekker om en fil med navnet example.txt finnes i gjeldende katalog:

    #!/bin/bash
    file=example.txt
    # Sjekk om filen eksisterer
    if [ -e $fil ]; deretter
    echo Filen eksisterer: $file
    ellers
    echo Fil ikke funnet: $file
    være

    Forklaring:

    1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
    2. file=example.txt: Denne linjen definerer variabelfilen og tilordner verdien example.txt til den. Du kan erstatte dette med navnet på filen du vil se etter.
    3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Betingelsen [ -e $file ] sjekker om filen spesifisert av verdien til filvariabelen eksisterer. -e-flagget brukes til å sjekke om filen eksisterer.
    4. echo File exists: $file: Hvis betingelsen er sann (dvs. filen eksisterer), skriver denne linjen ut en melding som indikerer at filen eksisterer, sammen med filens navn.
    5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), kjører skriptet koden under else-grenen.
    6. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet, sammen med filens navn.
    7. fi: Denne linjen markerer slutten på if-setningen.
    Finner fil

    Finner fil

    9) Hva er forskjellen mellom enkle anførselstegn (') og doble anførselstegn () i shell-scripting?

    Enkelte anførselstegn (') og doble anførselstegn () brukes til å omslutte strenger i shell-scripting, men de har forskjellig oppførsel:

    • Enkeltsitater: Alt mellom enkeltsitater behandles som en bokstavelig streng. Variabelnavn og de fleste spesialtegn utvides ikke.
    • Doble anførselstegn: Variabler og visse spesialtegn innenfor doble anførselstegn utvides. Innholdet er underlagt variabel substitusjon og kommandosubstitusjon.

    #!/bin/bash

    abcd=Hei
    ekko '$abcd' # Utgang: $abcd
    echo $abcd # Utgang: Hei

    10) Hvordan kan du bruke kommandolinjeargumenter i et shell-skript?

    Kommandolinjeargumenter er verdier gitt til et skript når det kjøres. De kan nås i skriptet ved å bruke spesielle variabler som $1, $2, etc., der $1 representerer det første argumentet, $2 representerer det andre argumentet, og så videre.

    For eksempel: Hvis skriptnavnet vårt i `example.sh`

    #!/bin/bash

    echo Skriptnavn: $0
    echo Første argument: $1
    echo Andre argument: $2

    Hvis vi kjører skriptet med `.example.sh hello_1 hello_2`, vil det sende ut:

    kli argumenter

    kli argumenter

    11) Hvordan bruker du for-løkken til å iterere gjennom en liste med verdier?

    Opprett et skriptnavn `example.sh`.

    #!/bin/bash

    frukt=(eple banan kirsebærdato)
    for frukt i ${fruits[@]}; gjøre
    echo Nåværende frukt: $fruit
    ferdig

    Forklaring:

    `fruits=`-linjen lager en matrise kalt frukt med fire elementer: eple, banan, kirsebær og daddel.

    • for frukt i ${fruits[@]}; do: Denne linjen starter en for-løkke. Her er hva hver del betyr:
    • for frukt: Dette erklærer en løkkevariabel kalt frukt. I hver iterasjon av løkken vil frukt holde verdien av det gjeldende elementet fra frukt-arrayen.
    • ${fruits[@]}: Dette er en matriseutvidelse som tar alle elementene fra fruktmatrisen. ${…}-syntaksen sikrer at hvert element behandles som et separat element.
    • do: Dette nøkkelordet markerer begynnelsen av løkken.
    • echo Current fruit: $fruit: Inne i loopen bruker denne linjen echo-kommandoen for å vise gjeldende verdi av loop-variabelen fruit. Den skriver ut en melding som Current fruit: apple for hver frukt i matrisen.
    • ferdig: Dette nøkkelordet markerer slutten av løkken. Den forteller skriptet at loopen er ferdig.
    for løkke

    for løkke

    12) Skriv et skallskript som beregner summen av heltall fra 1 til N ved hjelp av en løkke.

    Opprett et skriptnavn `example.sh`.

    #!/bin/bash

    echo Skriv inn et tall (N):
    les N
    sum=0
    for ((i=1; i<=$N; i++)); gjøre
    sum=$((sum + i))
    ferdig
    ekko Summen av heltall fra 1 til $N er: $sum

    Forklaring:
    Skriptet starter med å be deg skrive inn et tall (N) ved å bruke read. Dette tallet vil avgjøre hvor mange ganger sløyfen kjøres.

    1. Variabelsummen initialiseres til 0. Denne variabelen vil holde styr på summen av heltall.
    2. For-løkken begynner med for (( i=1; i<=$N; i++ )). Denne sløyfestrukturen brukes til å gjenta et sett med handlinger et visst antall ganger, i dette tilfellet fra 1 til verdien av N.
    3. Inne i loopen skjer disse tingene:
      • i=1 setter løkkevariabelen i til 1 i begynnelsen av hver iterasjon.
      • Sløyfebetingelsen i<=$N sjekker om i fortsatt er mindre enn eller lik det gitte tallet N.
      • Hvis betingelsen er sann, utføres loop body.
      • sum=$((sum + i)) beregner den nye verdien av sum ved å legge til den nåværende verdien av i. Dette legger opp heltallene fra 1 til gjeldende i-verdi.
    4. Etter hver iterasjon øker i++ verdien av i med 1.
    5. Løkken fortsetter å kjøre til betingelsen i<=$N blir usann (når i blir større enn N).
    6. Når sløyfen er ferdig, viser skriptet summen av heltallene fra 1 til det angitte tallet N.

    439

    13) Lag et skript som søker etter et spesifikt ord i en fil og teller dets forekomster.

    Opprett et skriptnavn `word_count.sh`

    #!/bin/bash

    echo Skriv inn ordet du vil søke etter:
    les målord
    echo Skriv inn filnavnet:
    les filnavn
    count=$(grep -o -w $target_word $filnavn | wc -l)
    echo Ordet '$target_word' vises $count ganger i '$filnavn'.

    Forklaring:

    • echo Skriv inn ordet det skal søkes etter:: Denne linjen viser en melding som ber brukeren skrive inn et ord de vil søke etter i en fil.
    • les målord: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt målord.
    • echo Skriv inn filnavnet:: Denne linjen viser en melding som ber brukeren skrive inn navnet på filen de vil søke i.
    • les filnavn: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt filnavn.
    • count=$(grep -o -w $målord $filnavn | wc -l): Denne linjen gjør hovedarbeidet med skriptet. La oss bryte det ned ytterligere:
      • grep -o -w $målord $filnavn: Denne delen av kommandoen søker etter forekomster av målordet i det angitte filnavnet. Alternativene -o og -w sørger for at kun hele ordtreff telles.
      • |: Dette er et rør som tar utdata fra forrige kommando og sender det som input til neste kommando.
      • wc -l: Denne delen av kommandoen bruker wc-kommandoen til å telle antall linjer i inngangen. Alternativet -l teller spesifikt linjene.
      • Hele kommandoen beregner antallet forekomster av target_word i filen og tilordner det antallet til variabelen count

    441

    14) Forklar forskjellene mellom standard utgang (stdout) og standardfeil (stderr).

    Hovedforskjellen mellom standard utgang (stdout) og standardfeil (stderr) er som følger:

    • Standard utgang (stdout): Dette er standard utdatastrøm der en kommandos vanlige utgang går. Det vises på terminalen som standard. Du kan omdirigere den til en fil ved å bruke>.
    • Standardfeil (stderr): Dette er utdatastrømmen for feilmeldinger og advarsler. Det vises også på terminalen som standard. Du kan omdirigere den til en fil ved å bruke 2>.

    15) Forklar konseptet med betingede utsagn i shell-scripting.

    Betingede utsagn i shell-scripting tillate oss å ta avgjørelser og kontrollere flyten av skriptet vårt basert på visse forhold. De gjør det mulig for skriptet vårt å utføre forskjellige sett med kommandoer avhengig av om en bestemt betingelse er sann eller usann. De primære betingede setningene i shell-scripting er if-setningen, elif-setningen (valgfritt) og else-setningen (valgfritt).

    Her er den grunnleggende strukturen til en betinget uttalelse i shell-scripting:

    if [betingelse]; deretter
    # Kommandoer som skal utføres hvis betingelsen er sann
    elif [en annen_tilstand]; deretter
    # Kommandoer som skal utføres hvis another_condition er sann (valgfritt)
    ellers
    # Kommandoer som skal utføres hvis ingen av betingelsene er sanne (valgfritt)
    være

    Forklaring:

    • [ condition ] = Kommando som evaluerer betingelsen og returnerer en sann (0) eller falsk (ikke-null) utgangsstatus.
    • then = Det er et nøkkelord som indikerer at kommandoene etter det vil bli utført hvis betingelsen evalueres til sann.
    • elif = (forkortelse for else if) Det er en del som lar oss spesifisere ytterligere betingelser for å sjekke.
    • else = det er en seksjon som inneholder kommandoer som vil bli utført hvis ingen av betingelsene er sanne.
    • fi = Det er et nøkkelord som markerer slutten på den betingede blokken.

    16) Hvordan leser du linjer fra en fil i et shell-skript?

    Til lese linjer fra en fil i et shell-skript kan vi bruke forskjellige metoder, men en vanlig tilnærming er å bruke en while-løkke i kombinasjon med read-kommandoen. Slik kan vi gjøre det:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Sjekk om filen eksisterer
    if [ -e $fil ]; deretter
    mens IFS= read -r line; gjøre
    echo Line read: $line
    # Legg til behandlingslogikken din her
    ferdig <$fil
    ellers
    echo Fil ikke funnet: $file
    være

    Forklaring:

    1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
    2. file=/home/jayeshkumar/jayesh.txt: Denne linjen definerer variabelfilen og tildeler hele banen til filen jayesh.txt i /home/jayeshkumar-katalogen. Endre denne banen for å matche den faktiske banen til filen du vil lese.
    3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Den sjekker om filen spesifisert av variabelen $file eksisterer. -e-flagget sjekker om filen eksisterer.
    4. mens IFS= read -r line; do: Denne linjen starter en while-løkke som leser linjer fra filen.
      • IFS=: IFS (Internal Field Separator) er satt til en tom verdi for å bevare innledende og etterfølgende mellomrom.
      • les -r linje: Dette leser gjeldende linje fra filen og lagrer den i variabellinjen.
    5. echo Line read: $line: Denne linjen skriver ut innholdet i linjen som ble lest fra filen. Variabelen $line inneholder gjeldende linjes innhold.
    6. # Legg til behandlingslogikken din her: Dette er en plassholderkommentar der du kan legge til din egen logikk for å behandle hver linje. Du kan for eksempel analysere linjen, trekke ut informasjon eller utføre spesifikke handlinger basert på innholdet.
    7. done <$file: Dette markerer slutten på while-løkken. < $filen omdirigerer innholdet i filen som skal leses av loopen.
    8. else: Hvis filen ikke eksisterer (betingelsen i if-setningen er usann), kjører skriptet koden under else-grenen.
    9. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet.
    10. fi: Denne linjen markerer slutten på if-setningen.
    lese fil

    lese fil

    Her brukte vi ` pwd ` kommando for å få banen til gjeldende katalog.

    17) Skriv en funksjon i et skallskript som beregner faktoren til et gitt tall.

    Her er manuset somberegne faktorenav et gitt tall.

    #!/bin/bash
    # Definer en funksjon for å beregne faktorial
    beregne_faktor() {
    num=$1
    fakta=1
    for ((i=1; i<=antall; i++)); gjøre
    fakta=$((fakta * i))
    ferdig
    ekko $fakta
    }
    # Be brukeren om å angi et nummer
    echo Skriv inn et tall:
    les input_num
    # Kall calculate_fatorial-funksjonen med inndatanummeret
    factorial_result=$(calculate_fatorial $input_num)
    # Vis det faktorielle resultatet
    echo Factorial av $input_num er: $factorial_result

    Forklaring:

    1. Skriptet starter med shebang-linjen #!/bin/bash for å spesifisere tolken.
    2. calculate_fatorial() er definert som en funksjon. Det krever ett argument, num, som er tallet som faktoren må beregnes for.
    3. Inne i funksjonen initialiseres fakta til 1. Denne variabelen vil lagre det faktorielle resultatet.
    4. For-løkken itererer fra 1 til det gitte tallet (num). I hver iterasjon multipliserer den gjeldende faktaverdi med loopindeksen i.
    5. Etter at løkken er fullført, inneholder faktavariabelen den beregnede faktoren.
    6. Skriptet ber brukeren om å skrive inn et tall ved hjelp av read.
    7. Beregn_faktorfunksjonen kalles med det brukerangitte tallet, og resultatet lagres i variabelen faktorielt_resultat.
    8. Til slutt viser skriptet det beregnede faktorielle resultatet.
    Faktoriell

    Faktoriell

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

    I et shell-skript kan du håndtere signaler som Ctrl+C (også kjent som SIGINT) ved å bruke trap-kommandoen. Ctrl+C genererer et SIGINT-signal når brukeren trykker på det for å avbryte det kjørende skriptet eller programmet. Ved å bruke trap-kommandoen kan du spesifisere handlinger som skal utføres når et bestemt signal mottas. Slik håndterer du signaler som Ctrl+C i et skallskript:

    #!/bin/bash
    rydde opp() {
    ekko Skriptet avbrutt. Utfører opprydding …
    # Legg til oppryddingshandlingene dine her
    utgang 1
    }
    # Sett opp en felle for å kalle opp rensefunksjonen når Ctrl+C (SIGINT) mottas
    felleopprydding SIGINT
    # Resten av manuset ditt
    ekko kjører...
    sove 10
    ekko Fullført.

    Håndtering av signaler er viktig for å gjøre skript robuste og sikre at de håndterer uventede avbrudd på en elegant måte. Du kan tilpasse oppryddingsfunksjonen for å matche dine spesifikke behov, som å lukke filer, stoppe prosesser eller logge informasjon før skriptet avsluttes.

    Forklaring:

    1. #!/bin/bash: Denne shebang-linjen spesifiserer tolken som skal brukes for å kjøre skriptet.
    2. cleanup() { … }: Dette definerer en funksjon som heter cleanup. Inne i denne funksjonen kan du inkludere alle handlinger som må utføres når skriptet blir avbrutt, for eksempel å lukke filer, frigjøre ressurser eller utføre andre oppryddingsoppgaver.
    3. trap cleanup SIGINT: Trappe-kommandoen brukes til å sette opp en signalbehandler. I dette tilfellet spesifiserer det at når SIGINT-signalet (Ctrl+C) mottas, skal oppryddingsfunksjonen utføres.
    4. echo Running…, sleep 10, echo Finished.: Dette er bare eksempelkommandoer for å simulere kjøringen av et skript.

    446

    19) Lag et skript som ser etter og fjerner dupliserte linjer i en tekstfil.

    Her er linux-skriptet vårt der vi fjerner dupliserte linjer fra en tekstfil.

    #!/bin/bash
    input_file=input.txt
    output_file=output.txt
    sorter $input_file | uniq> $output_file
    echo Dupliserte linjer ble fjernet.

    Forklaring:

    1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at skriptet skal tolkes ved hjelp av Bash-skallet.
    2. Variabelen input_file er satt til navnet på inputfilen som inneholder dupliserte linjer (endre dette til ditt faktiske inputfilnavn).
    3. Variabelen output_file er satt til navnet på utdatafilen der duplikatene vil bli fjernet (endre dette til ønsket utdatafilnavn).
    4. Skriptet bruker sorteringskommandoen til å sortere linjene i inndatafilen. Sortering av linjene sikrer at dupliserte linjer grupperes sammen.
    5. De sorterte linjene sendes deretter gjennom uniq-kommandoen, som fjerner påfølgende dupliserte linjer. Utdataene fra denne prosessen blir omdirigert til utdatafilen.
    6. Etter at duplikatene er fjernet, skriver skriptet ut en suksessmelding.
    duplikatlinjefjerning

    duplikatlinjefjerning

    Her bruker vi ` katt ` for å vise teksten inne i tekstfilen.

    20) Skriv et skript som genererer et sikkert tilfeldig passord.

    Her er skriptet vårt for å generere et sikkert tilfeldig passord.

    #!/bin/bash
    # Funksjon for å generere et tilfeldig passord
    generere_passord() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Ring opp funksjonen og lagre det genererte passordet
    passord=$(generer_passord)
    echo Generert passord: $password

    Merk: Brukeren kan følgelig endre lengden på passordet ved å erstatte tallet '12'.

    Forklaring:

    1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at det skal tolkes med Bash-skallet.
    2. Generer_passord-funksjonen er definert for å generere et tilfeldig passord. Slik fungerer det:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 deler de filtrerte tilfeldige dataene i linjer med bredde på 12 tegn hver.
      • head -n 1 velger den første linjen, og gir oss faktisk en tilfeldig sekvens av tegn med lengde 12.
    3. Passordvariabelen tildeles resultatet av å kalle generere_passord-funksjonen.
    4. Til slutt vises det genererte passordet ved hjelp av ekko.

    448

    21) Skriv et shell-script som beregner den totale størrelsen på alle filene i en katalog.

    Her er et shell-skript for å beregne den totale størrelsen på alle filene i en katalog.

    #!/bin/bash
    katalog=/bane/til/din/katalog
    total_size=$(du -csh $katalog | grep total | awk ‘{print $1}’)
    echo Total størrelse på filer i $katalog: $total_size

    Forklaring:

    1. Skriptet starter med #!/bin/bash shebang, noe som indikerer at det skal tolkes med Bash-skallet.
    2. Katalogvariabelen er satt til banen til katalogen du vil beregne den totale filstørrelsen for. Erstatt /bane/til/din/katalog med den faktiske banen.
    3. Du-kommandoen brukes til å beregne filplassbruk. Alternativene som brukes er:
      • -c: Produser en totalsum.
      • -s: Vis kun den totale størrelsen på den angitte katalogen.
      • -h: Utskriftsstørrelser i et format som kan leses av mennesker (f.eks. KB, MB, GB).
    4. Utdataene fra du sendes til grep total for å filtrere ut linjen som inneholder den totale størrelsen.
    5. awk '{print $1}' brukes til å trekke ut det første feltet (total størrelse) fra linjen.
    6. Den beregnede totale størrelsen lagres i variabelen total_size.
    7. Til slutt viser skriptet den totale størrelsen ved hjelp av ekko.
    Total størrelse på filer

    Total størrelse på filer

    Her brukte vi ` pwd ` kommando for å se gjeldende katalogbane.

    22) Forklar forskjellen mellom if- og elif-setninger i shell-scripting.

    Trekk `hvis` Staiftement `elif`-uttalelse
    Hensikt Forklar forskjellen mellom if- og elif-setninger i shell-scripting. Gir alternative betingelser for å sjekke når den innledende hvis betingelsen er falsk.
    bruk Brukt til den opprinnelige tilstanden. Brukes etter den opprinnelige tilstanden for å sjekke ytterligere forhold.
    antall blokker Kan bare ha én hvis blokk. Kan ha flere elif-blokker, men bare én annen blokk (valgfritt).
    Henrettelse Utfører kodeblokken knyttet til if-setningen hvis betingelsen er sann. Hvis betingelsen er usann, utføres else-blokken (hvis den finnes) (valgfritt). Sjekker hver elif-tilstand i rekkefølge. Hvis en elif-betingelse er sann, blir den tilsvarende kodeblokken utført, og skriptet avslutter hele den betingede blokken. Hvis ingen av elif-betingelsene er sanne, blir else-blokken (hvis tilstede) utført.
    Nestede strukturer Kan nestes i andre if-, elif- eller else-blokker. Kan ikke nestes i en annen elif-blokk, men kan brukes i en if eller else-blokk.

    La oss forstå det med et eksempel.

    #!/bin/bash
    tall=5
    if [ $nummer -gt 10 ]; deretter
    ekko $nummer er større enn 10
    ellers
    echo $nummer er ikke større enn 10
    være
    ekko ---
    if [ $nummer -gt 10 ]; deretter
    ekko $nummer er større enn 10
    elif [$nummer -eq 10 ]; deretter
    ekko $nummer er lik 10
    ellers
    ekko $nummer er mindre enn 10
    være

    Forklaring:

    I dette eksemplet sjekker den første if-blokken om tallet er større enn 10. Hvis ikke, skriver den ut en melding som indikerer at tallet ikke er større enn 10. Den andre blokken med elif-setninger sjekker flere betingelser sekvensielt til en av dem er sann. I dette tilfellet, siden verdien av tallet er 5, vil utgangen være:

    if_elif forskjell

    if_elif forskjell

    23) Hvordan bruker du en while-løkke til å utføre kommandoer gjentatte ganger?

    En while-løkke brukes i shell-skripting for å gjentatte ganger utføre et sett med kommandoer så lenge en spesifisert betingelse er sann. Løkken fortsetter å utføre kommandoene til betingelsen blir falsk.

    Her er den grunnleggende syntaksen til en while-løkke:

    while [betingelse]; gjøre
    # Kommandoer som skal utføres
    ferdig

    Forklaring:

    1. `while`-løkken starter med nøkkelordet `while` etterfulgt av en betingelse omsluttet av hakeparenteser `[ ]`.
    2. Sløyfens hoveddel, som inneholder kommandoene som skal utføres, er omsluttet av nøkkelordene 'do' og 'done'.
    3. Løkken sjekker først tilstanden. Hvis betingelsen er sann, utføres kommandoene i løkkelegemet. Etter at loop-kroppen er utført, kontrolleres betingelsen igjen, og prosessen gjentas til betingelsen blir falsk.

    Eksempel: Hvis vi ønsker å skrive ut tall fra 1 til 5

    #!/bin/bash
    teller=1
    while [ $counter -le 5 ]; gjøre
    ekkonummer: $counter
    teller=$((teller + 1))
    ferdig

    Forklaring:

    • Tellervariabelen er satt til 1.
    • While-løkken sjekker om verdien til telleren er mindre enn eller lik 5. Så lenge denne betingelsen er sann, fortsetter løkken å kjøre.
    • Inne i sløyfen skrives gjeldende verdi av telleren ved bruk av ekko.
    • Telleren økes med 1 ved å bruke uttrykket $((teller + 1)).
    mens loop

    mens loop

    24) Lag et shell-skript som finner og viser alle tomme filer i en katalog.

    Shell-skript som du kan bruke til å finne og liste alle tomme filer i en katalog ved å bruke kommandoene `finn` og `stat`:

    #!/bin/bash
    katalog=$1″
    if [ -z $katalog ]; deretter
    ekkobruk: $0
    utgang 1
    være

    hvis [! -d $katalog ]; deretter
    echo Error: '$directory' er ikke en gyldig katalog.
    utgang 1
    være
    echo tomme filer i $katalogen:
    finn $katalog -type f -tom

    Forklaring:

    1. ` #!/bin/bash `: Dette kalles en shebang, og det forteller operativsystemet å bruke Bash-skallet til å tolke og utføre skriptet.
    2. ` katalog=$1″ `: Denne linjen tildeler det første kommandolinjeargumentet (angitt med $1) til variabelen ` katalog `.
    3. ` if [ -z $katalog ]; deretter `: Denne linjen starter en if-setning som sjekker om ` katalog ` variabelen er tom (-z tester for en tom streng).
    4. ` ekkobruk: $0 `: Hvis katalogen er tom, skriver denne linjen ut en bruksmelding, hvor ` $0 ` representerer skriptets navn.
    5. ` utgang 1 `: Denne linjen avslutter skriptet med en utgangskode på ` 1 `, som indikerer en feil.
    6. ` være `: Denne linjen markerer slutten på ` hvis ` uttalelse.
    7. ` hvis [! -d $katalog ]; deretter `: Dette starter en annen if-setning for å sjekke om den oppgitte katalogen eksisterer (` -d ` tester for en katalog).
    8. ` echo Error: '$directory' er ikke en gyldig katalog. `: Hvis den oppgitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
    9. ` utgang 1 `: Går ut av skriptet med en utgangskode på ` 1 `.
    10. ` være `: Markerer slutten på den andre ` hvis` uttalelse.
    11. ` echo tomme filer i $katalogen: `: Hvis alt er gyldig så langt, skriver denne linjen ut en melding som indikerer at skriptet vil vise tomme filer i den angitte katalogen.
    12. ` finn $katalog -type f -tom `: Denne linjen bruker ` finne ` kommando for å søke etter tomme filer (` -tømme `) av typen vanlige filer (` -type f `) i den angitte katalogen. Den viser deretter disse tomme filene.
    Finner tomme filer

    Finner tomme filer

    Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/

    25) Hva er hensikten med read-kommandoen i shell-scripting?

    Les-kommandoen i shell-scripting lar skriptet spørre deg om informasjon. Det er som når en datamaskin stiller deg et spørsmål og venter på svaret ditt. Dette er nyttig for skript som krever at du skriver noe eller når skriptet trenger å fungere med informasjon fra filer. Lese-kommandoen hjelper skriptet å stoppe og vente på det du skriver, og så kan det bruke den informasjonen til å gjøre flere ting i skriptet.

    Syntaks for lesekommando:

    read variable_name>

    Eksempel : Hvis vi ønsker å ta navn som et input fra brukeren for å skrive det ut.

    #!/bin/bash
    echo Vennligst skriv inn navnet ditt:
    lese navn
    echo Hei, $navn!

    453

    les nam

    Oppsummert brukes lesekommandoen til å fange opp brukerinndata eller data fra filer i shell-skript, noe som gjør skriptene mer interaktive og allsidige.

    26) Skriv et shell-script som konverterer alle filnavn i en katalog til små bokstaver.

    Her er et skallskript som konverterer alle filnavn i en katalog til små bokstaver.

    #!/bin/bash
    katalog=$1″
    if [ -z $katalog ]; deretter
    ekkobruk: $0
    utgang 1
    være

    hvis [! -d $katalog ]; deretter

    echo Error: '$directory' er ikke en gyldig katalog.
    utgang 1
    være

    cd $katalog || utgang 1

    for fil i *; gjøre
    if [ -f $fil ]; deretter
    newname=$(ekko $fil | tr 'A-Z' 'a-z')
    [ $file != $newname ] && mv $file $newname
    være
    ferdig

    Forklaring:

    1. #!/bin/bash : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
    2. katalog=$1″ : Denne linjen tildeler det første kommandolinjeargumentet til variabelkatalogen.
    3. if [ -z $katalog ]; deretter : Denne linjen sjekker om katalogvariabelen er tom (ingen argument oppgitt når skriptet kjøres).
    4. ekkobruk: $0 : Hvis katalogen er tom, skriver denne linjen ut en bruksmelding med skriptets navn ($0).
    5. utgang 1 : Denne linjen går ut av skriptet med en utgangskode på 1, noe som indikerer at det har oppstått en feil.
    6. f i: Dette markerer slutten på den første if-setningen.
    7. hvis [! -d $katalog ]; deretter : Denne linjen sjekker om den angitte katalogen ikke eksisterer (-d tester for en katalog).
    8. echo Error: '$directory' er ikke en gyldig katalog. : Hvis den angitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
    9. utgang 1 : Går ut av skriptet med en utgangskode på 1.
    10. være : Markerer slutten av den andre if-setningen.
    11. cd $katalog || utgang 1 : Endrer gjeldende arbeidskatalog til spesifisert katalog. Hvis katalogendringen mislykkes (f.eks. ikke-eksisterende katalog), avsluttes skriptet med en feilkode.
    12. for fil i *; gjøre: Jeg for fil i *; gjøre: starter en løkke som itererer over alle elementer i gjeldende katalog (* samsvarer med alle filnavn).
    13. if [ -f $fil ]; deretter : Sjekker om gjeldende loop-iterasjonselement er en vanlig fil (-f tester for en vanlig fil).
    14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer gjeldende filnavn ($file) til små bokstaver ved å bruke tr-kommandoen og lagrer resultatet i newname-variabelen.
    15. [ $file != $newname ] && mv $file $newname : Sammenligner det opprinnelige filnavnet med det nye filnavnet med små bokstaver. Hvis de er forskjellige, gir den nytt navn til filen ved å bruke mv-kommandoen.
    16. være : Markerer slutten av den indre if-setningen.
    17. ferdig : Markerer slutten av løkken.

    454

    Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/test

    27) Hvordan kan du bruke aritmetiske operasjoner i et skallskript?

    Aritmetiske operasjoner kan utføres i et skallskript ved hjelp av ulike innebygde metoder. Skallet gir mekanismer for enkle aritmetiske beregninger ved bruk av aritmetisk utvidelse som:

    1. Aritmetisk utvidelse ($((...)))
    2. Bruke expr Command
    3. Bruk let Command

    Her er vårt Shell-skript som forklarer alle tre metodene for aritmetiske operasjoner.

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

    #Aritmetisk utvidelse ($((...)))

    resultat=$((tall1 + tall2))
    echo Sum: $resultat

    #Bruk av kommandoen expr

    sum=$(utløp $num1 + $num2)
    echo Sum: $sum

    #Bruke let Command

    la sum = tall1 + tall2
    echo Sum: $sum

    Forklaring:

    1. `#!/bin/bash` : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
    2. `num1=10` og ` num2=5` : Disse linjene tildeler verdiene 10 og 5 til variablene ` nummer1 ` og ` nummer2 `, henholdsvis.
    3. `#Aritmetisk utvidelse ($((...)))` : Dette er en kommentar som indikerer starten på delen som viser aritmetisk utvidelse.
    4. `resultat=$((tall1 + tall2))` : Denne linjen bruker aritmetisk utvidelse for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` resultat ` variabel.
    5. `echo Sum: $result` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` resultat ` variabel.
    6. `#Using expr Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` uttr ` kommando for aritmetiske operasjoner.
    7. `sum=$(uttr $num1 + $num2)` : Denne linjen bruker ` uttr ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` sum ` variabel. Merk at ` uttr ` kommando krever mellomrom rundt operatørene.
    8. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
    9. `#Bruke let Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` la ` kommando for aritmetiske operasjoner.
    10. `la sum = num1 + num2″` : Denne linjen bruker ` la ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og tildeler resultatet til ` sum ` variabel. Den ` la ` kommandoen krever ikke mellomrom rundt operatørene.
    11. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
    aritmetikk

    aritmetikk

    28) Lag et skript som sjekker om en nettverksvert er tilgjengelig.

    Her er et enkelt skallskript som bruker ping-kommandoen for å sjekke om en nettverksvert er tilgjengelig:

    #!/bin/bash
    vert=$1″
    if [ -z $vert ]; deretter
    ekkobruk: $0
    utgang 1
    være
    ping -c 4 $vert

    hvis [$? -eq 0]; deretter
    echo $host er tilgjengelig.
    ellers
    echo $host er ikke tilgjengelig.
    være

    Forklaring:

    1. Den tar et vertsnavn eller IP-adresse som argument og sjekker om argumentet er oppgitt.
    2. Hvis ingen argumenter er oppgitt, viser den en bruksmelding og avsluttes.
    3. Den bruker ping-kommandoen med -c 4-alternativet for å sende fire ICMP-ekkoforespørsler til den angitte verten.
    4. Etter at ping-kommandoen kjører, sjekker den utgangsstatusen ($?). Hvis utgangsstatusen er 0, betyr det at verten er tilgjengelig og skriptet skriver ut en suksessmelding. Ellers skriver den ut en feilmelding.

    456

    Merk : Vi må oppgi et vertsnavn som argument når vi kjører skriptet. Her har vi brukt google.com

    29) Skriv et Shell-skript for å finne det største elementet i en matrise:

    Her er et skallskript for å finne det beste elementet i en matrise.

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

    # Initialiser en variabel for å lagre maksimumsverdien, start med det første elementet

    max=${array[0]}

    # Iterer gjennom matrisen

    for num i ${array[@]}; gjøre

    # Sammenlign hvert element med gjeldende maksimum

    if ((antall> maks)); deretter
    maks=$antall
    være
    ferdig

    # Skriv ut maksimumsverdien

    echo Maksimumselementet i matrisen er: $max

    Forklaring:

    1. ` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.
    2. ` array=(3 56 24 89 67) `: Matrisen er deklarert og initialisert med verdier.
    3. ` max=${array[0]} `: `max` initialiseres med det første elementet i matrisen.
    4. ` for num i ${array[@]}; gjøre `: En `for`-løkke brukes til å iterere gjennom elementene i matrisen.
    5. ` if ((antall> maks)); deretter `: En `if`-setning sjekker om det gjeldende elementet `num` er større enn gjeldende maksimum `max`.
    6. ` max=$num`: If`num ` er større enn `max`, `max` er oppdatert med verdien av num.
    7. ` ferdig `: `For`-sløyfen er lukket.
    8. ` echo Maksimumselementet i matrisen er: $max `: Til slutt skriver skriptet ut den maksimale verdien som finnes i matrisen.
    461

    største antall

    30) Skriv et skript for å beregne summen av elementer i en matrise.

    #!/bin/bash

    # Deklarer en matrise

    array=(1 65 22 19 94)

    # Initialiser en variabel for å lagre summen

    sum=0

    # Iterer gjennom matrisen og legg til hvert element til summen

    for num i ${array[@]}; gjøre
    am=$((am + am))
    ferdig

    # Skriv ut summen

    echo Summen av elementene i matrisen er: $sum

    Forklaring:

    ` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.

    ` array=(1 65 22 19 94) `: Matrisen er deklarert og initialisert med verdier.

    ` sum=0 `:` sum ` initialiseres til null for å holde summen av elementer.

    ` for num i ${array[@]}; gjøre `: A ` til ` loop brukes til å iterere gjennom elementene i matrisen.

    ` am=$((am + am)) `: Inne i løkken, hvert element ` på en ` er lagt til ` sum ` variabel.

    ` ferdig `: Den ` til `-sløyfen er lukket.

    `echo Summen av elementene i matrisen er: $sum`: Til slutt skriver skriptet ut summen av alle elementene i matrisen.

    462

    Summen av elementer

    Finn ut mer om Shell-skript

    Konklusjon

    Vi alle nerder vet at shell-script er veldig nyttig for å øke arbeidsproduktiviteten, så vel som det sparer tid. Så i denne artikkelen har vi dekket 30 veldig nyttige og mest besnærende shell-skripteksempler . Vi håper at denne komplette veiledningen for eksempel på shell-skript hjelper deg med å forstå alt om shell-skriptene.



    ).
  5. utgang 1 : Denne linjen går ut av skriptet med en utgangskode på 1, noe som indikerer at det har oppstått en feil.
  6. f i: Dette markerer slutten på den første if-setningen.
  7. hvis [! -d $katalog ]; deretter : Denne linjen sjekker om den angitte katalogen ikke eksisterer (-d tester for en katalog).
  8. echo Error: '$directory' er ikke en gyldig katalog. : Hvis den angitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
  9. utgang 1 : Går ut av skriptet med en utgangskode på 1.
  10. være : Markerer slutten av den andre if-setningen.
  11. cd $katalog || utgang 1 : Endrer gjeldende arbeidskatalog til spesifisert katalog. Hvis katalogendringen mislykkes (f.eks. ikke-eksisterende katalog), avsluttes skriptet med en feilkode.
  12. for fil i *; gjøre: Jeg for fil i *; gjøre: starter en løkke som itererer over alle elementer i gjeldende katalog (* samsvarer med alle filnavn).
  13. if [ -f $fil ]; deretter : Sjekker om gjeldende loop-iterasjonselement er en vanlig fil (-f tester for en vanlig fil).
  14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer gjeldende filnavn ($file) til små bokstaver ved å bruke tr-kommandoen og lagrer resultatet i newname-variabelen.
  15. [ $file != $newname ] && mv $file $newname : Sammenligner det opprinnelige filnavnet med det nye filnavnet med små bokstaver. Hvis de er forskjellige, gir den nytt navn til filen ved å bruke mv-kommandoen.
  16. være : Markerer slutten av den indre if-setningen.
  17. ferdig : Markerer slutten av løkken.

454

Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/test

27) Hvordan kan du bruke aritmetiske operasjoner i et skallskript?

Aritmetiske operasjoner kan utføres i et skallskript ved hjelp av ulike innebygde metoder. Skallet gir mekanismer for enkle aritmetiske beregninger ved bruk av aritmetisk utvidelse som:

  1. Aritmetisk utvidelse ($((...)))
  2. Bruke expr Command
  3. Bruk let Command

Her er vårt Shell-skript som forklarer alle tre metodene for aritmetiske operasjoner.

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

#Aritmetisk utvidelse ($((...)))

resultat=$((tall1 + tall2))
echo Sum: $resultat

#Bruk av kommandoen expr

sum=$(utløp $num1 + $num2)
echo Sum: $sum

#Bruke let Command

la sum = tall1 + tall2
echo Sum: $sum

Forklaring:

  1. `#!/bin/bash` : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
  2. `num1=10` og ` num2=5` : Disse linjene tildeler verdiene 10 og 5 til variablene ` nummer1 ` og ` nummer2 `, henholdsvis.
  3. `#Aritmetisk utvidelse ($((...)))` : Dette er en kommentar som indikerer starten på delen som viser aritmetisk utvidelse.
  4. `resultat=$((tall1 + tall2))` : Denne linjen bruker aritmetisk utvidelse for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` resultat ` variabel.
  5. `echo Sum: $result` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` resultat ` variabel.
  6. `#Using expr Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` uttr ` kommando for aritmetiske operasjoner.
  7. `sum=$(uttr $num1 + $num2)` : Denne linjen bruker ` uttr ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` sum ` variabel. Merk at ` uttr ` kommando krever mellomrom rundt operatørene.
  8. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
  9. `#Bruke let Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` la ` kommando for aritmetiske operasjoner.
  10. `la sum = num1 + num2″` : Denne linjen bruker ` la ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og tildeler resultatet til ` sum ` variabel. Den ` la ` kommandoen krever ikke mellomrom rundt operatørene.
  11. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
aritmetikk

aritmetikk

28) Lag et skript som sjekker om en nettverksvert er tilgjengelig.

Her er et enkelt skallskript som bruker ping-kommandoen for å sjekke om en nettverksvert er tilgjengelig:

#!/bin/bash
vert=″
if [ -z $vert ]; deretter
ekkobruk:

For alle Linux-distribusjonene er shell-skriptet som en tryllestav som automatiserer prosessen, sparer brukere tid og øker produktiviteten. Denne skal-skriptopplæringen vil introdusere deg til 25 pluss-skal-skripteksemplene.

Men før vi går over til temaet shell scripting eksempler, la oss forstå shell script og de faktiske brukstilfellene av shell scripting.

Hva er Shell Script?

Vel, skallet er en CLI ( kommandolinjetolk ), som kjører i et tekstvindu der brukere kan administrere og utføre skallkommandoer. På den annen side, prosessen med å skrive et sett med kommandoer som skal utføres på et Linux-system. En fil som inneholder slike instruksjoner kalles et bash-skript.

Bruk av Shell-skript

Nedenfor er noen vanlige bruksområder for Shell Script:

  • Oppgaveautomatisering – Den kan brukes til å automatisere repeterende oppgaver som vanlige sikkerhetskopier og programvareinstallasjonsoppgaver.
  • Tilpasning – Man kan bruke shell-skript for å designe kommandolinjemiljøet og enkelt utføre oppgaven etter behov.
  • Filbehandling - Skallskriptene kan også brukes til å administrere og manipulere filer og kataloger, for eksempel å flytte, kopiere, gi nytt navn eller slette filer.

Shell Script eksempler i Linux

1) Hva indikerer shebang (#!) i begynnelsen av et skallskript?

De shebang (#!) i begynnelsen av et skript indikerer tolken som skal brukes til å utføre skriptet. Den forteller systemet hvilket skall eller tolk som skal tolke skriptets kommandoer.

For eksempel: Anta at vi har et skript som heter myscript.sh skrevet i Bash-skallet:

shebang

shebang

I dette eksemplet:

  • #!/bin/bash i begynnelsen av skriptet indikerer at skriptet skal tolkes med Bash-skallet.
  • Ekkokommandoene brukes til å skrive ut meldinger til terminalen.

2) Hvordan kjører du et shell-skript fra kommandolinjen?

For å kjøre et skallskript fra kommandolinjen, må vi følge disse trinnene:

  • Sørg for at skriptfilen har kjørbare tillatelser ved å bruke chmod kommando :
chmod +x myscript.sh>
  • Kjør skriptet med filnavnet:
./myscript.sh>

Her må du bytte ut myscrtipt.sh med ditt manusnavn.

3) Skriv et shell-script som skriver ut techcodeview.com til terminalen.

Opprett et skriptnavn `myscript.sh` (vi bruker ` fordi ` editor, du kan velge hvilken som helst editor)

vim myscript.sh>

#!/bin/bash
# Dette skriptet skriver ut techcodeview.com til terminalen
echo techcodeview.com

skrive ut navn

skrive ut navn

Vi gjør skriptet vårt kjørbart ved å bruke `chmod +x` og kjør deretter med `./myscipt.sh` og få ønsket utdata techcodeview.com.

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

De ekko kommando brukes til å vise tekst eller variabler på terminalen. Det brukes ofte til å skrive ut meldinger, variable verdier og generere programutdata.

434

ekko kommando

I dette eksemplet har vi kjørt 'echo' direkte på terminal, siden det fungerer på samme måte i shell-skriptet.

5) Hvordan kan du tilordne en verdi til en variabel i et shell-skript?

Variabler tildeles verdier ved å bruke tilordningsoperatoren =.

For eksempel:

#!/bin/bash
# Tilordne en verdi til en variabel
navn=Jayesh
alder=21
echo $navn $age

Forklaring:

  • Navnevariabelen tildeles verdien Jayesh.
  • Aldersvariabelen tildeles verdien 21.
  • echo brukes til å skrive ut og `$name` `$age` brukes til å kalle verdien som er lagret i variablene.

435

6) Skriv et shell-skript som tar en brukers navn som input og hilser dem velkommen.

Opprett et skriptnavn `example.sh`.

#!/bin/bash
# Spør brukeren om navnet
echo Hva heter du?
lese navn
# Hils brukeren
echo Hei, $navn! Hyggelig å møte deg.

Forklaring:

  • #!/bin/bash: Dette er shebang-linjen. Det forteller systemet å bruke Bash-tolken til å utføre skriptet.
  • # Spør brukeren om navnet sitt: Dette er en kommentar. Det gir kontekst om den kommende koden. Kommentarer ignoreres av tolken.
  • echo Hva heter du?: Ekko-kommandoen brukes til å vise teksten i doble anførselstegn på terminalen.
  • read name: Read-kommandoen venter på at brukeren skal legge inn tekst og lagrer den i variabelnavnet.
  • echo Hei, $navn! Hyggelig å møte deg.: Denne linjen bruker ekko-kommandoen til å skrive ut en hilsen som inkluderer verdien av navnevariabelen, som ble samlet inn fra brukerens input.

436

7) Hvordan legger du til kommentarer til et shell-skript?

Kommentarer i shell scripting brukes til å gi forklaringer eller kontekst til koden. De blir ignorert av tolken og er kun ment for mennesker som leser manuset. Du kan legge til kommentarer ved å bruke #-symbolet.

#!/bin/bash
# Dette er en kommentar som forklarer formålet med manuset
ekko gfg

8) Lag et shell-script som sjekker om det finnes en fil i gjeldende katalog.

Her er et skript som sjekker om en fil med navnet example.txt finnes i gjeldende katalog:

#!/bin/bash
file=example.txt
# Sjekk om filen eksisterer
if [ -e $fil ]; deretter
echo Filen eksisterer: $file
ellers
echo Fil ikke funnet: $file
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
  2. file=example.txt: Denne linjen definerer variabelfilen og tilordner verdien example.txt til den. Du kan erstatte dette med navnet på filen du vil se etter.
  3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Betingelsen [ -e $file ] sjekker om filen spesifisert av verdien til filvariabelen eksisterer. -e-flagget brukes til å sjekke om filen eksisterer.
  4. echo File exists: $file: Hvis betingelsen er sann (dvs. filen eksisterer), skriver denne linjen ut en melding som indikerer at filen eksisterer, sammen med filens navn.
  5. else: Hvis betingelsen er falsk (dvs. filen eksisterer ikke), kjører skriptet koden under else-grenen.
  6. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet, sammen med filens navn.
  7. fi: Denne linjen markerer slutten på if-setningen.
Finner fil

Finner fil

9) Hva er forskjellen mellom enkle anførselstegn (') og doble anførselstegn () i shell-scripting?

Enkelte anførselstegn (') og doble anførselstegn () brukes til å omslutte strenger i shell-scripting, men de har forskjellig oppførsel:

  • Enkeltsitater: Alt mellom enkeltsitater behandles som en bokstavelig streng. Variabelnavn og de fleste spesialtegn utvides ikke.
  • Doble anførselstegn: Variabler og visse spesialtegn innenfor doble anførselstegn utvides. Innholdet er underlagt variabel substitusjon og kommandosubstitusjon.

#!/bin/bash

abcd=Hei
ekko '$abcd' # Utgang: $abcd
echo $abcd # Utgang: Hei

10) Hvordan kan du bruke kommandolinjeargumenter i et shell-skript?

Kommandolinjeargumenter er verdier gitt til et skript når det kjøres. De kan nås i skriptet ved å bruke spesielle variabler som $1, $2, etc., der $1 representerer det første argumentet, $2 representerer det andre argumentet, og så videre.

For eksempel: Hvis skriptnavnet vårt i `example.sh`

#!/bin/bash

echo Skriptnavn: $0
echo Første argument: $1
echo Andre argument: $2

Hvis vi kjører skriptet med `.example.sh hello_1 hello_2`, vil det sende ut:

kli argumenter

kli argumenter

11) Hvordan bruker du for-løkken til å iterere gjennom en liste med verdier?

Opprett et skriptnavn `example.sh`.

#!/bin/bash

frukt=(eple banan kirsebærdato)
for frukt i ${fruits[@]}; gjøre
echo Nåværende frukt: $fruit
ferdig

Forklaring:

`fruits=`-linjen lager en matrise kalt frukt med fire elementer: eple, banan, kirsebær og daddel.

  • for frukt i ${fruits[@]}; do: Denne linjen starter en for-løkke. Her er hva hver del betyr:
  • for frukt: Dette erklærer en løkkevariabel kalt frukt. I hver iterasjon av løkken vil frukt holde verdien av det gjeldende elementet fra frukt-arrayen.
  • ${fruits[@]}: Dette er en matriseutvidelse som tar alle elementene fra fruktmatrisen. ${…}-syntaksen sikrer at hvert element behandles som et separat element.
  • do: Dette nøkkelordet markerer begynnelsen av løkken.
  • echo Current fruit: $fruit: Inne i loopen bruker denne linjen echo-kommandoen for å vise gjeldende verdi av loop-variabelen fruit. Den skriver ut en melding som Current fruit: apple for hver frukt i matrisen.
  • ferdig: Dette nøkkelordet markerer slutten av løkken. Den forteller skriptet at loopen er ferdig.
for løkke

for løkke

12) Skriv et skallskript som beregner summen av heltall fra 1 til N ved hjelp av en løkke.

Opprett et skriptnavn `example.sh`.

#!/bin/bash

echo Skriv inn et tall (N):
les N
sum=0
for ((i=1; i<=$N; i++)); gjøre
sum=$((sum + i))
ferdig
ekko Summen av heltall fra 1 til $N er: $sum

Forklaring:
Skriptet starter med å be deg skrive inn et tall (N) ved å bruke read. Dette tallet vil avgjøre hvor mange ganger sløyfen kjøres.

  1. Variabelsummen initialiseres til 0. Denne variabelen vil holde styr på summen av heltall.
  2. For-løkken begynner med for (( i=1; i<=$N; i++ )). Denne sløyfestrukturen brukes til å gjenta et sett med handlinger et visst antall ganger, i dette tilfellet fra 1 til verdien av N.
  3. Inne i loopen skjer disse tingene:
    • i=1 setter løkkevariabelen i til 1 i begynnelsen av hver iterasjon.
    • Sløyfebetingelsen i<=$N sjekker om i fortsatt er mindre enn eller lik det gitte tallet N.
    • Hvis betingelsen er sann, utføres loop body.
    • sum=$((sum + i)) beregner den nye verdien av sum ved å legge til den nåværende verdien av i. Dette legger opp heltallene fra 1 til gjeldende i-verdi.
  4. Etter hver iterasjon øker i++ verdien av i med 1.
  5. Løkken fortsetter å kjøre til betingelsen i<=$N blir usann (når i blir større enn N).
  6. Når sløyfen er ferdig, viser skriptet summen av heltallene fra 1 til det angitte tallet N.

439

13) Lag et skript som søker etter et spesifikt ord i en fil og teller dets forekomster.

Opprett et skriptnavn `word_count.sh`

#!/bin/bash

echo Skriv inn ordet du vil søke etter:
les målord
echo Skriv inn filnavnet:
les filnavn
count=$(grep -o -w $target_word $filnavn | wc -l)
echo Ordet '$target_word' vises $count ganger i '$filnavn'.

Forklaring:

  • echo Skriv inn ordet det skal søkes etter:: Denne linjen viser en melding som ber brukeren skrive inn et ord de vil søke etter i en fil.
  • les målord: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt målord.
  • echo Skriv inn filnavnet:: Denne linjen viser en melding som ber brukeren skrive inn navnet på filen de vil søke i.
  • les filnavn: Denne linjen leser inndata fra brukeren og lagrer det i en variabel kalt filnavn.
  • count=$(grep -o -w $målord $filnavn | wc -l): Denne linjen gjør hovedarbeidet med skriptet. La oss bryte det ned ytterligere:
    • grep -o -w $målord $filnavn: Denne delen av kommandoen søker etter forekomster av målordet i det angitte filnavnet. Alternativene -o og -w sørger for at kun hele ordtreff telles.
    • |: Dette er et rør som tar utdata fra forrige kommando og sender det som input til neste kommando.
    • wc -l: Denne delen av kommandoen bruker wc-kommandoen til å telle antall linjer i inngangen. Alternativet -l teller spesifikt linjene.
    • Hele kommandoen beregner antallet forekomster av target_word i filen og tilordner det antallet til variabelen count

441

14) Forklar forskjellene mellom standard utgang (stdout) og standardfeil (stderr).

Hovedforskjellen mellom standard utgang (stdout) og standardfeil (stderr) er som følger:

  • Standard utgang (stdout): Dette er standard utdatastrøm der en kommandos vanlige utgang går. Det vises på terminalen som standard. Du kan omdirigere den til en fil ved å bruke>.
  • Standardfeil (stderr): Dette er utdatastrømmen for feilmeldinger og advarsler. Det vises også på terminalen som standard. Du kan omdirigere den til en fil ved å bruke 2>.

15) Forklar konseptet med betingede utsagn i shell-scripting.

Betingede utsagn i shell-scripting tillate oss å ta avgjørelser og kontrollere flyten av skriptet vårt basert på visse forhold. De gjør det mulig for skriptet vårt å utføre forskjellige sett med kommandoer avhengig av om en bestemt betingelse er sann eller usann. De primære betingede setningene i shell-scripting er if-setningen, elif-setningen (valgfritt) og else-setningen (valgfritt).

Her er den grunnleggende strukturen til en betinget uttalelse i shell-scripting:

if [betingelse]; deretter
# Kommandoer som skal utføres hvis betingelsen er sann
elif [en annen_tilstand]; deretter
# Kommandoer som skal utføres hvis another_condition er sann (valgfritt)
ellers
# Kommandoer som skal utføres hvis ingen av betingelsene er sanne (valgfritt)
være

Forklaring:

  • [ condition ] = Kommando som evaluerer betingelsen og returnerer en sann (0) eller falsk (ikke-null) utgangsstatus.
  • then = Det er et nøkkelord som indikerer at kommandoene etter det vil bli utført hvis betingelsen evalueres til sann.
  • elif = (forkortelse for else if) Det er en del som lar oss spesifisere ytterligere betingelser for å sjekke.
  • else = det er en seksjon som inneholder kommandoer som vil bli utført hvis ingen av betingelsene er sanne.
  • fi = Det er et nøkkelord som markerer slutten på den betingede blokken.

16) Hvordan leser du linjer fra en fil i et shell-skript?

Til lese linjer fra en fil i et shell-skript kan vi bruke forskjellige metoder, men en vanlig tilnærming er å bruke en while-løkke i kombinasjon med read-kommandoen. Slik kan vi gjøre det:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Sjekk om filen eksisterer
if [ -e $fil ]; deretter
mens IFS= read -r line; gjøre
echo Line read: $line
# Legg til behandlingslogikken din her
ferdig <$fil
ellers
echo Fil ikke funnet: $file
være

Forklaring:

  1. #!/bin/bash: Dette er shebang-linjen som spesifiserer tolken (/bin/bash) som skal brukes for å kjøre skriptet.
  2. file=/home/jayeshkumar/jayesh.txt: Denne linjen definerer variabelfilen og tildeler hele banen til filen jayesh.txt i /home/jayeshkumar-katalogen. Endre denne banen for å matche den faktiske banen til filen du vil lese.
  3. if [ -e $fil ]; deretter: Denne linjen starter en if-setning. Den sjekker om filen spesifisert av variabelen $file eksisterer. -e-flagget sjekker om filen eksisterer.
  4. mens IFS= read -r line; do: Denne linjen starter en while-løkke som leser linjer fra filen.
    • IFS=: IFS (Internal Field Separator) er satt til en tom verdi for å bevare innledende og etterfølgende mellomrom.
    • les -r linje: Dette leser gjeldende linje fra filen og lagrer den i variabellinjen.
  5. echo Line read: $line: Denne linjen skriver ut innholdet i linjen som ble lest fra filen. Variabelen $line inneholder gjeldende linjes innhold.
  6. # Legg til behandlingslogikken din her: Dette er en plassholderkommentar der du kan legge til din egen logikk for å behandle hver linje. Du kan for eksempel analysere linjen, trekke ut informasjon eller utføre spesifikke handlinger basert på innholdet.
  7. done <$file: Dette markerer slutten på while-løkken. < $filen omdirigerer innholdet i filen som skal leses av loopen.
  8. else: Hvis filen ikke eksisterer (betingelsen i if-setningen er usann), kjører skriptet koden under else-grenen.
  9. echo Fil ikke funnet: $fil: Denne linjen skriver ut en feilmelding som indikerer at den angitte filen ikke ble funnet.
  10. fi: Denne linjen markerer slutten på if-setningen.
lese fil

lese fil

Her brukte vi ` pwd ` kommando for å få banen til gjeldende katalog.

17) Skriv en funksjon i et skallskript som beregner faktoren til et gitt tall.

Her er manuset somberegne faktorenav et gitt tall.

#!/bin/bash
# Definer en funksjon for å beregne faktorial
beregne_faktor() {
num=$1
fakta=1
for ((i=1; i<=antall; i++)); gjøre
fakta=$((fakta * i))
ferdig
ekko $fakta
}
# Be brukeren om å angi et nummer
echo Skriv inn et tall:
les input_num
# Kall calculate_fatorial-funksjonen med inndatanummeret
factorial_result=$(calculate_fatorial $input_num)
# Vis det faktorielle resultatet
echo Factorial av $input_num er: $factorial_result

Forklaring:

  1. Skriptet starter med shebang-linjen #!/bin/bash for å spesifisere tolken.
  2. calculate_fatorial() er definert som en funksjon. Det krever ett argument, num, som er tallet som faktoren må beregnes for.
  3. Inne i funksjonen initialiseres fakta til 1. Denne variabelen vil lagre det faktorielle resultatet.
  4. For-løkken itererer fra 1 til det gitte tallet (num). I hver iterasjon multipliserer den gjeldende faktaverdi med loopindeksen i.
  5. Etter at løkken er fullført, inneholder faktavariabelen den beregnede faktoren.
  6. Skriptet ber brukeren om å skrive inn et tall ved hjelp av read.
  7. Beregn_faktorfunksjonen kalles med det brukerangitte tallet, og resultatet lagres i variabelen faktorielt_resultat.
  8. Til slutt viser skriptet det beregnede faktorielle resultatet.
Faktoriell

Faktoriell

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

I et shell-skript kan du håndtere signaler som Ctrl+C (også kjent som SIGINT) ved å bruke trap-kommandoen. Ctrl+C genererer et SIGINT-signal når brukeren trykker på det for å avbryte det kjørende skriptet eller programmet. Ved å bruke trap-kommandoen kan du spesifisere handlinger som skal utføres når et bestemt signal mottas. Slik håndterer du signaler som Ctrl+C i et skallskript:

#!/bin/bash
rydde opp() {
ekko Skriptet avbrutt. Utfører opprydding …
# Legg til oppryddingshandlingene dine her
utgang 1
}
# Sett opp en felle for å kalle opp rensefunksjonen når Ctrl+C (SIGINT) mottas
felleopprydding SIGINT
# Resten av manuset ditt
ekko kjører...
sove 10
ekko Fullført.

Håndtering av signaler er viktig for å gjøre skript robuste og sikre at de håndterer uventede avbrudd på en elegant måte. Du kan tilpasse oppryddingsfunksjonen for å matche dine spesifikke behov, som å lukke filer, stoppe prosesser eller logge informasjon før skriptet avsluttes.

Forklaring:

  1. #!/bin/bash: Denne shebang-linjen spesifiserer tolken som skal brukes for å kjøre skriptet.
  2. cleanup() { … }: Dette definerer en funksjon som heter cleanup. Inne i denne funksjonen kan du inkludere alle handlinger som må utføres når skriptet blir avbrutt, for eksempel å lukke filer, frigjøre ressurser eller utføre andre oppryddingsoppgaver.
  3. trap cleanup SIGINT: Trappe-kommandoen brukes til å sette opp en signalbehandler. I dette tilfellet spesifiserer det at når SIGINT-signalet (Ctrl+C) mottas, skal oppryddingsfunksjonen utføres.
  4. echo Running…, sleep 10, echo Finished.: Dette er bare eksempelkommandoer for å simulere kjøringen av et skript.

446

19) Lag et skript som ser etter og fjerner dupliserte linjer i en tekstfil.

Her er linux-skriptet vårt der vi fjerner dupliserte linjer fra en tekstfil.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sorter $input_file | uniq> $output_file
echo Dupliserte linjer ble fjernet.

Forklaring:

  1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at skriptet skal tolkes ved hjelp av Bash-skallet.
  2. Variabelen input_file er satt til navnet på inputfilen som inneholder dupliserte linjer (endre dette til ditt faktiske inputfilnavn).
  3. Variabelen output_file er satt til navnet på utdatafilen der duplikatene vil bli fjernet (endre dette til ønsket utdatafilnavn).
  4. Skriptet bruker sorteringskommandoen til å sortere linjene i inndatafilen. Sortering av linjene sikrer at dupliserte linjer grupperes sammen.
  5. De sorterte linjene sendes deretter gjennom uniq-kommandoen, som fjerner påfølgende dupliserte linjer. Utdataene fra denne prosessen blir omdirigert til utdatafilen.
  6. Etter at duplikatene er fjernet, skriver skriptet ut en suksessmelding.
duplikatlinjefjerning

duplikatlinjefjerning

Her bruker vi ` katt ` for å vise teksten inne i tekstfilen.

20) Skriv et skript som genererer et sikkert tilfeldig passord.

Her er skriptet vårt for å generere et sikkert tilfeldig passord.

#!/bin/bash
# Funksjon for å generere et tilfeldig passord
generere_passord() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Ring opp funksjonen og lagre det genererte passordet
passord=$(generer_passord)
echo Generert passord: $password

Merk: Brukeren kan følgelig endre lengden på passordet ved å erstatte tallet '12'.

Forklaring:

  1. Skriptet starter med en shebang (#!/bin/bash), som indikerer at det skal tolkes med Bash-skallet.
  2. Generer_passord-funksjonen er definert for å generere et tilfeldig passord. Slik fungerer det:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 deler de filtrerte tilfeldige dataene i linjer med bredde på 12 tegn hver.
    • head -n 1 velger den første linjen, og gir oss faktisk en tilfeldig sekvens av tegn med lengde 12.
  3. Passordvariabelen tildeles resultatet av å kalle generere_passord-funksjonen.
  4. Til slutt vises det genererte passordet ved hjelp av ekko.

448

21) Skriv et shell-script som beregner den totale størrelsen på alle filene i en katalog.

Her er et shell-skript for å beregne den totale størrelsen på alle filene i en katalog.

#!/bin/bash
katalog=/bane/til/din/katalog
total_size=$(du -csh $katalog | grep total | awk ‘{print $1}’)
echo Total størrelse på filer i $katalog: $total_size

Forklaring:

  1. Skriptet starter med #!/bin/bash shebang, noe som indikerer at det skal tolkes med Bash-skallet.
  2. Katalogvariabelen er satt til banen til katalogen du vil beregne den totale filstørrelsen for. Erstatt /bane/til/din/katalog med den faktiske banen.
  3. Du-kommandoen brukes til å beregne filplassbruk. Alternativene som brukes er:
    • -c: Produser en totalsum.
    • -s: Vis kun den totale størrelsen på den angitte katalogen.
    • -h: Utskriftsstørrelser i et format som kan leses av mennesker (f.eks. KB, MB, GB).
  4. Utdataene fra du sendes til grep total for å filtrere ut linjen som inneholder den totale størrelsen.
  5. awk '{print $1}' brukes til å trekke ut det første feltet (total størrelse) fra linjen.
  6. Den beregnede totale størrelsen lagres i variabelen total_size.
  7. Til slutt viser skriptet den totale størrelsen ved hjelp av ekko.
Total størrelse på filer

Total størrelse på filer

Her brukte vi ` pwd ` kommando for å se gjeldende katalogbane.

22) Forklar forskjellen mellom if- og elif-setninger i shell-scripting.

Trekk `hvis` Staiftement `elif`-uttalelse
Hensikt Forklar forskjellen mellom if- og elif-setninger i shell-scripting. Gir alternative betingelser for å sjekke når den innledende hvis betingelsen er falsk.
bruk Brukt til den opprinnelige tilstanden. Brukes etter den opprinnelige tilstanden for å sjekke ytterligere forhold.
antall blokker Kan bare ha én hvis blokk. Kan ha flere elif-blokker, men bare én annen blokk (valgfritt).
Henrettelse Utfører kodeblokken knyttet til if-setningen hvis betingelsen er sann. Hvis betingelsen er usann, utføres else-blokken (hvis den finnes) (valgfritt). Sjekker hver elif-tilstand i rekkefølge. Hvis en elif-betingelse er sann, blir den tilsvarende kodeblokken utført, og skriptet avslutter hele den betingede blokken. Hvis ingen av elif-betingelsene er sanne, blir else-blokken (hvis tilstede) utført.
Nestede strukturer Kan nestes i andre if-, elif- eller else-blokker. Kan ikke nestes i en annen elif-blokk, men kan brukes i en if eller else-blokk.

La oss forstå det med et eksempel.

#!/bin/bash
tall=5
if [ $nummer -gt 10 ]; deretter
ekko $nummer er større enn 10
ellers
echo $nummer er ikke større enn 10
være
ekko ---
if [ $nummer -gt 10 ]; deretter
ekko $nummer er større enn 10
elif [$nummer -eq 10 ]; deretter
ekko $nummer er lik 10
ellers
ekko $nummer er mindre enn 10
være

Forklaring:

I dette eksemplet sjekker den første if-blokken om tallet er større enn 10. Hvis ikke, skriver den ut en melding som indikerer at tallet ikke er større enn 10. Den andre blokken med elif-setninger sjekker flere betingelser sekvensielt til en av dem er sann. I dette tilfellet, siden verdien av tallet er 5, vil utgangen være:

if_elif forskjell

if_elif forskjell

23) Hvordan bruker du en while-løkke til å utføre kommandoer gjentatte ganger?

En while-løkke brukes i shell-skripting for å gjentatte ganger utføre et sett med kommandoer så lenge en spesifisert betingelse er sann. Løkken fortsetter å utføre kommandoene til betingelsen blir falsk.

Her er den grunnleggende syntaksen til en while-løkke:

while [betingelse]; gjøre
# Kommandoer som skal utføres
ferdig

Forklaring:

  1. `while`-løkken starter med nøkkelordet `while` etterfulgt av en betingelse omsluttet av hakeparenteser `[ ]`.
  2. Sløyfens hoveddel, som inneholder kommandoene som skal utføres, er omsluttet av nøkkelordene 'do' og 'done'.
  3. Løkken sjekker først tilstanden. Hvis betingelsen er sann, utføres kommandoene i løkkelegemet. Etter at loop-kroppen er utført, kontrolleres betingelsen igjen, og prosessen gjentas til betingelsen blir falsk.

Eksempel: Hvis vi ønsker å skrive ut tall fra 1 til 5

#!/bin/bash
teller=1
while [ $counter -le 5 ]; gjøre
ekkonummer: $counter
teller=$((teller + 1))
ferdig

Forklaring:

  • Tellervariabelen er satt til 1.
  • While-løkken sjekker om verdien til telleren er mindre enn eller lik 5. Så lenge denne betingelsen er sann, fortsetter løkken å kjøre.
  • Inne i sløyfen skrives gjeldende verdi av telleren ved bruk av ekko.
  • Telleren økes med 1 ved å bruke uttrykket $((teller + 1)).
mens loop

mens loop

24) Lag et shell-skript som finner og viser alle tomme filer i en katalog.

Shell-skript som du kan bruke til å finne og liste alle tomme filer i en katalog ved å bruke kommandoene `finn` og `stat`:

#!/bin/bash
katalog=$1″
if [ -z $katalog ]; deretter
ekkobruk: $0
utgang 1
være

hvis [! -d $katalog ]; deretter
echo Error: '$directory' er ikke en gyldig katalog.
utgang 1
være
echo tomme filer i $katalogen:
finn $katalog -type f -tom

Forklaring:

  1. ` #!/bin/bash `: Dette kalles en shebang, og det forteller operativsystemet å bruke Bash-skallet til å tolke og utføre skriptet.
  2. ` katalog=$1″ `: Denne linjen tildeler det første kommandolinjeargumentet (angitt med $1) til variabelen ` katalog `.
  3. ` if [ -z $katalog ]; deretter `: Denne linjen starter en if-setning som sjekker om ` katalog ` variabelen er tom (-z tester for en tom streng).
  4. ` ekkobruk: $0 `: Hvis katalogen er tom, skriver denne linjen ut en bruksmelding, hvor ` $0 ` representerer skriptets navn.
  5. ` utgang 1 `: Denne linjen avslutter skriptet med en utgangskode på ` 1 `, som indikerer en feil.
  6. ` være `: Denne linjen markerer slutten på ` hvis ` uttalelse.
  7. ` hvis [! -d $katalog ]; deretter `: Dette starter en annen if-setning for å sjekke om den oppgitte katalogen eksisterer (` -d ` tester for en katalog).
  8. ` echo Error: '$directory' er ikke en gyldig katalog. `: Hvis den oppgitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
  9. ` utgang 1 `: Går ut av skriptet med en utgangskode på ` 1 `.
  10. ` være `: Markerer slutten på den andre ` hvis` uttalelse.
  11. ` echo tomme filer i $katalogen: `: Hvis alt er gyldig så langt, skriver denne linjen ut en melding som indikerer at skriptet vil vise tomme filer i den angitte katalogen.
  12. ` finn $katalog -type f -tom `: Denne linjen bruker ` finne ` kommando for å søke etter tomme filer (` -tømme `) av typen vanlige filer (` -type f `) i den angitte katalogen. Den viser deretter disse tomme filene.
Finner tomme filer

Finner tomme filer

Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/

25) Hva er hensikten med read-kommandoen i shell-scripting?

Les-kommandoen i shell-scripting lar skriptet spørre deg om informasjon. Det er som når en datamaskin stiller deg et spørsmål og venter på svaret ditt. Dette er nyttig for skript som krever at du skriver noe eller når skriptet trenger å fungere med informasjon fra filer. Lese-kommandoen hjelper skriptet å stoppe og vente på det du skriver, og så kan det bruke den informasjonen til å gjøre flere ting i skriptet.

Syntaks for lesekommando:

read variable_name>

Eksempel : Hvis vi ønsker å ta navn som et input fra brukeren for å skrive det ut.

#!/bin/bash
echo Vennligst skriv inn navnet ditt:
lese navn
echo Hei, $navn!

453

les nam

Oppsummert brukes lesekommandoen til å fange opp brukerinndata eller data fra filer i shell-skript, noe som gjør skriptene mer interaktive og allsidige.

26) Skriv et shell-script som konverterer alle filnavn i en katalog til små bokstaver.

Her er et skallskript som konverterer alle filnavn i en katalog til små bokstaver.

#!/bin/bash
katalog=$1″
if [ -z $katalog ]; deretter
ekkobruk: $0
utgang 1
være

hvis [! -d $katalog ]; deretter

echo Error: '$directory' er ikke en gyldig katalog.
utgang 1
være

cd $katalog || utgang 1

for fil i *; gjøre
if [ -f $fil ]; deretter
newname=$(ekko $fil | tr 'A-Z' 'a-z')
[ $file != $newname ] && mv $file $newname
være
ferdig

Forklaring:

  1. #!/bin/bash : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
  2. katalog=$1″ : Denne linjen tildeler det første kommandolinjeargumentet til variabelkatalogen.
  3. if [ -z $katalog ]; deretter : Denne linjen sjekker om katalogvariabelen er tom (ingen argument oppgitt når skriptet kjøres).
  4. ekkobruk: $0 : Hvis katalogen er tom, skriver denne linjen ut en bruksmelding med skriptets navn ($0).
  5. utgang 1 : Denne linjen går ut av skriptet med en utgangskode på 1, noe som indikerer at det har oppstått en feil.
  6. f i: Dette markerer slutten på den første if-setningen.
  7. hvis [! -d $katalog ]; deretter : Denne linjen sjekker om den angitte katalogen ikke eksisterer (-d tester for en katalog).
  8. echo Error: '$directory' er ikke en gyldig katalog. : Hvis den angitte katalogen ikke eksisterer, skriver denne linjen ut en feilmelding.
  9. utgang 1 : Går ut av skriptet med en utgangskode på 1.
  10. være : Markerer slutten av den andre if-setningen.
  11. cd $katalog || utgang 1 : Endrer gjeldende arbeidskatalog til spesifisert katalog. Hvis katalogendringen mislykkes (f.eks. ikke-eksisterende katalog), avsluttes skriptet med en feilkode.
  12. for fil i *; gjøre: Jeg for fil i *; gjøre: starter en løkke som itererer over alle elementer i gjeldende katalog (* samsvarer med alle filnavn).
  13. if [ -f $fil ]; deretter : Sjekker om gjeldende loop-iterasjonselement er en vanlig fil (-f tester for en vanlig fil).
  14. newname=$(ekko $fil | tr 'A-Z' 'a-z') : Konverterer gjeldende filnavn ($file) til små bokstaver ved å bruke tr-kommandoen og lagrer resultatet i newname-variabelen.
  15. [ $file != $newname ] && mv $file $newname : Sammenligner det opprinnelige filnavnet med det nye filnavnet med små bokstaver. Hvis de er forskjellige, gir den nytt navn til filen ved å bruke mv-kommandoen.
  16. være : Markerer slutten av den indre if-setningen.
  17. ferdig : Markerer slutten av løkken.

454

Merk : Vi må oppgi en katalog som et argument når vi kjører skriptet. Her har vi brukt banen til gjeldende katalog home/jayeshkumar/test

27) Hvordan kan du bruke aritmetiske operasjoner i et skallskript?

Aritmetiske operasjoner kan utføres i et skallskript ved hjelp av ulike innebygde metoder. Skallet gir mekanismer for enkle aritmetiske beregninger ved bruk av aritmetisk utvidelse som:

  1. Aritmetisk utvidelse ($((...)))
  2. Bruke expr Command
  3. Bruk let Command

Her er vårt Shell-skript som forklarer alle tre metodene for aritmetiske operasjoner.

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

#Aritmetisk utvidelse ($((...)))

resultat=$((tall1 + tall2))
echo Sum: $resultat

#Bruk av kommandoen expr

sum=$(utløp $num1 + $num2)
echo Sum: $sum

#Bruke let Command

la sum = tall1 + tall2
echo Sum: $sum

Forklaring:

  1. `#!/bin/bash` : Dette er shebang, som spesifiserer at skriptet skal tolkes med Bash-skallet.
  2. `num1=10` og ` num2=5` : Disse linjene tildeler verdiene 10 og 5 til variablene ` nummer1 ` og ` nummer2 `, henholdsvis.
  3. `#Aritmetisk utvidelse ($((...)))` : Dette er en kommentar som indikerer starten på delen som viser aritmetisk utvidelse.
  4. `resultat=$((tall1 + tall2))` : Denne linjen bruker aritmetisk utvidelse for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` resultat ` variabel.
  5. `echo Sum: $result` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` resultat ` variabel.
  6. `#Using expr Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` uttr ` kommando for aritmetiske operasjoner.
  7. `sum=$(uttr $num1 + $num2)` : Denne linjen bruker ` uttr ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og lagrer resultatet i ` sum ` variabel. Merk at ` uttr ` kommando krever mellomrom rundt operatørene.
  8. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
  9. `#Bruke let Command` : Dette er en kommentar som indikerer starten på delen som demonstrerer bruk av ` la ` kommando for aritmetiske operasjoner.
  10. `la sum = num1 + num2″` : Denne linjen bruker ` la ` kommando for å beregne summen av ` nummer1 ` og ` nummer2 ` og tildeler resultatet til ` sum ` variabel. Den ` la ` kommandoen krever ikke mellomrom rundt operatørene.
  11. `ekko Sum: $sum` : Denne linjen skriver ut den beregnede summen ved å bruke verdien som er lagret i ` sum ` variabel.
aritmetikk

aritmetikk

28) Lag et skript som sjekker om en nettverksvert er tilgjengelig.

Her er et enkelt skallskript som bruker ping-kommandoen for å sjekke om en nettverksvert er tilgjengelig:

#!/bin/bash
vert=$1″
if [ -z $vert ]; deretter
ekkobruk: $0
utgang 1
være
ping -c 4 $vert

hvis [$? -eq 0]; deretter
echo $host er tilgjengelig.
ellers
echo $host er ikke tilgjengelig.
være

Forklaring:

  1. Den tar et vertsnavn eller IP-adresse som argument og sjekker om argumentet er oppgitt.
  2. Hvis ingen argumenter er oppgitt, viser den en bruksmelding og avsluttes.
  3. Den bruker ping-kommandoen med -c 4-alternativet for å sende fire ICMP-ekkoforespørsler til den angitte verten.
  4. Etter at ping-kommandoen kjører, sjekker den utgangsstatusen ($?). Hvis utgangsstatusen er 0, betyr det at verten er tilgjengelig og skriptet skriver ut en suksessmelding. Ellers skriver den ut en feilmelding.

456

Merk : Vi må oppgi et vertsnavn som argument når vi kjører skriptet. Her har vi brukt google.com

29) Skriv et Shell-skript for å finne det største elementet i en matrise:

Her er et skallskript for å finne det beste elementet i en matrise.

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

# Initialiser en variabel for å lagre maksimumsverdien, start med det første elementet

max=${array[0]}

# Iterer gjennom matrisen

for num i ${array[@]}; gjøre

# Sammenlign hvert element med gjeldende maksimum

if ((antall> maks)); deretter
maks=$antall
være
ferdig

# Skriv ut maksimumsverdien

echo Maksimumselementet i matrisen er: $max

Forklaring:

  1. ` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.
  2. ` array=(3 56 24 89 67) `: Matrisen er deklarert og initialisert med verdier.
  3. ` max=${array[0]} `: `max` initialiseres med det første elementet i matrisen.
  4. ` for num i ${array[@]}; gjøre `: En `for`-løkke brukes til å iterere gjennom elementene i matrisen.
  5. ` if ((antall> maks)); deretter `: En `if`-setning sjekker om det gjeldende elementet `num` er større enn gjeldende maksimum `max`.
  6. ` max=$num`: If`num ` er større enn `max`, `max` er oppdatert med verdien av num.
  7. ` ferdig `: `For`-sløyfen er lukket.
  8. ` echo Maksimumselementet i matrisen er: $max `: Til slutt skriver skriptet ut den maksimale verdien som finnes i matrisen.
461

største antall

30) Skriv et skript for å beregne summen av elementer i en matrise.

#!/bin/bash

# Deklarer en matrise

array=(1 65 22 19 94)

# Initialiser en variabel for å lagre summen

sum=0

# Iterer gjennom matrisen og legg til hvert element til summen

for num i ${array[@]}; gjøre
am=$((am + am))
ferdig

# Skriv ut summen

echo Summen av elementene i matrisen er: $sum

Forklaring:

` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.

` array=(1 65 22 19 94) `: Matrisen er deklarert og initialisert med verdier.

` sum=0 `:` sum ` initialiseres til null for å holde summen av elementer.

` for num i ${array[@]}; gjøre `: A ` til ` loop brukes til å iterere gjennom elementene i matrisen.

` am=$((am + am)) `: Inne i løkken, hvert element ` på en ` er lagt til ` sum ` variabel.

` ferdig `: Den ` til `-sløyfen er lukket.

`echo Summen av elementene i matrisen er: $sum`: Til slutt skriver skriptet ut summen av alle elementene i matrisen.

462

Summen av elementer

Finn ut mer om Shell-skript

Konklusjon

Vi alle nerder vet at shell-script er veldig nyttig for å øke arbeidsproduktiviteten, så vel som det sparer tid. Så i denne artikkelen har vi dekket 30 veldig nyttige og mest besnærende shell-skripteksempler . Vi håper at denne komplette veiledningen for eksempel på shell-skript hjelper deg med å forstå alt om shell-skriptene.




utgang 1
være
ping -c 4 $vert

hvis [$? -eq 0]; deretter
echo $host er tilgjengelig.
ellers
echo $host er ikke tilgjengelig.
være

Forklaring:

  1. Den tar et vertsnavn eller IP-adresse som argument og sjekker om argumentet er oppgitt.
  2. Hvis ingen argumenter er oppgitt, viser den en bruksmelding og avsluttes.
  3. Den bruker ping-kommandoen med -c 4-alternativet for å sende fire ICMP-ekkoforespørsler til den angitte verten.
  4. Etter at ping-kommandoen kjører, sjekker den utgangsstatusen ($?). Hvis utgangsstatusen er 0, betyr det at verten er tilgjengelig og skriptet skriver ut en suksessmelding. Ellers skriver den ut en feilmelding.

456

Merk : Vi må oppgi et vertsnavn som argument når vi kjører skriptet. Her har vi brukt google.com

29) Skriv et Shell-skript for å finne det største elementet i en matrise:

Her er et skallskript for å finne det beste elementet i en matrise.

java design mønster

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

# Initialiser en variabel for å lagre maksimumsverdien, start med det første elementet

max=${array[0]}

# Iterer gjennom matrisen

for num i ${array[@]}; gjøre

# Sammenlign hvert element med gjeldende maksimum

if ((antall> maks)); deretter
maks=$antall
være
ferdig

# Skriv ut maksimumsverdien

echo Maksimumselementet i matrisen er: $max

Forklaring:

  1. ` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.
  2. ` array=(3 56 24 89 67) `: Matrisen er deklarert og initialisert med verdier.
  3. ` max=${array[0]} `: `max` initialiseres med det første elementet i matrisen.
  4. ` for num i ${array[@]}; gjøre `: En `for`-løkke brukes til å iterere gjennom elementene i matrisen.
  5. ` if ((antall> maks)); deretter `: En `if`-setning sjekker om det gjeldende elementet `num` er større enn gjeldende maksimum `max`.
  6. ` max=$num`: If`num ` er større enn `max`, `max` er oppdatert med verdien av num.
  7. ` ferdig `: `For`-sløyfen er lukket.
  8. ` echo Maksimumselementet i matrisen er: $max `: Til slutt skriver skriptet ut den maksimale verdien som finnes i matrisen.
461

største antall

30) Skriv et skript for å beregne summen av elementer i en matrise.

#!/bin/bash

# Deklarer en matrise

array=(1 65 22 19 94)

# Initialiser en variabel for å lagre summen

sum=0

# Iterer gjennom matrisen og legg til hvert element til summen

for num i ${array[@]}; gjøre
am=$((am + am))
ferdig

# Skriv ut summen

echo Summen av elementene i matrisen er: $sum

Forklaring:

` #!/bin/bash `: Shebang-linjen spesifiserer at skriptet skal tolkes med Bash-skallet.

` array=(1 65 22 19 94) `: Matrisen er deklarert og initialisert med verdier.

` sum=0 `:` sum ` initialiseres til null for å holde summen av elementer.

` for num i ${array[@]}; gjøre `: A ` til ` loop brukes til å iterere gjennom elementene i matrisen.

` am=$((am + am)) `: Inne i løkken, hvert element ` på en ` er lagt til ` sum ` variabel.

` ferdig `: Den ` til `-sløyfen er lukket.

`echo Summen av elementene i matrisen er: $sum`: Til slutt skriver skriptet ut summen av alle elementene i matrisen.

462

Summen av elementer

Finn ut mer om Shell-skript

Konklusjon

Vi alle nerder vet at shell-script er veldig nyttig for å øke arbeidsproduktiviteten, så vel som det sparer tid. Så i denne artikkelen har vi dekket 30 veldig nyttige og mest besnærende shell-skripteksempler . Vi håper at denne komplette veiledningen for eksempel på shell-skript hjelper deg med å forstå alt om shell-skriptene.