logo

Shell-scriptvoorbeelden

Voor alle Linux-distributies is het shellscript als een toverstaf die het proces automatiseert, gebruikers tijd bespaart en de productiviteit verhoogt. Deze zelfstudie voor scripting laat je kennismaken met de meer dan 25 voorbeelden van scripting.

Maar voordat we verder gaan met het onderwerp shell-scripting Laten we, met voorbeelden, het shell-script en de daadwerkelijke gebruiksscenario's van shell-scripting begrijpen.

Wat is Shell-script?

Nou, de schaal is een CLI ( opdrachtregelinterpreter ), dat wordt uitgevoerd in een tekstvenster waarin gebruikers shell-opdrachten kunnen beheren en uitvoeren. Aan de andere kant wordt het proces van het schrijven van een reeks opdrachten die op een Linux-systeem moeten worden uitgevoerd. Een bestand dat dergelijke instructies bevat, wordt een bash-script genoemd.



Gebruik van Shell-scripts

Hieronder staan ​​enkele veelvoorkomende toepassingen van Shell Script:

  • Taakautomatisering – Het kan worden gebruikt om repetitieve taken te automatiseren, zoals regelmatige back-ups en software-installatietaken.
  • Maatwerk - Men kan shell-scripts gebruiken om de opdrachtregelomgeving te ontwerpen en de taak eenvoudig uit te voeren volgens de behoeften.
  • Bestandsbeheer - De shellscripts kunnen ook worden gebruikt voor het beheren en manipuleren van bestanden en mappen, zoals het verplaatsen, kopiëren, hernoemen of verwijderen van bestanden.

Shell-scriptvoorbeelden in Linux

1) Wat geeft de shebang (#!) aan het begin van een shellscript aan?

De shebang (#!) aan het begin van een script geeft de tolk aan die moet worden gebruikt om het script uit te voeren. Het vertelt het systeem welke shell of tolk de opdrachten van het script moet interpreteren.

Bijvoorbeeld: Stel dat we een script hebben met de naam mijnscript.sh geschreven in de Bash-shell:

regex-java
keet

keet

In dit voorbeeld:

  • De #!/bin/bash aan het begin van het script geeft aan dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  • De echo-opdrachten worden gebruikt om berichten naar de terminal af te drukken.

2) Hoe voer je een shellscript uit vanaf de opdrachtregel?

Om een ​​shellscript vanaf de opdrachtregel uit te voeren, moeten we deze stappen volgen:

  • Zorg ervoor dat het scriptbestand uitvoerbare machtigingen heeft met behulp van de chmod-opdracht :
chmod +x myscript.sh>
  • Voer het script uit met behulp van de bestandsnaam:
./myscript.sh>

Hier moet je vervangen mijnscript.sh met uw scriptnaam.

3) Schrijf een shellscript dat techcodeview.com naar de terminal afdrukt.

Maak een scriptnaam `myscript.sh` (we gebruiken ` omdat ` editor, u kunt elke editor kiezen)

vim myscript.sh>

#!/bin/bash
# Dit script drukt techcodeview.com af naar de terminal
echo techcodeview.com

print naam

print naam

We maken ons script uitvoerbaar door `chmod +x` te gebruiken en vervolgens uit te voeren met `./myscipt.sh` en krijgen de gewenste uitvoer techcodeview.com.

4) Leg het doel uit van het echo-commando in shell-scripting.

De echo-opdracht wordt gebruikt om tekst of variabelen op de terminal weer te geven. Het wordt vaak gebruikt voor het afdrukken van berichten, variabele waarden en het genereren van programma-uitvoer.

434

echo-opdracht

In dit voorbeeld moeten we `echo` rechtstreeks op terminal uitvoeren, omdat het binnen het shell-script hetzelfde werkt.

5) Hoe kun je een waarde toewijzen aan een variabele in een shellscript?

Aan variabelen worden waarden toegewezen met behulp van de toewijzingsoperator =.

Bijvoorbeeld:

#!/bin/bash
# Een waarde aan een variabele toekennen
naam=Jayesh
leeftijd = 21
echo $naam $leeftijd

Uitleg:

  • Aan de naamvariabele wordt de waarde Jayesh toegewezen.
  • De leeftijdsvariabele krijgt de waarde 21.
  • echo wordt gebruikt om af te drukken en `$name` `$age` wordt gebruikt om de waarde aan te roepen die in de variabelen is opgeslagen.

435

6) Schrijf een shellscript dat de naam van een gebruiker als invoer neemt en deze begroet.

Maak een scriptnaam `example.sh`.

#!/bin/bash
# Vraag de gebruiker naar zijn naam
echo Hoe heet je?
lees naam
# Begroet de gebruiker
echo Hallo, $naam! Aangenaam.

Uitleg:

  • #!/bin/bash: Dit is de shebang-regel. Het vertelt het systeem dat het de Bash-interpreter moet gebruiken om het script uit te voeren.
  • # Vraag de gebruiker naar zijn naam: Dit is een opmerking. Het biedt context over de komende code. Opmerkingen worden door de tolk genegeerd.
  • echo Hoe heet je?: Het echo-commando wordt gebruikt om de tekst tussen dubbele aanhalingstekens op de terminal weer te geven.
  • leesnaam: Het leescommando wacht tot de gebruiker tekst invoert en slaat deze op in de variabelenaam.
  • echo Hallo, $naam! Leuk je te ontmoeten.: Deze regel gebruikt het echo-commando om een ​​begroetingsbericht af te drukken dat de waarde bevat van de naamvariabele, die is verzameld uit de invoer van de gebruiker.

436

7) Hoe voeg je commentaar toe aan een shellscript?

Opmerkingen in shell-scripting worden gebruikt om uitleg of context aan de code te geven. Ze worden door de tolk genegeerd en zijn alleen bedoeld voor mensen die het script lezen. U kunt opmerkingen toevoegen met het #-symbool.

#!/bin/bash
# Dit is een commentaar waarin het doel van het script wordt uitgelegd
echo gfg

8) Maak een shellscript dat controleert of een bestand in de huidige map bestaat.

Hier is een script dat controleert of een bestand met de naam example.txt in de huidige map bestaat:

#!/bin/bash
bestand=voorbeeld.txt
# Controleer of het bestand bestaat
if [ -e $bestand ]; Dan
echo Bestand bestaat: $file
anders
echo Bestand niet gevonden: $file
zijn

Uitleg:

  1. #!/bin/bash: Dit is de shebang-regel die de tolk (/bin/bash) specificeert die moet worden gebruikt voor het uitvoeren van het script.
  2. file=example.txt: Deze regel definieert het variabele bestand en wijst er de waarde example.txt aan toe. U kunt dit vervangen door de naam van het bestand waarop u wilt controleren.
  3. if [ -e $bestand ]; then: Deze regel start een if-statement. De voorwaarde [ -e $file ] controleert of het bestand dat wordt opgegeven door de waarde van de bestandsvariabele bestaat. De vlag -e wordt gebruikt om te controleren of het bestand bestaat.
  4. echo Bestand bestaat: $file: Als de voorwaarde waar is (dat wil zeggen: het bestand bestaat), wordt op deze regel een bericht afgedrukt dat aangeeft dat het bestand bestaat, samen met de naam van het bestand.
  5. else: Als de voorwaarde onwaar is (dat wil zeggen: het bestand bestaat niet), voert het script de code uit onder de else-vertakking.
  6. echo Bestand niet gevonden: $file: Deze regel geeft een foutmelding weer die aangeeft dat het opgegeven bestand niet is gevonden, samen met de bestandsnaam.
  7. fi: Deze regel markeert het einde van de if-instructie.
Bestand zoeken

Bestand zoeken

9) Wat is het verschil tussen enkele aanhalingstekens (‘) en dubbele aanhalingstekens () in shell-scripting?

Enkele aanhalingstekens (‘) en dubbele aanhalingstekens () worden gebruikt om tekenreeksen in shell-scripting te omsluiten, maar ze gedragen zich verschillend:

  • Enkele aanhalingstekens: Alles tussen enkele aanhalingstekens wordt behandeld als een letterlijke tekenreeks. Variabelenamen en de meeste speciale tekens worden niet uitgevouwen.
  • Dubbele aanhalingstekens: Variabelen en bepaalde speciale tekens binnen dubbele aanhalingstekens worden uitgevouwen. De inhoud is onderhevig aan variabele vervanging en opdrachtvervanging.

#!/bin/bash

abcd=Hallo
echo ‘$abcd’ # Uitvoer: $abcd
echo $abcd # Uitvoer: Hallo

10) Hoe kunt u opdrachtregelargumenten gebruiken in een shellscript?

Opdrachtregelargumenten zijn waarden die aan een script worden verstrekt wanneer het wordt uitgevoerd. Ze zijn binnen het script toegankelijk met behulp van speciale variabelen zoals , , etc., waarbij het eerste argument vertegenwoordigt, het tweede argument, enzovoort.

Bijvoorbeeld: Als onze scriptnaam `example.sh`

#!/bin/bash

echo Scriptnaam:

Voor alle Linux-distributies is het shellscript als een toverstaf die het proces automatiseert, gebruikers tijd bespaart en de productiviteit verhoogt. Deze zelfstudie voor scripting laat je kennismaken met de meer dan 25 voorbeelden van scripting.

Maar voordat we verder gaan met het onderwerp shell-scripting Laten we, met voorbeelden, het shell-script en de daadwerkelijke gebruiksscenario's van shell-scripting begrijpen.

Wat is Shell-script?

Nou, de schaal is een CLI ( opdrachtregelinterpreter ), dat wordt uitgevoerd in een tekstvenster waarin gebruikers shell-opdrachten kunnen beheren en uitvoeren. Aan de andere kant wordt het proces van het schrijven van een reeks opdrachten die op een Linux-systeem moeten worden uitgevoerd. Een bestand dat dergelijke instructies bevat, wordt een bash-script genoemd.

Gebruik van Shell-scripts

Hieronder staan ​​enkele veelvoorkomende toepassingen van Shell Script:

  • Taakautomatisering – Het kan worden gebruikt om repetitieve taken te automatiseren, zoals regelmatige back-ups en software-installatietaken.
  • Maatwerk - Men kan shell-scripts gebruiken om de opdrachtregelomgeving te ontwerpen en de taak eenvoudig uit te voeren volgens de behoeften.
  • Bestandsbeheer - De shellscripts kunnen ook worden gebruikt voor het beheren en manipuleren van bestanden en mappen, zoals het verplaatsen, kopiëren, hernoemen of verwijderen van bestanden.

Shell-scriptvoorbeelden in Linux

1) Wat geeft de shebang (#!) aan het begin van een shellscript aan?

De shebang (#!) aan het begin van een script geeft de tolk aan die moet worden gebruikt om het script uit te voeren. Het vertelt het systeem welke shell of tolk de opdrachten van het script moet interpreteren.

Bijvoorbeeld: Stel dat we een script hebben met de naam mijnscript.sh geschreven in de Bash-shell:

keet

keet

In dit voorbeeld:

  • De #!/bin/bash aan het begin van het script geeft aan dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  • De echo-opdrachten worden gebruikt om berichten naar de terminal af te drukken.

2) Hoe voer je een shellscript uit vanaf de opdrachtregel?

Om een ​​shellscript vanaf de opdrachtregel uit te voeren, moeten we deze stappen volgen:

  • Zorg ervoor dat het scriptbestand uitvoerbare machtigingen heeft met behulp van de chmod-opdracht :
chmod +x myscript.sh>
  • Voer het script uit met behulp van de bestandsnaam:
./myscript.sh>

Hier moet je vervangen mijnscript.sh met uw scriptnaam.

3) Schrijf een shellscript dat techcodeview.com naar de terminal afdrukt.

Maak een scriptnaam `myscript.sh` (we gebruiken ` omdat ` editor, u kunt elke editor kiezen)

vim myscript.sh>

#!/bin/bash
# Dit script drukt techcodeview.com af naar de terminal
echo techcodeview.com

print naam

print naam

We maken ons script uitvoerbaar door `chmod +x` te gebruiken en vervolgens uit te voeren met `./myscipt.sh` en krijgen de gewenste uitvoer techcodeview.com.

4) Leg het doel uit van het echo-commando in shell-scripting.

De echo-opdracht wordt gebruikt om tekst of variabelen op de terminal weer te geven. Het wordt vaak gebruikt voor het afdrukken van berichten, variabele waarden en het genereren van programma-uitvoer.

434

echo-opdracht

In dit voorbeeld moeten we `echo` rechtstreeks op terminal uitvoeren, omdat het binnen het shell-script hetzelfde werkt.

5) Hoe kun je een waarde toewijzen aan een variabele in een shellscript?

Aan variabelen worden waarden toegewezen met behulp van de toewijzingsoperator =.

Bijvoorbeeld:

#!/bin/bash
# Een waarde aan een variabele toekennen
naam=Jayesh
leeftijd = 21
echo $naam $leeftijd

Uitleg:

  • Aan de naamvariabele wordt de waarde Jayesh toegewezen.
  • De leeftijdsvariabele krijgt de waarde 21.
  • echo wordt gebruikt om af te drukken en `$name` `$age` wordt gebruikt om de waarde aan te roepen die in de variabelen is opgeslagen.

435

6) Schrijf een shellscript dat de naam van een gebruiker als invoer neemt en deze begroet.

Maak een scriptnaam `example.sh`.

#!/bin/bash
# Vraag de gebruiker naar zijn naam
echo Hoe heet je?
lees naam
# Begroet de gebruiker
echo Hallo, $naam! Aangenaam.

Uitleg:

  • #!/bin/bash: Dit is de shebang-regel. Het vertelt het systeem dat het de Bash-interpreter moet gebruiken om het script uit te voeren.
  • # Vraag de gebruiker naar zijn naam: Dit is een opmerking. Het biedt context over de komende code. Opmerkingen worden door de tolk genegeerd.
  • echo Hoe heet je?: Het echo-commando wordt gebruikt om de tekst tussen dubbele aanhalingstekens op de terminal weer te geven.
  • leesnaam: Het leescommando wacht tot de gebruiker tekst invoert en slaat deze op in de variabelenaam.
  • echo Hallo, $naam! Leuk je te ontmoeten.: Deze regel gebruikt het echo-commando om een ​​begroetingsbericht af te drukken dat de waarde bevat van de naamvariabele, die is verzameld uit de invoer van de gebruiker.

436

7) Hoe voeg je commentaar toe aan een shellscript?

Opmerkingen in shell-scripting worden gebruikt om uitleg of context aan de code te geven. Ze worden door de tolk genegeerd en zijn alleen bedoeld voor mensen die het script lezen. U kunt opmerkingen toevoegen met het #-symbool.

#!/bin/bash
# Dit is een commentaar waarin het doel van het script wordt uitgelegd
echo gfg

8) Maak een shellscript dat controleert of een bestand in de huidige map bestaat.

Hier is een script dat controleert of een bestand met de naam example.txt in de huidige map bestaat:

#!/bin/bash
bestand=voorbeeld.txt
# Controleer of het bestand bestaat
if [ -e $bestand ]; Dan
echo Bestand bestaat: $file
anders
echo Bestand niet gevonden: $file
zijn

Uitleg:

  1. #!/bin/bash: Dit is de shebang-regel die de tolk (/bin/bash) specificeert die moet worden gebruikt voor het uitvoeren van het script.
  2. file=example.txt: Deze regel definieert het variabele bestand en wijst er de waarde example.txt aan toe. U kunt dit vervangen door de naam van het bestand waarop u wilt controleren.
  3. if [ -e $bestand ]; then: Deze regel start een if-statement. De voorwaarde [ -e $file ] controleert of het bestand dat wordt opgegeven door de waarde van de bestandsvariabele bestaat. De vlag -e wordt gebruikt om te controleren of het bestand bestaat.
  4. echo Bestand bestaat: $file: Als de voorwaarde waar is (dat wil zeggen: het bestand bestaat), wordt op deze regel een bericht afgedrukt dat aangeeft dat het bestand bestaat, samen met de naam van het bestand.
  5. else: Als de voorwaarde onwaar is (dat wil zeggen: het bestand bestaat niet), voert het script de code uit onder de else-vertakking.
  6. echo Bestand niet gevonden: $file: Deze regel geeft een foutmelding weer die aangeeft dat het opgegeven bestand niet is gevonden, samen met de bestandsnaam.
  7. fi: Deze regel markeert het einde van de if-instructie.
Bestand zoeken

Bestand zoeken

9) Wat is het verschil tussen enkele aanhalingstekens (‘) en dubbele aanhalingstekens () in shell-scripting?

Enkele aanhalingstekens (‘) en dubbele aanhalingstekens () worden gebruikt om tekenreeksen in shell-scripting te omsluiten, maar ze gedragen zich verschillend:

  • Enkele aanhalingstekens: Alles tussen enkele aanhalingstekens wordt behandeld als een letterlijke tekenreeks. Variabelenamen en de meeste speciale tekens worden niet uitgevouwen.
  • Dubbele aanhalingstekens: Variabelen en bepaalde speciale tekens binnen dubbele aanhalingstekens worden uitgevouwen. De inhoud is onderhevig aan variabele vervanging en opdrachtvervanging.

#!/bin/bash

abcd=Hallo
echo ‘$abcd’ # Uitvoer: $abcd
echo $abcd # Uitvoer: Hallo

10) Hoe kunt u opdrachtregelargumenten gebruiken in een shellscript?

Opdrachtregelargumenten zijn waarden die aan een script worden verstrekt wanneer het wordt uitgevoerd. Ze zijn binnen het script toegankelijk met behulp van speciale variabelen zoals $1, $2, etc., waarbij $1 het eerste argument vertegenwoordigt, $2 het tweede argument, enzovoort.

Bijvoorbeeld: Als onze scriptnaam `example.sh`

#!/bin/bash

echo Scriptnaam: $0
echo Eerste argument: $1
echo Tweede argument: $2

Als we het script uitvoeren met `.example.sh hello_1 hello_2`, zal het het volgende opleveren:

cli argumenten

cli argumenten

11) Hoe gebruik je de for-lus om een ​​lijst met waarden te doorlopen?

Maak een scriptnaam `example.sh`.

#!/bin/bash

fruits=(appel banaan kersen dadel)
voor fruit in ${fruits[@]}; Doen
echo Huidig ​​fruit: $fruit
klaar

Uitleg:

De lijn `fruits=` creëert een array met de naam fruit met vier elementen: appel, banaan, kers en dadel.

  • voor fruit in ${fruits[@]}; do: Deze regel start een for-lus. Dit is wat elk onderdeel betekent:
  • voor fruit: Dit declareert een lusvariabele genaamd fruit. In elke iteratie van de lus behoudt fruit de waarde van het huidige element uit de fruits-array.
  • ${fruits[@]}: Dit is een array-uitbreiding die alle elementen uit de fruits-array overneemt. De syntaxis ${…} zorgt ervoor dat elk element als een afzonderlijk item wordt behandeld.
  • do: Dit trefwoord markeert het begin van de lusbody.
  • echo Huidig ​​fruit: $fruit: Binnen de lus gebruikt deze regel het echo-commando om de huidige waarde van de lusvariabele fruit weer te geven. Er wordt een bericht afgedrukt als Huidig ​​fruit: appel voor elk fruit in de array.
  • done: Dit trefwoord markeert het einde van de lusbody. Het vertelt het script dat de lus is voltooid.
for loop

for loop

12) Schrijf een shellscript dat de som van gehele getallen van 1 tot N berekent met behulp van een lus.

Maak een scriptnaam `example.sh`.

#!/bin/bash

echo Voer een getal in (N):
lees N
som=0
voor (( i=1; i<=$N; i++ )); Doen
som=$((som + i))
klaar
echo De som van gehele getallen van 1 tot $N is: $sum

Uitleg:
Het script begint met de vraag om een ​​getal (N) in te voeren met behulp van read. Dit getal bepaalt hoe vaak de lus wordt uitgevoerd.

  1. De variabele som wordt geïnitialiseerd op 0. Deze variabele houdt de som van gehele getallen bij.
  2. De for-lus begint met for (( i=1; i<=$N; i++ )). Deze lusstructuur wordt gebruikt om een ​​reeks acties een bepaald aantal keren te herhalen, in dit geval van 1 tot de waarde van N.
  3. Binnen de lus gebeuren deze dingen:
    • i=1 stelt de lusvariabele i in op 1 aan het begin van elke iteratie.
    • De lusvoorwaarde i<=$N controleert of i nog steeds kleiner is dan of gelijk is aan het gegeven getal N.
    • Als de voorwaarde waar is, wordt de lusbody uitgevoerd.
    • sum=$((sum + i)) berekent de nieuwe waarde van sum door de huidige waarde van i erbij op te tellen. Dit telt de gehele getallen van 1 op tot de huidige i-waarde.
  4. Na elke iteratie verhoogt i++ de waarde van i met 1.
  5. De lus blijft lopen totdat de voorwaarde i<=$N onwaar wordt (wanneer i groter wordt dan N).
  6. Zodra de lus is voltooid, geeft het script de som weer van de gehele getallen van 1 tot het ingevoerde getal N.

439

13) Maak een script dat naar een specifiek woord in een bestand zoekt en het aantal keren dat het voorkomt telt.

Maak een scriptnaam `word_count.sh`

#!/bin/bash

echo Voer het woord in waarnaar u wilt zoeken:
lees doel_woord
echo Voer de bestandsnaam in:
lees bestandsnaam
count=$(grep -o -w $doelwoord $bestandsnaam | wc -l)
echo Het woord ‘$target_word’ verschijnt $count keer in ‘$filename’.

Uitleg:

  • echo Voer het woord in waarnaar moet worden gezocht:: Op deze regel wordt een bericht weergegeven waarin de gebruiker wordt gevraagd een woord in te voeren waarnaar hij wil zoeken in een bestand.
  • read target_word: Deze regel leest de invoer van de gebruiker en slaat deze op in een variabele met de naam target_word.
  • echo Voer de bestandsnaam in:: Op deze regel wordt een bericht weergegeven waarin de gebruiker wordt gevraagd de naam in te voeren van het bestand waarin hij wil zoeken.
  • lees bestandsnaam: Deze regel leest de invoer van de gebruiker en slaat deze op in een variabele met de naam bestandsnaam.
  • count=$(grep -o -w $target_word $filename | wc -l): Deze regel doet het hoofdwerk van het script. Laten we het verder uitsplitsen:
    • grep -o -w $target_word $filename: Dit deel van de opdracht zoekt naar exemplaren van het target_word in de opgegeven bestandsnaam. De opties -o en -w zorgen ervoor dat alleen overeenkomsten van hele woorden worden geteld.
    • |: Dit is een pipe, die de uitvoer van het vorige commando neemt en deze als invoer voor het volgende commando verzendt.
    • wc -l: Dit deel van de opdracht gebruikt de opdracht wc om het aantal regels in de invoer te tellen. De optie -l telt specifiek de regels.
    • De hele opdracht berekent het aantal keren dat het doelwoord in het bestand voorkomt en wijst dat aantal toe aan de variabele aantal

441

14) Leg de verschillen uit tussen standaarduitvoer (stdout) en standaardfout (stderr).

Het belangrijkste verschil tussen standaarduitvoer (stdout) en standaardfout (stderr) is als volgt:

  • Standaarduitvoer (stdout): Dit is de standaarduitvoerstroom waar de reguliere uitvoer van een opdracht naartoe gaat. Het wordt standaard op de terminal weergegeven. U kunt het omleiden naar een bestand met behulp van>.
  • Standaardfout (stderr): Dit is de uitvoerstroom voor foutmeldingen en waarschuwingen. Het wordt ook standaard op de terminal weergegeven. U kunt het omleiden naar een bestand met behulp van 2>.

15) Leg het concept van voorwaardelijke instructies in shell-scripting uit.

Voorwaardelijke instructies in shell-scripting stellen ons in staat beslissingen te nemen en de stroom van ons script te controleren op basis van bepaalde voorwaarden. Ze zorgen ervoor dat ons script verschillende sets opdrachten kan uitvoeren, afhankelijk van of een bepaalde voorwaarde waar of onwaar is. De primaire voorwaardelijke instructies in shell-scripting zijn de if-instructie, de elif-instructie (optioneel) en de else-instructie (optioneel).

Hier is de basisstructuur van een voorwaardelijke instructie in shell-scripting:

als [voorwaarde]; Dan
# Commando's die moeten worden uitgevoerd als de voorwaarde waar is
elif [andere_voorwaarde]; Dan
# Commando's die moeten worden uitgevoerd als een andere_voorwaarde waar is (optioneel)
anders
# Uit te voeren opdrachten als geen van de voorwaarden waar is (optioneel)
zijn

Uitleg:

  • [ condition ] = Commando dat de voorwaarde evalueert en een waar (0) of onwaar (niet-nul) afsluitstatus retourneert.
  • then = Het is een trefwoord dat aangeeft dat de daaropvolgende opdrachten worden uitgevoerd als de voorwaarde als waar wordt geëvalueerd.
  • elif = (afkorting van else if) Het is een sectie waarmee we aanvullende voorwaarden kunnen opgeven om te controleren.
  • else = het is een sectie die opdrachten bevat die worden uitgevoerd als geen van de voorwaarden waar is.
  • fi = Het is een trefwoord dat het einde van het voorwaardelijke blok markeert.

16) Hoe lees je regels uit een bestand binnen een shellscript?

Naar lees regels vanuit een bestand binnen een shellscript kunnen we verschillende methoden gebruiken, maar een gebruikelijke benadering is het gebruik van een while-lus in combinatie met de leesopdracht. Zo kunnen we het doen:

#!/bin/bash
bestand=/home/jayeshkumar/jayesh.txt
# Controleer of het bestand bestaat
if [ -e $bestand ]; Dan
terwijl IFS= lees -r regel; Doen
echo Regel gelezen: $line
# Voeg hier uw verwerkingslogica toe
klaar <$bestand
anders
echo Bestand niet gevonden: $file
zijn

Uitleg:

  1. #!/bin/bash: Dit is de shebang-regel die de tolk (/bin/bash) specificeert die moet worden gebruikt voor het uitvoeren van het script.
  2. file=/home/jayeshkumar/jayesh.txt: Deze regel definieert het variabele bestand en wijst het volledige pad toe aan het bestand jayesh.txt in de map /home/jayeshkumar. Wijzig dit pad zodat het overeenkomt met het daadwerkelijke pad van het bestand dat u wilt lezen.
  3. if [ -e $bestand ]; then: Deze regel start een if-statement. Er wordt gecontroleerd of het bestand dat is opgegeven door de variabele $file bestaat. De vlag -e controleert of het bestand bestaat.
  4. terwijl IFS= lees -r regel; do: Deze regel initieert een while-lus die regels uit het bestand leest.
    • IFS=: De IFS (Internal Field Separator) is ingesteld op een lege waarde om voorloop- en volgspaties te behouden.
    • read -r line: Dit leest de huidige regel uit het bestand en slaat deze op in de variabele regel.
  5. echo Line read: $line: Deze regel geeft de inhoud weer van de regel die uit het bestand is gelezen. De variabele $line bevat de inhoud van de huidige regel.
  6. # Voeg hier uw verwerkingslogica toe: Dit is een plaatsaanduiding voor commentaar waarin u uw eigen logica kunt toevoegen om elke regel te verwerken. U kunt bijvoorbeeld de regel analyseren, informatie extraheren of specifieke acties uitvoeren op basis van de inhoud.
  7. done <$file: Dit markeert het einde van de while-lus. De < $file leidt de inhoud van het bestand om zodat deze door de lus kan worden gelezen.
  8. else: Als het bestand niet bestaat (de voorwaarde in de if-instructie is false), voert het script de code uit onder de else-vertakking.
  9. echo Bestand niet gevonden: $file: Deze regel geeft een foutmelding weer die aangeeft dat het opgegeven bestand niet is gevonden.
  10. fi: Deze regel markeert het einde van de if-instructie.
bestand lezen

bestand lezen

Hier gebruikten we ` pwd ` commando om het pad van de huidige map op te halen.

17) Schrijf een functie in een shellscript die de faculteit van een bepaald getal berekent.

Hier is het script datbereken de faculteitvan een bepaald getal.

#!/bin/bash
# Definieer een functie om faculteit te berekenen
berekenen_factorial() {
aantal=$1
feit=1
voor ((i=1; i<=getal; i++)); Doen
feit=$((feit * i))
klaar
echo $ feit
}
# Vraag de gebruiker om een ​​nummer in te voeren
echo Voer een getal in:
lees invoer_getal
# Roep de functie 'calculate_factorial' aan met het invoernummer
factorial_result=$(calculate_factorial $input_num)
# Geef het faculteitsresultaat weer
echo Faculteit van $input_num is: $factorial_result

Uitleg:

  1. Het script begint met de regel #!/bin/bash om de tolk op te geven.
  2. berekenen_factorial() is gedefinieerd als een functie. Er is één argument nodig, num, wat het getal is waarvoor de faculteit moet worden berekend.
  3. Binnen de functie wordt feit geïnitialiseerd op 1. Deze variabele slaat het faculteitsresultaat op.
  4. De for-lus itereert van 1 naar het opgegeven getal (num). In elke iteratie vermenigvuldigt het de huidige feitelijke waarde met de lusindex i.
  5. Nadat de lus is voltooid, bevat de feitvariabele de berekende faculteit.
  6. Het script vraagt ​​de gebruiker om een ​​getal in te voeren met behulp van read.
  7. De functie ‘calculate_factorial’ wordt aangeroepen met het door de gebruiker opgegeven getal, en het resultaat wordt opgeslagen in de variabele factorial_result.
  8. Ten slotte geeft het script het berekende factoriële resultaat weer.
Factorieel

Factorieel

18) Hoe ga je om met signalen als Ctrl+C in een shellscript?

In een shellscript kun je signalen zoals Ctrl+C (ook bekend als SIGINT) verwerken met behulp van het trap-commando. Ctrl+C genereert een SIGINT-signaal wanneer de gebruiker erop drukt om het actieve script of programma te onderbreken. Door het trap-commando te gebruiken, kunt u de acties opgeven die moeten worden ondernomen wanneer een bepaald signaal wordt ontvangen. Zo verwerkt u signalen zoals Ctrl+C in een shellscript:

#!/bin/bash
opruimen() {
echo Script onderbroken. Opruimen uitvoeren…
# Voeg hier uw opruimacties toe
uitgang 1
}
# Stel een trap in om de opruimfunctie aan te roepen wanneer Ctrl+C (SIGINT) wordt ontvangen
valopruiming SIGINT
# Rest van je script
echo Rennen...
slapen 10
echo Klaar.

Het omgaan met signalen is belangrijk om scripts robuust te maken en ervoor te zorgen dat ze onverwachte onderbrekingen netjes afhandelen. U kunt de opschoonfunctie aanpassen aan uw specifieke behoeften, zoals het sluiten van bestanden, het stoppen van processen of het loggen van informatie voordat het script wordt afgesloten.

Uitleg:

  1. #!/bin/bash: Deze shebang-regel specificeert de tolk die moet worden gebruikt voor het uitvoeren van het script.
  2. cleanup() { … }: Dit definieert een functie met de naam cleanup. Binnen deze functie kunt u alle acties opnemen die moeten worden uitgevoerd wanneer het script wordt onderbroken, zoals het sluiten van bestanden, het vrijgeven van bronnen of het uitvoeren van andere opruimtaken.
  3. trap opruimen SIGINT: Het trap-commando wordt gebruikt om een ​​signaalhandler in te stellen. In dit geval specificeert het dat wanneer het SIGINT-signaal (Ctrl+C) wordt ontvangen, de opschoonfunctie moet worden uitgevoerd.
  4. echo Running…, sleep 10, echo Finished.: Dit zijn slechts voorbeeldopdrachten om de uitvoering van een script te simuleren.

446

19) Maak een script dat dubbele regels in een tekstbestand controleert en verwijdert.

Hier is ons Linux-script waarin we dubbele regels uit een tekstbestand zullen verwijderen.

#!/bin/bash
invoer_bestand=invoer.txt
uitvoer_bestand=uitvoer.txt
sorteer $input_file | uniq> $output_file
echo Dubbele regels zijn succesvol verwijderd.

Uitleg:

  1. Het script begint met een shebang (#!/bin/bash), wat aangeeft dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. De variabele input_file wordt ingesteld op de naam van het invoerbestand dat dubbele regels bevat (wijzig dit in de werkelijke naam van het invoerbestand).
  3. De output_file variabele wordt ingesteld op de naam van het uitvoerbestand waar de duplicaten zullen worden verwijderd (wijzig dit in de gewenste uitvoerbestandsnaam).
  4. Het script gebruikt het sorteercommando om de regels in het invoerbestand te sorteren. Door de regels te sorteren, worden dubbele regels gegroepeerd.
  5. De gesorteerde regels worden vervolgens door het uniq-commando geleid, dat opeenvolgende dubbele regels verwijdert. De uitvoer van dit proces wordt omgeleid naar het uitvoerbestand.
  6. Nadat de duplicaten zijn verwijderd, drukt het script een succesbericht af.
dubbele regel verwijderen

dubbele regel verwijderen

Hier gebruiken we ` kat ` om de tekst in het tekstbestand weer te geven.

20) Schrijf een script dat een veilig willekeurig wachtwoord genereert.

Hier is ons script om een ​​veilig willekeurig wachtwoord te genereren.

#!/bin/bash
# Functie om een ​​willekeurig wachtwoord te genereren
Genereer wachtwoord() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Roep de functie op en sla het gegenereerde wachtwoord op
wachtwoord=$(genereer_wachtwoord)
echo Gegenereerd wachtwoord: $password

Opmerking: De gebruiker kan de lengte van zijn wachtwoord dienovereenkomstig wijzigen door het getal `12` te vervangen.

Uitleg:

  1. Het script begint met een shebang (#!/bin/bash), wat aangeeft dat het moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. De functie genereren_wachtwoord is gedefinieerd om een ​​willekeurig wachtwoord te genereren. Dit is hoe het werkt:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 verdeelt de gefilterde willekeurige gegevens in regels met een breedte van elk 12 tekens.
    • head -n 1 selecteert de eerste regel, waardoor we feitelijk een willekeurige reeks tekens met een lengte van 12 krijgen.
  3. Aan de wachtwoordvariabele wordt het resultaat toegewezen van het aanroepen van de functie genereren_wachtwoord.
  4. Ten slotte wordt het gegenereerde wachtwoord weergegeven met behulp van echo.

448

21) Schrijf een shellscript dat de totale grootte van alle bestanden in een map berekent.

Hier is een shellscript om de totale grootte van alle bestanden in een map te berekenen.

#!/bin/bash
map=/pad/naar/uw/map
total_size=$(du -csh $directory | grep totaal | awk ‘{print $1}’)
echo Totale grootte van bestanden in $directory: $total_size

Uitleg:

  1. Het script begint met #!/bin/bash shebang, wat aangeeft dat het moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. De mapvariabele wordt ingesteld op het pad van de map waarvoor u de totale bestandsgrootte wilt berekenen. Vervang /pad/naar/uw/directory door het daadwerkelijke pad.
  3. De opdracht du wordt gebruikt om het gebruik van de bestandsruimte te schatten. De gebruikte opties zijn:
    • -c: Produceer een eindtotaal.
    • -s: Geef alleen de totale grootte van de opgegeven map weer.
    • -h: afdrukformaten in een voor mensen leesbaar formaat (bijvoorbeeld KB, MB, GB).
  4. De uitvoer van du wordt doorgesluisd naar grep total om de regel uit te filteren die de totale grootte bevat.
  5. awk ‘{print $1}’ wordt gebruikt om het eerste veld (totale grootte) uit de regel te extraheren.
  6. De berekende totale grootte wordt opgeslagen in de variabele total_size.
  7. Ten slotte geeft het script de totale grootte weer met behulp van echo.
Totale grootte van bestanden

Totale grootte van bestanden

Hier gebruikten we ` pwd ` commando om het huidige mappad te zien.

22) Leg het verschil uit tussen if- en elif-instructies in shell-scripting.

Functie `als`Staffement `elif`-verklaring
Doel Leg het verschil uit tussen if- en elif-instructies in shell-scripting. Biedt alternatieve voorwaarden om te controleren of de initiële if-voorwaarde onwaar is.
gebruik Gebruikt voor de begintoestand. Wordt gebruikt na de initiële if-voorwaarde om aanvullende voorwaarden te controleren.
aantal blokken Kan er maar één hebben als blok. Kan meerdere elif-blokken hebben, maar slechts één ander blok (optioneel).
Executie Voert het codeblok uit dat is gekoppeld aan de if-instructie als de voorwaarde waar is. Als de voorwaarde onwaar is, wordt het else-blok (indien aanwezig) uitgevoerd (optioneel). Controleert elke elif-voorwaarde op volgorde. Als één elif-voorwaarde waar is, wordt het corresponderende codeblok uitgevoerd en verlaat het script het volledige voorwaardelijke blok. Als geen van de elif-voorwaarden waar is, wordt het else-blok (indien aanwezig) uitgevoerd.
Geneste structuren Kan worden genest in andere if-, elif- of else-blokken. Kan niet in een ander elif-blok worden genest, maar kan wel in een if- of else-blok worden gebruikt.

Laten we het aan de hand van een voorbeeld begrijpen.

#!/bin/bash
aantal=5
if [$nummer -gt 10]; Dan
echo $getal is groter dan 10
anders
echo $number is niet groter dan 10
zijn
echo ——–
if [$nummer -gt 10]; Dan
echo $getal is groter dan 10
elif [ $getal -eq 10 ]; Dan
echo $getal is gelijk aan 10
anders
echo $getal is kleiner dan 10
zijn

Uitleg:

In dit voorbeeld controleert het eerste if-blok of getal groter is dan 10. Als dit niet het geval is, wordt er een bericht afgedrukt dat aangeeft dat het getal niet groter is dan 10. Het tweede blok met elif-instructies controleert meerdere voorwaarden opeenvolgend totdat een van deze waar is. In dit geval zal de uitvoer, aangezien de waarde van getal 5 is:

if_elif verschil

if_elif verschil

23) Hoe gebruik je een while-lus om herhaaldelijk opdrachten uit te voeren?

Een while-lus wordt gebruikt in shell-scripts om herhaaldelijk een reeks opdrachten uit te voeren zolang een opgegeven voorwaarde waar is. De lus gaat door met het uitvoeren van de opdrachten totdat de voorwaarde onwaar wordt.

Hier is de basissyntaxis van een while-lus:

terwijl [voorwaarde]; Doen
# Uit te voeren opdrachten
klaar

Uitleg:

  1. De 'while'-lus begint met het sleutelwoord 'while', gevolgd door een voorwaarde tussen vierkante haakjes '[ ]'.
  2. De body van de lus, die de uit te voeren opdrachten bevat, wordt omsloten door de trefwoorden `do` en `done`.
  3. De lus controleert eerst de toestand. Als de voorwaarde waar is, worden de opdrachten binnen de lusbody uitgevoerd. Nadat de lusbody is uitgevoerd, wordt de voorwaarde opnieuw gecontroleerd en herhaalt het proces zich totdat de voorwaarde onwaar wordt.

Voorbeeld: Als we getallen van 1 tot 5 willen afdrukken

#!/bin/bash
teller=1
while [ $counter -le 5 ]; Doen
echo-nummer: $counter
teller=$((teller + 1))
klaar

Uitleg:

  • De tellervariabele is ingesteld op 1.
  • De while-lus controleert of de waarde van counter kleiner dan of gelijk is aan 5. Zolang deze voorwaarde waar is, gaat de lus door met uitvoeren.
  • Binnen de lus wordt de huidige waarde van de teller afgedrukt met behulp van echo.
  • De teller wordt met 1 verhoogd met behulp van de uitdrukking $((teller + 1)).
herhalingslus

herhalingslus

24) Maak een shellscript dat alle lege bestanden in een map vindt en vermeldt.

Shell-script dat u kunt gebruiken om alle lege bestanden in een map te vinden en weer te geven met behulp van de opdrachten `find` en `stat`:

#!/bin/bash
map=$1″
if [ -z $map ]; Dan
echogebruik: $0
uitgang 1
zijn

als [ ! -d $map]; Dan
echo Fout: ‘$directory’ is geen geldige map.
uitgang 1
zijn
echo Lege bestanden in $directory:
zoek $directory -type f -leeg

Uitleg:

  1. ` #!/bin/bash `: Dit wordt een shebang genoemd en vertelt het besturingssysteem om de Bash-shell te gebruiken om het script te interpreteren en uit te voeren.
  2. ` map=$1″ `: Deze regel wijst het eerste opdrachtregelargument (aangeduid met $1) toe aan de variabele ` map `.
  3. ` if [ -z $map ]; Dan `: Deze regel start een if-instructie die controleert of de ` map ` variabele is leeg (-z test voor een lege string).
  4. ` echogebruik: $0 `: Als de directory leeg is, drukt deze regel een gebruiksbericht af, waarbij ` $ 0 ` vertegenwoordigt de naam van het script.
  5. ` uitgang 1 `: Deze regel sluit het script af met de afsluitcode ` 1 ', wat een fout aangeeft.
  6. ` zijn `: Deze regel markeert het einde van de ` als ` verklaring.
  7. ` als [ ! -d $map]; Dan `: Dit start een nieuwe if-instructie om te controleren of de opgegeven map bestaat (` -D ` tests voor een directory).
  8. ` echo Fout: ‘$directory’ is geen geldige map. `: Als de opgegeven directory niet bestaat, drukt deze regel een foutmelding af.
  9. ` uitgang 1 `: Sluit het script af met de afsluitcode ` 1 `.
  10. ` zijn `: Markeert het einde van de tweede ` als` stelling.
  11. ` echo Lege bestanden in $directory: `: Als alles tot nu toe geldig is, drukt deze regel een bericht af dat aangeeft dat het script lege bestanden in de opgegeven map zal weergeven.
  12. ` zoek $directory -type f -leeg `: Deze regel gebruikt de ` vinden ` commando om te zoeken naar lege bestanden (` -leeg `) van het type gewone bestanden (` -type f `) in de opgegeven map. Vervolgens worden deze lege bestanden weergegeven.
Lege bestanden vinden

Lege bestanden vinden

Opmerking : We moeten een map opgeven als argument bij het uitvoeren van het script. Hier hebben we het pad van de huidige map home/jayeshkumar/ gebruikt

25) Wat is het doel van het leescommando in shell-scripting?

Met de leesopdracht in shell-scripting kan het script u om informatie vragen. Het is alsof een computer je een vraag stelt en op je antwoord wacht. Dit is handig voor scripts waarbij u iets moet typen of wanneer het script moet werken met informatie uit bestanden. De leesopdracht helpt het script te stoppen en te wachten op wat u typt, en vervolgens kan het die informatie gebruiken om meer dingen in het script te doen.

Syntaxis van leesopdracht:

read variable_name>

Voorbeeld : Als we de naam als invoer van de gebruiker willen gebruiken om deze af te drukken.

#!/bin/bash
echo Voer uw naam in:
lees naam
echo Hallo, $naam!

453

lees naam

Samenvattend wordt het leescommando gebruikt om gebruikersinvoer of gegevens uit bestanden binnen shell-scripts vast te leggen, waardoor de scripts interactiever en veelzijdiger worden.

26) Schrijf een shellscript dat alle bestandsnamen in een map naar kleine letters converteert.

Hier is een shellscript dat alle bestandsnamen in een map naar kleine letters converteert.

#!/bin/bash
map=$1″
if [ -z $map ]; Dan
echogebruik: $0
uitgang 1
zijn

als [ ! -d $map]; Dan

echo Fout: ‘$directory’ is geen geldige map.
uitgang 1
zijn

cd $map || uitgang 1

voor bestand in *; Doen
if [ -f $bestand ]; Dan
nieuwenaam=$(echo $bestand | tr ‘A-Z’ ‘a-z’)
[ $bestand != $nieuwenaam ] && mv $bestand $nieuwenaam
zijn
klaar

Uitleg:

  1. #!/bin/bash : Dit is de shebang, waarin wordt gespecificeerd dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. map=$1″ : Deze regel wijst het eerste opdrachtregelargument toe aan de variabelenmap.
  3. if [ -z $map ]; Dan : Deze regel controleert of de mapvariabele leeg is (er wordt geen argument opgegeven bij het uitvoeren van het script).
  4. echogebruik: $0 : Als de map leeg is, drukt deze regel een gebruiksbericht af met de naam van het script ($0).
  5. uitgang 1 : deze regel sluit het script af met de afsluitcode 1, wat aangeeft dat er een fout is opgetreden.
  6. F i: Dit markeert het einde van de eerste if-instructie.
  7. als [ ! -d $map]; Dan : Deze regel controleert of de opgegeven map niet bestaat (-d test voor een map).
  8. echo Fout: ‘$directory’ is geen geldige map. : Als de opgegeven map niet bestaat, drukt deze regel een foutmelding af.
  9. uitgang 1 : Sluit het script af met de afsluitcode 1.
  10. zijn : Markeert het einde van de tweede if-instructie.
  11. cd $map || uitgang 1 : Wijzigt de huidige werkmap naar de opgegeven map. Als het wijzigen van de map mislukt (bijvoorbeeld als de map niet bestaat), wordt het script afgesloten met een foutcode.
  12. voor bestand in *; Doen: I voor bestand in *; Doen: zorgt voor een lus die alle items in de huidige map doorloopt (* komt overeen met alle bestandsnamen).
  13. if [ -f $bestand ]; Dan : Controleert of het huidige lus-iteratie-item een ​​normaal bestand is (-f test voor een normaal bestand).
  14. nieuwenaam=$(echo $bestand | tr ‘A-Z’ ‘a-z’) : Converteert de huidige bestandsnaam ($file) naar kleine letters met behulp van de opdracht tr en slaat het resultaat op in de variabele newname.
  15. [ $bestand != $nieuwenaam ] && mv $bestand $nieuwenaam : Vergelijkt de oorspronkelijke bestandsnaam met de nieuwe bestandsnaam in kleine letters. Als ze verschillend zijn, wordt de naam van het bestand gewijzigd met behulp van de opdracht mv.
  16. zijn : Markeert het einde van de innerlijke if-instructie.
  17. klaar : Markeert het einde van de lus.

454

Opmerking : We moeten een map opgeven als argument bij het uitvoeren van het script. Hier hebben we het pad van de huidige map home/jayeshkumar/test gebruikt

27) Hoe kun je rekenkundige bewerkingen gebruiken binnen een shellscript?

Rekenkundige bewerkingen kunnen worden uitgevoerd binnen een shellscript met behulp van verschillende ingebouwde methoden. De shell biedt mechanismen voor eenvoudige rekenkundige berekeningen met behulp van rekenkundige uitbreiding, zoals:

  1. Rekenkundige uitbreiding ($((…)))
  2. Gebruik expr-opdracht
  3. Met behulp van let Command

Hier is ons Shell-script waarin alle drie de methoden voor rekenkundige bewerkingen worden uitgelegd.

#!/bin/bash
getal1=10
aantal2=5

#Rekenkundige uitbreiding ($((…)))

resultaat=$((aantal1 + aantal2))
echo Som: $resultaat

#Expr-opdracht gebruiken

som=$(expr $num1 + $num2)
echo Som: $som

#Let-opdracht gebruiken

laat som = num1 + num2
echo Som: $som

Uitleg:

  1. `#!/bin/bash` : Dit is de shebang, waarin wordt gespecificeerd dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. `num1=10` en ` getal2=5` : Deze regels wijzen de waarden 10 en 5 toe aan de variabelen ` num1 ' en ' num2 ', respectievelijk.
  3. `#Rekenkundige uitbreiding ($((…)))` : Dit is een opmerking die het begin aangeeft van de sectie die de rekenkundige uitbreiding demonstreert.
  4. `resultaat=$((aantal1 + aantal2))` : Deze regel gebruikt rekenkundige expansie om de som van ` te berekenen num1 ' en ' num2 ` en slaat het resultaat op in de ` resultaat ` variabele.
  5. `echosom: $resultaat` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` resultaat ` variabele.
  6. `#Gebruik expr-opdracht` : Dit is een commentaar dat het begin aangeeft van de sectie die het gebruik van de ` uitspr ` commando voor rekenkundige bewerkingen.
  7. `som=$(expr $num1 + $num2)` : Deze regel gebruikt de ` uitspr ` commando om de som van ` te berekenen num1 ' en ' num2 ` en slaat het resultaat op in de ` som ` variabele. Merk op dat de ` uitspr Het commando ` vereist spaties rond de operatoren.
  8. `echo Som: $som` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` som ` variabele.
  9. `#Gebruik let-commando` : Dit is een commentaar dat het begin aangeeft van de sectie die het gebruik van de ` laten ` commando voor rekenkundige bewerkingen.
  10. `laat som = num1 + num2″` : Deze regel gebruikt de ` laten ` commando om de som van ` te berekenen num1 ' en ' num2 ' en wijst het resultaat toe aan de ' som ` variabele. De ` laten Het commando ` vereist geen spaties rond de operatoren.
  11. `echo Som: $som` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` som ` variabele.
rekenkundig

rekenkundig

28) Maak een script dat controleert of een netwerkhost bereikbaar is.

Hier is een eenvoudig shellscript dat de ping-opdracht gebruikt om te controleren of een netwerkhost bereikbaar is:

#!/bin/bash
gastheer=$1″
als [ -z $host ]; Dan
echogebruik: $0
uitgang 1
zijn
ping -c 4 $host

als [$? -eq 0]; Dan
echo $host is bereikbaar.
anders
echo $host is niet bereikbaar.
zijn

Uitleg:

  1. Het neemt een hostnaam of IP-adres als argument en controleert of het argument wordt opgegeven.
  2. Als er geen argument wordt opgegeven, wordt er een gebruiksbericht weergegeven en wordt het afgesloten.
  3. Het gebruikt het ping-commando met de optie -c 4 om vier ICMP-echoverzoeken naar de opgegeven host te sturen.
  4. Nadat de ping-opdracht is uitgevoerd, wordt de afsluitstatus ($?) gecontroleerd. Als de afsluitstatus 0 is, betekent dit dat de host bereikbaar is en dat het script een succesbericht afdrukt. Anders wordt er een foutbericht afgedrukt.

456

Opmerking : We moeten een hostnaam opgeven als argument bij het uitvoeren van het script. Hier hebben we google.com gebruikt

29) Schrijf een shellscript om het grootste element in een array te vinden:

Hier is een shellscript om het grootste element in een array te vinden.

#!/bin/bash
# Declareer een array
array=(3 56 24 89 67)

# Initialiseer een variabele om de maximale waarde op te slaan, te beginnen met het eerste element

max=${array[0]}

# Herhaal de array

voor num in ${array[@]}; Doen

# Vergelijk elk element met het huidige maximum

als ((aantal> max)); Dan
max=$num
zijn
klaar

# Druk de maximale waarde af

echo Het maximale element in de array is: $max

Uitleg:

  1. ` #!/bin/bash `: De shebang-regel specificeert dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. ` array=(3 56 24 89 67) `: De array wordt gedeclareerd en geïnitialiseerd met waarden.
  3. ` max=${array[0]} `: `max` wordt geïnitialiseerd met het eerste element van de array.
  4. ` voor num in ${array[@]}; Doen `: Een `for`-lus wordt gebruikt om door de elementen van de array te lopen.
  5. ` als ((aantal> max)); Dan `: Een `if`-instructie controleert of het huidige element `num` groter is dan het huidige maximum `max`.
  6. ` max=$num`: Als`aantal ` groter is dan `max`, `max` wordt bijgewerkt met de waarde num.
  7. ` klaar `: De `for`-lus is gesloten.
  8. ` echo Het maximale element in de array is: $max `: Ten slotte drukt het script de maximale waarde af die in de array is gevonden.
461

grootste aantal

30) Schrijf een script om de som van elementen in een array te berekenen.

#!/bin/bash

# Declareer een array

array=(1 65 22 19 94)

# Initialiseer een variabele om de som op te slaan

som=0

# Herhaal de array en voeg elk element toe aan de som

voor num in ${array[@]}; Doen
ben=$((ben + ben))
klaar

# Druk de som af

echo De som van de elementen in de array is: $sum

Uitleg:

` #!/bin/bash `: De shebang-regel specificeert dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.

` array=(1 65 22 19 94) `: De array wordt gedeclareerd en geïnitialiseerd met waarden.

` som=0 `:` som ` wordt geïnitialiseerd op nul om de som van de elementen vast te houden.

` voor num in ${array[@]}; Doen `: Een` voor ` lus wordt gebruikt om door de elementen van de array te lopen.

` ben=$((ben + ben)) `: Binnen de lus, elk element ` op een ` wordt toegevoegd aan ` som ` variabele.

` klaar `: De ` voor ' lus is gesloten.

`echo De som van de elementen in de array is: $sum`: Ten slotte drukt het script de som van alle elementen in de array af.

462

Som van elementen

Meer weten over Shell-scripts

Conclusie

We weten allemaal dat shell-script erg handig is om de werkproductiviteit te verhogen en ook tijd te besparen. Dus in dit artikel hebben we het besproken 30 zeer nuttige en meest conman shell-scriptvoorbeelden . We hopen dat deze complete handleiding over shell-scriptvoorbeelden u helpt alles over de shell-scripts te begrijpen.




echo Eerste argument:
echo Tweede argument:

Als we het script uitvoeren met `.example.sh hello_1 hello_2`, zal het het volgende opleveren:

cli argumenten

cli argumenten

11) Hoe gebruik je de for-lus om een ​​lijst met waarden te doorlopen?

Maak een scriptnaam `example.sh`.

#!/bin/bash

fruits=(appel banaan kersen dadel)
voor fruit in ${fruits[@]}; Doen
echo Huidig ​​fruit: $fruit
klaar

Uitleg:

De lijn `fruits=` creëert een array met de naam fruit met vier elementen: appel, banaan, kers en dadel.

  • voor fruit in ${fruits[@]}; do: Deze regel start een for-lus. Dit is wat elk onderdeel betekent:
  • voor fruit: Dit declareert een lusvariabele genaamd fruit. In elke iteratie van de lus behoudt fruit de waarde van het huidige element uit de fruits-array.
  • ${fruits[@]}: Dit is een array-uitbreiding die alle elementen uit de fruits-array overneemt. De syntaxis ${…} zorgt ervoor dat elk element als een afzonderlijk item wordt behandeld.
  • do: Dit trefwoord markeert het begin van de lusbody.
  • echo Huidig ​​fruit: $fruit: Binnen de lus gebruikt deze regel het echo-commando om de huidige waarde van de lusvariabele fruit weer te geven. Er wordt een bericht afgedrukt als Huidig ​​fruit: appel voor elk fruit in de array.
  • done: Dit trefwoord markeert het einde van de lusbody. Het vertelt het script dat de lus is voltooid.
for loop

for loop

12) Schrijf een shellscript dat de som van gehele getallen van 1 tot N berekent met behulp van een lus.

Maak een scriptnaam `example.sh`.

#!/bin/bash

echo Voer een getal in (N):
lees N
som=0
voor (( i=1; i<=$N; i++ )); Doen
som=$((som + i))
klaar
echo De som van gehele getallen van 1 tot $N is: $sum

Uitleg:
Het script begint met de vraag om een ​​getal (N) in te voeren met behulp van read. Dit getal bepaalt hoe vaak de lus wordt uitgevoerd.

  1. De variabele som wordt geïnitialiseerd op 0. Deze variabele houdt de som van gehele getallen bij.
  2. De for-lus begint met for (( i=1; i<=$N; i++ )). Deze lusstructuur wordt gebruikt om een ​​reeks acties een bepaald aantal keren te herhalen, in dit geval van 1 tot de waarde van N.
  3. Binnen de lus gebeuren deze dingen:
    • i=1 stelt de lusvariabele i in op 1 aan het begin van elke iteratie.
    • De lusvoorwaarde i<=$N controleert of i nog steeds kleiner is dan of gelijk is aan het gegeven getal N.
    • Als de voorwaarde waar is, wordt de lusbody uitgevoerd.
    • sum=$((sum + i)) berekent de nieuwe waarde van sum door de huidige waarde van i erbij op te tellen. Dit telt de gehele getallen van 1 op tot de huidige i-waarde.
  4. Na elke iteratie verhoogt i++ de waarde van i met 1.
  5. De lus blijft lopen totdat de voorwaarde i<=$N onwaar wordt (wanneer i groter wordt dan N).
  6. Zodra de lus is voltooid, geeft het script de som weer van de gehele getallen van 1 tot het ingevoerde getal N.

439

13) Maak een script dat naar een specifiek woord in een bestand zoekt en het aantal keren dat het voorkomt telt.

Maak een scriptnaam `word_count.sh`

#!/bin/bash

echo Voer het woord in waarnaar u wilt zoeken:
lees doel_woord
echo Voer de bestandsnaam in:
lees bestandsnaam
count=$(grep -o -w $doelwoord $bestandsnaam | wc -l)
echo Het woord ‘$target_word’ verschijnt $count keer in ‘$filename’.

Uitleg:

  • echo Voer het woord in waarnaar moet worden gezocht:: Op deze regel wordt een bericht weergegeven waarin de gebruiker wordt gevraagd een woord in te voeren waarnaar hij wil zoeken in een bestand.
  • read target_word: Deze regel leest de invoer van de gebruiker en slaat deze op in een variabele met de naam target_word.
  • echo Voer de bestandsnaam in:: Op deze regel wordt een bericht weergegeven waarin de gebruiker wordt gevraagd de naam in te voeren van het bestand waarin hij wil zoeken.
  • lees bestandsnaam: Deze regel leest de invoer van de gebruiker en slaat deze op in een variabele met de naam bestandsnaam.
  • count=$(grep -o -w $target_word $filename | wc -l): Deze regel doet het hoofdwerk van het script. Laten we het verder uitsplitsen:
    • grep -o -w $target_word $filename: Dit deel van de opdracht zoekt naar exemplaren van het target_word in de opgegeven bestandsnaam. De opties -o en -w zorgen ervoor dat alleen overeenkomsten van hele woorden worden geteld.
    • |: Dit is een pipe, die de uitvoer van het vorige commando neemt en deze als invoer voor het volgende commando verzendt.
    • wc -l: Dit deel van de opdracht gebruikt de opdracht wc om het aantal regels in de invoer te tellen. De optie -l telt specifiek de regels.
    • De hele opdracht berekent het aantal keren dat het doelwoord in het bestand voorkomt en wijst dat aantal toe aan de variabele aantal

441

14) Leg de verschillen uit tussen standaarduitvoer (stdout) en standaardfout (stderr).

Het belangrijkste verschil tussen standaarduitvoer (stdout) en standaardfout (stderr) is als volgt:

  • Standaarduitvoer (stdout): Dit is de standaarduitvoerstroom waar de reguliere uitvoer van een opdracht naartoe gaat. Het wordt standaard op de terminal weergegeven. U kunt het omleiden naar een bestand met behulp van>.
  • Standaardfout (stderr): Dit is de uitvoerstroom voor foutmeldingen en waarschuwingen. Het wordt ook standaard op de terminal weergegeven. U kunt het omleiden naar een bestand met behulp van 2>.

15) Leg het concept van voorwaardelijke instructies in shell-scripting uit.

Voorwaardelijke instructies in shell-scripting stellen ons in staat beslissingen te nemen en de stroom van ons script te controleren op basis van bepaalde voorwaarden. Ze zorgen ervoor dat ons script verschillende sets opdrachten kan uitvoeren, afhankelijk van of een bepaalde voorwaarde waar of onwaar is. De primaire voorwaardelijke instructies in shell-scripting zijn de if-instructie, de elif-instructie (optioneel) en de else-instructie (optioneel).

Hier is de basisstructuur van een voorwaardelijke instructie in shell-scripting:

als [voorwaarde]; Dan
# Commando's die moeten worden uitgevoerd als de voorwaarde waar is
elif [andere_voorwaarde]; Dan
# Commando's die moeten worden uitgevoerd als een andere_voorwaarde waar is (optioneel)
anders
# Uit te voeren opdrachten als geen van de voorwaarden waar is (optioneel)
zijn

Uitleg:

  • [ condition ] = Commando dat de voorwaarde evalueert en een waar (0) of onwaar (niet-nul) afsluitstatus retourneert.
  • then = Het is een trefwoord dat aangeeft dat de daaropvolgende opdrachten worden uitgevoerd als de voorwaarde als waar wordt geëvalueerd.
  • elif = (afkorting van else if) Het is een sectie waarmee we aanvullende voorwaarden kunnen opgeven om te controleren.
  • else = het is een sectie die opdrachten bevat die worden uitgevoerd als geen van de voorwaarden waar is.
  • fi = Het is een trefwoord dat het einde van het voorwaardelijke blok markeert.

16) Hoe lees je regels uit een bestand binnen een shellscript?

Naar lees regels vanuit een bestand binnen een shellscript kunnen we verschillende methoden gebruiken, maar een gebruikelijke benadering is het gebruik van een while-lus in combinatie met de leesopdracht. Zo kunnen we het doen:

#!/bin/bash
bestand=/home/jayeshkumar/jayesh.txt
# Controleer of het bestand bestaat
if [ -e $bestand ]; Dan
terwijl IFS= lees -r regel; Doen
echo Regel gelezen: $line
# Voeg hier uw verwerkingslogica toe
klaar <$bestand
anders
echo Bestand niet gevonden: $file
zijn

Uitleg:

  1. #!/bin/bash: Dit is de shebang-regel die de tolk (/bin/bash) specificeert die moet worden gebruikt voor het uitvoeren van het script.
  2. file=/home/jayeshkumar/jayesh.txt: Deze regel definieert het variabele bestand en wijst het volledige pad toe aan het bestand jayesh.txt in de map /home/jayeshkumar. Wijzig dit pad zodat het overeenkomt met het daadwerkelijke pad van het bestand dat u wilt lezen.
  3. if [ -e $bestand ]; then: Deze regel start een if-statement. Er wordt gecontroleerd of het bestand dat is opgegeven door de variabele $file bestaat. De vlag -e controleert of het bestand bestaat.
  4. terwijl IFS= lees -r regel; do: Deze regel initieert een while-lus die regels uit het bestand leest.
    • IFS=: De IFS (Internal Field Separator) is ingesteld op een lege waarde om voorloop- en volgspaties te behouden.
    • read -r line: Dit leest de huidige regel uit het bestand en slaat deze op in de variabele regel.
  5. echo Line read: $line: Deze regel geeft de inhoud weer van de regel die uit het bestand is gelezen. De variabele $line bevat de inhoud van de huidige regel.
  6. # Voeg hier uw verwerkingslogica toe: Dit is een plaatsaanduiding voor commentaar waarin u uw eigen logica kunt toevoegen om elke regel te verwerken. U kunt bijvoorbeeld de regel analyseren, informatie extraheren of specifieke acties uitvoeren op basis van de inhoud.
  7. done <$file: Dit markeert het einde van de while-lus. De < $file leidt de inhoud van het bestand om zodat deze door de lus kan worden gelezen.
  8. else: Als het bestand niet bestaat (de voorwaarde in de if-instructie is false), voert het script de code uit onder de else-vertakking.
  9. echo Bestand niet gevonden: $file: Deze regel geeft een foutmelding weer die aangeeft dat het opgegeven bestand niet is gevonden.
  10. fi: Deze regel markeert het einde van de if-instructie.
bestand lezen

bestand lezen

Hier gebruikten we ` pwd ` commando om het pad van de huidige map op te halen.

17) Schrijf een functie in een shellscript die de faculteit van een bepaald getal berekent.

Hier is het script datbereken de faculteitvan een bepaald getal.

#!/bin/bash
# Definieer een functie om faculteit te berekenen
berekenen_factorial() {
aantal=
feit=1
voor ((i=1; i<=getal; i++)); Doen
feit=$((feit * i))
klaar
echo $ feit
}
# Vraag de gebruiker om een ​​nummer in te voeren
echo Voer een getal in:
lees invoer_getal
# Roep de functie 'calculate_factorial' aan met het invoernummer
factorial_result=$(calculate_factorial $input_num)
# Geef het faculteitsresultaat weer
echo Faculteit van $input_num is: $factorial_result

Uitleg:

  1. Het script begint met de regel #!/bin/bash om de tolk op te geven.
  2. berekenen_factorial() is gedefinieerd als een functie. Er is één argument nodig, num, wat het getal is waarvoor de faculteit moet worden berekend.
  3. Binnen de functie wordt feit geïnitialiseerd op 1. Deze variabele slaat het faculteitsresultaat op.
  4. De for-lus itereert van 1 naar het opgegeven getal (num). In elke iteratie vermenigvuldigt het de huidige feitelijke waarde met de lusindex i.
  5. Nadat de lus is voltooid, bevat de feitvariabele de berekende faculteit.
  6. Het script vraagt ​​de gebruiker om een ​​getal in te voeren met behulp van read.
  7. De functie ‘calculate_factorial’ wordt aangeroepen met het door de gebruiker opgegeven getal, en het resultaat wordt opgeslagen in de variabele factorial_result.
  8. Ten slotte geeft het script het berekende factoriële resultaat weer.
Factorieel

Factorieel

18) Hoe ga je om met signalen als Ctrl+C in een shellscript?

In een shellscript kun je signalen zoals Ctrl+C (ook bekend als SIGINT) verwerken met behulp van het trap-commando. Ctrl+C genereert een SIGINT-signaal wanneer de gebruiker erop drukt om het actieve script of programma te onderbreken. Door het trap-commando te gebruiken, kunt u de acties opgeven die moeten worden ondernomen wanneer een bepaald signaal wordt ontvangen. Zo verwerkt u signalen zoals Ctrl+C in een shellscript:

#!/bin/bash
opruimen() {
echo Script onderbroken. Opruimen uitvoeren…
# Voeg hier uw opruimacties toe
uitgang 1
}
# Stel een trap in om de opruimfunctie aan te roepen wanneer Ctrl+C (SIGINT) wordt ontvangen
valopruiming SIGINT
# Rest van je script
echo Rennen...
slapen 10
echo Klaar.

Het omgaan met signalen is belangrijk om scripts robuust te maken en ervoor te zorgen dat ze onverwachte onderbrekingen netjes afhandelen. U kunt de opschoonfunctie aanpassen aan uw specifieke behoeften, zoals het sluiten van bestanden, het stoppen van processen of het loggen van informatie voordat het script wordt afgesloten.

Uitleg:

java-char naar string
  1. #!/bin/bash: Deze shebang-regel specificeert de tolk die moet worden gebruikt voor het uitvoeren van het script.
  2. cleanup() { … }: Dit definieert een functie met de naam cleanup. Binnen deze functie kunt u alle acties opnemen die moeten worden uitgevoerd wanneer het script wordt onderbroken, zoals het sluiten van bestanden, het vrijgeven van bronnen of het uitvoeren van andere opruimtaken.
  3. trap opruimen SIGINT: Het trap-commando wordt gebruikt om een ​​signaalhandler in te stellen. In dit geval specificeert het dat wanneer het SIGINT-signaal (Ctrl+C) wordt ontvangen, de opschoonfunctie moet worden uitgevoerd.
  4. echo Running…, sleep 10, echo Finished.: Dit zijn slechts voorbeeldopdrachten om de uitvoering van een script te simuleren.

446

19) Maak een script dat dubbele regels in een tekstbestand controleert en verwijdert.

Hier is ons Linux-script waarin we dubbele regels uit een tekstbestand zullen verwijderen.

#!/bin/bash
invoer_bestand=invoer.txt
uitvoer_bestand=uitvoer.txt
sorteer $input_file | uniq> $output_file
echo Dubbele regels zijn succesvol verwijderd.

Uitleg:

  1. Het script begint met een shebang (#!/bin/bash), wat aangeeft dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. De variabele input_file wordt ingesteld op de naam van het invoerbestand dat dubbele regels bevat (wijzig dit in de werkelijke naam van het invoerbestand).
  3. De output_file variabele wordt ingesteld op de naam van het uitvoerbestand waar de duplicaten zullen worden verwijderd (wijzig dit in de gewenste uitvoerbestandsnaam).
  4. Het script gebruikt het sorteercommando om de regels in het invoerbestand te sorteren. Door de regels te sorteren, worden dubbele regels gegroepeerd.
  5. De gesorteerde regels worden vervolgens door het uniq-commando geleid, dat opeenvolgende dubbele regels verwijdert. De uitvoer van dit proces wordt omgeleid naar het uitvoerbestand.
  6. Nadat de duplicaten zijn verwijderd, drukt het script een succesbericht af.
dubbele regel verwijderen

dubbele regel verwijderen

Hier gebruiken we ` kat ` om de tekst in het tekstbestand weer te geven.

20) Schrijf een script dat een veilig willekeurig wachtwoord genereert.

Hier is ons script om een ​​veilig willekeurig wachtwoord te genereren.

#!/bin/bash
# Functie om een ​​willekeurig wachtwoord te genereren
Genereer wachtwoord() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Roep de functie op en sla het gegenereerde wachtwoord op
wachtwoord=$(genereer_wachtwoord)
echo Gegenereerd wachtwoord: $password

Opmerking: De gebruiker kan de lengte van zijn wachtwoord dienovereenkomstig wijzigen door het getal `12` te vervangen.

Uitleg:

  1. Het script begint met een shebang (#!/bin/bash), wat aangeeft dat het moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. De functie genereren_wachtwoord is gedefinieerd om een ​​willekeurig wachtwoord te genereren. Dit is hoe het werkt:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 verdeelt de gefilterde willekeurige gegevens in regels met een breedte van elk 12 tekens.
    • head -n 1 selecteert de eerste regel, waardoor we feitelijk een willekeurige reeks tekens met een lengte van 12 krijgen.
  3. Aan de wachtwoordvariabele wordt het resultaat toegewezen van het aanroepen van de functie genereren_wachtwoord.
  4. Ten slotte wordt het gegenereerde wachtwoord weergegeven met behulp van echo.

448

21) Schrijf een shellscript dat de totale grootte van alle bestanden in een map berekent.

Hier is een shellscript om de totale grootte van alle bestanden in een map te berekenen.

#!/bin/bash
map=/pad/naar/uw/map
total_size=$(du -csh $directory | grep totaal | awk ‘{print }’)
echo Totale grootte van bestanden in $directory: $total_size

hoe een kolom in postgresql te verwijderen

Uitleg:

  1. Het script begint met #!/bin/bash shebang, wat aangeeft dat het moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. De mapvariabele wordt ingesteld op het pad van de map waarvoor u de totale bestandsgrootte wilt berekenen. Vervang /pad/naar/uw/directory door het daadwerkelijke pad.
  3. De opdracht du wordt gebruikt om het gebruik van de bestandsruimte te schatten. De gebruikte opties zijn:
    • -c: Produceer een eindtotaal.
    • -s: Geef alleen de totale grootte van de opgegeven map weer.
    • -h: afdrukformaten in een voor mensen leesbaar formaat (bijvoorbeeld KB, MB, GB).
  4. De uitvoer van du wordt doorgesluisd naar grep total om de regel uit te filteren die de totale grootte bevat.
  5. awk ‘{print }’ wordt gebruikt om het eerste veld (totale grootte) uit de regel te extraheren.
  6. De berekende totale grootte wordt opgeslagen in de variabele total_size.
  7. Ten slotte geeft het script de totale grootte weer met behulp van echo.
Totale grootte van bestanden

Totale grootte van bestanden

Hier gebruikten we ` pwd ` commando om het huidige mappad te zien.

22) Leg het verschil uit tussen if- en elif-instructies in shell-scripting.

Functie `als`Staffement `elif`-verklaring
Doel Leg het verschil uit tussen if- en elif-instructies in shell-scripting. Biedt alternatieve voorwaarden om te controleren of de initiële if-voorwaarde onwaar is.
gebruik Gebruikt voor de begintoestand. Wordt gebruikt na de initiële if-voorwaarde om aanvullende voorwaarden te controleren.
aantal blokken Kan er maar één hebben als blok. Kan meerdere elif-blokken hebben, maar slechts één ander blok (optioneel).
Executie Voert het codeblok uit dat is gekoppeld aan de if-instructie als de voorwaarde waar is. Als de voorwaarde onwaar is, wordt het else-blok (indien aanwezig) uitgevoerd (optioneel). Controleert elke elif-voorwaarde op volgorde. Als één elif-voorwaarde waar is, wordt het corresponderende codeblok uitgevoerd en verlaat het script het volledige voorwaardelijke blok. Als geen van de elif-voorwaarden waar is, wordt het else-blok (indien aanwezig) uitgevoerd.
Geneste structuren Kan worden genest in andere if-, elif- of else-blokken. Kan niet in een ander elif-blok worden genest, maar kan wel in een if- of else-blok worden gebruikt.

Laten we het aan de hand van een voorbeeld begrijpen.

#!/bin/bash
aantal=5
if [$nummer -gt 10]; Dan
echo $getal is groter dan 10
anders
echo $number is niet groter dan 10
zijn
echo ——–
if [$nummer -gt 10]; Dan
echo $getal is groter dan 10
elif [ $getal -eq 10 ]; Dan
echo $getal is gelijk aan 10
anders
echo $getal is kleiner dan 10
zijn

Uitleg:

In dit voorbeeld controleert het eerste if-blok of getal groter is dan 10. Als dit niet het geval is, wordt er een bericht afgedrukt dat aangeeft dat het getal niet groter is dan 10. Het tweede blok met elif-instructies controleert meerdere voorwaarden opeenvolgend totdat een van deze waar is. In dit geval zal de uitvoer, aangezien de waarde van getal 5 is:

if_elif verschil

if_elif verschil

23) Hoe gebruik je een while-lus om herhaaldelijk opdrachten uit te voeren?

Een while-lus wordt gebruikt in shell-scripts om herhaaldelijk een reeks opdrachten uit te voeren zolang een opgegeven voorwaarde waar is. De lus gaat door met het uitvoeren van de opdrachten totdat de voorwaarde onwaar wordt.

Hier is de basissyntaxis van een while-lus:

terwijl [voorwaarde]; Doen
# Uit te voeren opdrachten
klaar

Uitleg:

  1. De 'while'-lus begint met het sleutelwoord 'while', gevolgd door een voorwaarde tussen vierkante haakjes '[ ]'.
  2. De body van de lus, die de uit te voeren opdrachten bevat, wordt omsloten door de trefwoorden `do` en `done`.
  3. De lus controleert eerst de toestand. Als de voorwaarde waar is, worden de opdrachten binnen de lusbody uitgevoerd. Nadat de lusbody is uitgevoerd, wordt de voorwaarde opnieuw gecontroleerd en herhaalt het proces zich totdat de voorwaarde onwaar wordt.

Voorbeeld: Als we getallen van 1 tot 5 willen afdrukken

#!/bin/bash
teller=1
while [ $counter -le 5 ]; Doen
echo-nummer: $counter
teller=$((teller + 1))
klaar

Uitleg:

  • De tellervariabele is ingesteld op 1.
  • De while-lus controleert of de waarde van counter kleiner dan of gelijk is aan 5. Zolang deze voorwaarde waar is, gaat de lus door met uitvoeren.
  • Binnen de lus wordt de huidige waarde van de teller afgedrukt met behulp van echo.
  • De teller wordt met 1 verhoogd met behulp van de uitdrukking $((teller + 1)).
herhalingslus

herhalingslus

24) Maak een shellscript dat alle lege bestanden in een map vindt en vermeldt.

Shell-script dat u kunt gebruiken om alle lege bestanden in een map te vinden en weer te geven met behulp van de opdrachten `find` en `stat`:

#!/bin/bash
map=″
if [ -z $map ]; Dan
echogebruik:

Voor alle Linux-distributies is het shellscript als een toverstaf die het proces automatiseert, gebruikers tijd bespaart en de productiviteit verhoogt. Deze zelfstudie voor scripting laat je kennismaken met de meer dan 25 voorbeelden van scripting.

Maar voordat we verder gaan met het onderwerp shell-scripting Laten we, met voorbeelden, het shell-script en de daadwerkelijke gebruiksscenario's van shell-scripting begrijpen.

Wat is Shell-script?

Nou, de schaal is een CLI ( opdrachtregelinterpreter ), dat wordt uitgevoerd in een tekstvenster waarin gebruikers shell-opdrachten kunnen beheren en uitvoeren. Aan de andere kant wordt het proces van het schrijven van een reeks opdrachten die op een Linux-systeem moeten worden uitgevoerd. Een bestand dat dergelijke instructies bevat, wordt een bash-script genoemd.

Gebruik van Shell-scripts

Hieronder staan ​​enkele veelvoorkomende toepassingen van Shell Script:

  • Taakautomatisering – Het kan worden gebruikt om repetitieve taken te automatiseren, zoals regelmatige back-ups en software-installatietaken.
  • Maatwerk - Men kan shell-scripts gebruiken om de opdrachtregelomgeving te ontwerpen en de taak eenvoudig uit te voeren volgens de behoeften.
  • Bestandsbeheer - De shellscripts kunnen ook worden gebruikt voor het beheren en manipuleren van bestanden en mappen, zoals het verplaatsen, kopiëren, hernoemen of verwijderen van bestanden.

Shell-scriptvoorbeelden in Linux

1) Wat geeft de shebang (#!) aan het begin van een shellscript aan?

De shebang (#!) aan het begin van een script geeft de tolk aan die moet worden gebruikt om het script uit te voeren. Het vertelt het systeem welke shell of tolk de opdrachten van het script moet interpreteren.

Bijvoorbeeld: Stel dat we een script hebben met de naam mijnscript.sh geschreven in de Bash-shell:

keet

keet

In dit voorbeeld:

  • De #!/bin/bash aan het begin van het script geeft aan dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  • De echo-opdrachten worden gebruikt om berichten naar de terminal af te drukken.

2) Hoe voer je een shellscript uit vanaf de opdrachtregel?

Om een ​​shellscript vanaf de opdrachtregel uit te voeren, moeten we deze stappen volgen:

  • Zorg ervoor dat het scriptbestand uitvoerbare machtigingen heeft met behulp van de chmod-opdracht :
chmod +x myscript.sh>
  • Voer het script uit met behulp van de bestandsnaam:
./myscript.sh>

Hier moet je vervangen mijnscript.sh met uw scriptnaam.

3) Schrijf een shellscript dat techcodeview.com naar de terminal afdrukt.

Maak een scriptnaam `myscript.sh` (we gebruiken ` omdat ` editor, u kunt elke editor kiezen)

vim myscript.sh>

#!/bin/bash
# Dit script drukt techcodeview.com af naar de terminal
echo techcodeview.com

print naam

print naam

We maken ons script uitvoerbaar door `chmod +x` te gebruiken en vervolgens uit te voeren met `./myscipt.sh` en krijgen de gewenste uitvoer techcodeview.com.

4) Leg het doel uit van het echo-commando in shell-scripting.

De echo-opdracht wordt gebruikt om tekst of variabelen op de terminal weer te geven. Het wordt vaak gebruikt voor het afdrukken van berichten, variabele waarden en het genereren van programma-uitvoer.

434

echo-opdracht

In dit voorbeeld moeten we `echo` rechtstreeks op terminal uitvoeren, omdat het binnen het shell-script hetzelfde werkt.

5) Hoe kun je een waarde toewijzen aan een variabele in een shellscript?

Aan variabelen worden waarden toegewezen met behulp van de toewijzingsoperator =.

Bijvoorbeeld:

#!/bin/bash
# Een waarde aan een variabele toekennen
naam=Jayesh
leeftijd = 21
echo $naam $leeftijd

Uitleg:

  • Aan de naamvariabele wordt de waarde Jayesh toegewezen.
  • De leeftijdsvariabele krijgt de waarde 21.
  • echo wordt gebruikt om af te drukken en `$name` `$age` wordt gebruikt om de waarde aan te roepen die in de variabelen is opgeslagen.

435

6) Schrijf een shellscript dat de naam van een gebruiker als invoer neemt en deze begroet.

Maak een scriptnaam `example.sh`.

#!/bin/bash
# Vraag de gebruiker naar zijn naam
echo Hoe heet je?
lees naam
# Begroet de gebruiker
echo Hallo, $naam! Aangenaam.

Uitleg:

  • #!/bin/bash: Dit is de shebang-regel. Het vertelt het systeem dat het de Bash-interpreter moet gebruiken om het script uit te voeren.
  • # Vraag de gebruiker naar zijn naam: Dit is een opmerking. Het biedt context over de komende code. Opmerkingen worden door de tolk genegeerd.
  • echo Hoe heet je?: Het echo-commando wordt gebruikt om de tekst tussen dubbele aanhalingstekens op de terminal weer te geven.
  • leesnaam: Het leescommando wacht tot de gebruiker tekst invoert en slaat deze op in de variabelenaam.
  • echo Hallo, $naam! Leuk je te ontmoeten.: Deze regel gebruikt het echo-commando om een ​​begroetingsbericht af te drukken dat de waarde bevat van de naamvariabele, die is verzameld uit de invoer van de gebruiker.

436

7) Hoe voeg je commentaar toe aan een shellscript?

Opmerkingen in shell-scripting worden gebruikt om uitleg of context aan de code te geven. Ze worden door de tolk genegeerd en zijn alleen bedoeld voor mensen die het script lezen. U kunt opmerkingen toevoegen met het #-symbool.

#!/bin/bash
# Dit is een commentaar waarin het doel van het script wordt uitgelegd
echo gfg

8) Maak een shellscript dat controleert of een bestand in de huidige map bestaat.

Hier is een script dat controleert of een bestand met de naam example.txt in de huidige map bestaat:

#!/bin/bash
bestand=voorbeeld.txt
# Controleer of het bestand bestaat
if [ -e $bestand ]; Dan
echo Bestand bestaat: $file
anders
echo Bestand niet gevonden: $file
zijn

Uitleg:

  1. #!/bin/bash: Dit is de shebang-regel die de tolk (/bin/bash) specificeert die moet worden gebruikt voor het uitvoeren van het script.
  2. file=example.txt: Deze regel definieert het variabele bestand en wijst er de waarde example.txt aan toe. U kunt dit vervangen door de naam van het bestand waarop u wilt controleren.
  3. if [ -e $bestand ]; then: Deze regel start een if-statement. De voorwaarde [ -e $file ] controleert of het bestand dat wordt opgegeven door de waarde van de bestandsvariabele bestaat. De vlag -e wordt gebruikt om te controleren of het bestand bestaat.
  4. echo Bestand bestaat: $file: Als de voorwaarde waar is (dat wil zeggen: het bestand bestaat), wordt op deze regel een bericht afgedrukt dat aangeeft dat het bestand bestaat, samen met de naam van het bestand.
  5. else: Als de voorwaarde onwaar is (dat wil zeggen: het bestand bestaat niet), voert het script de code uit onder de else-vertakking.
  6. echo Bestand niet gevonden: $file: Deze regel geeft een foutmelding weer die aangeeft dat het opgegeven bestand niet is gevonden, samen met de bestandsnaam.
  7. fi: Deze regel markeert het einde van de if-instructie.
Bestand zoeken

Bestand zoeken

9) Wat is het verschil tussen enkele aanhalingstekens (‘) en dubbele aanhalingstekens () in shell-scripting?

Enkele aanhalingstekens (‘) en dubbele aanhalingstekens () worden gebruikt om tekenreeksen in shell-scripting te omsluiten, maar ze gedragen zich verschillend:

  • Enkele aanhalingstekens: Alles tussen enkele aanhalingstekens wordt behandeld als een letterlijke tekenreeks. Variabelenamen en de meeste speciale tekens worden niet uitgevouwen.
  • Dubbele aanhalingstekens: Variabelen en bepaalde speciale tekens binnen dubbele aanhalingstekens worden uitgevouwen. De inhoud is onderhevig aan variabele vervanging en opdrachtvervanging.

#!/bin/bash

abcd=Hallo
echo ‘$abcd’ # Uitvoer: $abcd
echo $abcd # Uitvoer: Hallo

10) Hoe kunt u opdrachtregelargumenten gebruiken in een shellscript?

Opdrachtregelargumenten zijn waarden die aan een script worden verstrekt wanneer het wordt uitgevoerd. Ze zijn binnen het script toegankelijk met behulp van speciale variabelen zoals $1, $2, etc., waarbij $1 het eerste argument vertegenwoordigt, $2 het tweede argument, enzovoort.

Bijvoorbeeld: Als onze scriptnaam `example.sh`

#!/bin/bash

echo Scriptnaam: $0
echo Eerste argument: $1
echo Tweede argument: $2

Als we het script uitvoeren met `.example.sh hello_1 hello_2`, zal het het volgende opleveren:

cli argumenten

cli argumenten

11) Hoe gebruik je de for-lus om een ​​lijst met waarden te doorlopen?

Maak een scriptnaam `example.sh`.

#!/bin/bash

fruits=(appel banaan kersen dadel)
voor fruit in ${fruits[@]}; Doen
echo Huidig ​​fruit: $fruit
klaar

Uitleg:

De lijn `fruits=` creëert een array met de naam fruit met vier elementen: appel, banaan, kers en dadel.

  • voor fruit in ${fruits[@]}; do: Deze regel start een for-lus. Dit is wat elk onderdeel betekent:
  • voor fruit: Dit declareert een lusvariabele genaamd fruit. In elke iteratie van de lus behoudt fruit de waarde van het huidige element uit de fruits-array.
  • ${fruits[@]}: Dit is een array-uitbreiding die alle elementen uit de fruits-array overneemt. De syntaxis ${…} zorgt ervoor dat elk element als een afzonderlijk item wordt behandeld.
  • do: Dit trefwoord markeert het begin van de lusbody.
  • echo Huidig ​​fruit: $fruit: Binnen de lus gebruikt deze regel het echo-commando om de huidige waarde van de lusvariabele fruit weer te geven. Er wordt een bericht afgedrukt als Huidig ​​fruit: appel voor elk fruit in de array.
  • done: Dit trefwoord markeert het einde van de lusbody. Het vertelt het script dat de lus is voltooid.
for loop

for loop

12) Schrijf een shellscript dat de som van gehele getallen van 1 tot N berekent met behulp van een lus.

Maak een scriptnaam `example.sh`.

#!/bin/bash

echo Voer een getal in (N):
lees N
som=0
voor (( i=1; i<=$N; i++ )); Doen
som=$((som + i))
klaar
echo De som van gehele getallen van 1 tot $N is: $sum

Uitleg:
Het script begint met de vraag om een ​​getal (N) in te voeren met behulp van read. Dit getal bepaalt hoe vaak de lus wordt uitgevoerd.

  1. De variabele som wordt geïnitialiseerd op 0. Deze variabele houdt de som van gehele getallen bij.
  2. De for-lus begint met for (( i=1; i<=$N; i++ )). Deze lusstructuur wordt gebruikt om een ​​reeks acties een bepaald aantal keren te herhalen, in dit geval van 1 tot de waarde van N.
  3. Binnen de lus gebeuren deze dingen:
    • i=1 stelt de lusvariabele i in op 1 aan het begin van elke iteratie.
    • De lusvoorwaarde i<=$N controleert of i nog steeds kleiner is dan of gelijk is aan het gegeven getal N.
    • Als de voorwaarde waar is, wordt de lusbody uitgevoerd.
    • sum=$((sum + i)) berekent de nieuwe waarde van sum door de huidige waarde van i erbij op te tellen. Dit telt de gehele getallen van 1 op tot de huidige i-waarde.
  4. Na elke iteratie verhoogt i++ de waarde van i met 1.
  5. De lus blijft lopen totdat de voorwaarde i<=$N onwaar wordt (wanneer i groter wordt dan N).
  6. Zodra de lus is voltooid, geeft het script de som weer van de gehele getallen van 1 tot het ingevoerde getal N.

439

13) Maak een script dat naar een specifiek woord in een bestand zoekt en het aantal keren dat het voorkomt telt.

Maak een scriptnaam `word_count.sh`

#!/bin/bash

echo Voer het woord in waarnaar u wilt zoeken:
lees doel_woord
echo Voer de bestandsnaam in:
lees bestandsnaam
count=$(grep -o -w $doelwoord $bestandsnaam | wc -l)
echo Het woord ‘$target_word’ verschijnt $count keer in ‘$filename’.

Uitleg:

  • echo Voer het woord in waarnaar moet worden gezocht:: Op deze regel wordt een bericht weergegeven waarin de gebruiker wordt gevraagd een woord in te voeren waarnaar hij wil zoeken in een bestand.
  • read target_word: Deze regel leest de invoer van de gebruiker en slaat deze op in een variabele met de naam target_word.
  • echo Voer de bestandsnaam in:: Op deze regel wordt een bericht weergegeven waarin de gebruiker wordt gevraagd de naam in te voeren van het bestand waarin hij wil zoeken.
  • lees bestandsnaam: Deze regel leest de invoer van de gebruiker en slaat deze op in een variabele met de naam bestandsnaam.
  • count=$(grep -o -w $target_word $filename | wc -l): Deze regel doet het hoofdwerk van het script. Laten we het verder uitsplitsen:
    • grep -o -w $target_word $filename: Dit deel van de opdracht zoekt naar exemplaren van het target_word in de opgegeven bestandsnaam. De opties -o en -w zorgen ervoor dat alleen overeenkomsten van hele woorden worden geteld.
    • |: Dit is een pipe, die de uitvoer van het vorige commando neemt en deze als invoer voor het volgende commando verzendt.
    • wc -l: Dit deel van de opdracht gebruikt de opdracht wc om het aantal regels in de invoer te tellen. De optie -l telt specifiek de regels.
    • De hele opdracht berekent het aantal keren dat het doelwoord in het bestand voorkomt en wijst dat aantal toe aan de variabele aantal

441

14) Leg de verschillen uit tussen standaarduitvoer (stdout) en standaardfout (stderr).

Het belangrijkste verschil tussen standaarduitvoer (stdout) en standaardfout (stderr) is als volgt:

  • Standaarduitvoer (stdout): Dit is de standaarduitvoerstroom waar de reguliere uitvoer van een opdracht naartoe gaat. Het wordt standaard op de terminal weergegeven. U kunt het omleiden naar een bestand met behulp van>.
  • Standaardfout (stderr): Dit is de uitvoerstroom voor foutmeldingen en waarschuwingen. Het wordt ook standaard op de terminal weergegeven. U kunt het omleiden naar een bestand met behulp van 2>.

15) Leg het concept van voorwaardelijke instructies in shell-scripting uit.

Voorwaardelijke instructies in shell-scripting stellen ons in staat beslissingen te nemen en de stroom van ons script te controleren op basis van bepaalde voorwaarden. Ze zorgen ervoor dat ons script verschillende sets opdrachten kan uitvoeren, afhankelijk van of een bepaalde voorwaarde waar of onwaar is. De primaire voorwaardelijke instructies in shell-scripting zijn de if-instructie, de elif-instructie (optioneel) en de else-instructie (optioneel).

Hier is de basisstructuur van een voorwaardelijke instructie in shell-scripting:

als [voorwaarde]; Dan
# Commando's die moeten worden uitgevoerd als de voorwaarde waar is
elif [andere_voorwaarde]; Dan
# Commando's die moeten worden uitgevoerd als een andere_voorwaarde waar is (optioneel)
anders
# Uit te voeren opdrachten als geen van de voorwaarden waar is (optioneel)
zijn

Uitleg:

  • [ condition ] = Commando dat de voorwaarde evalueert en een waar (0) of onwaar (niet-nul) afsluitstatus retourneert.
  • then = Het is een trefwoord dat aangeeft dat de daaropvolgende opdrachten worden uitgevoerd als de voorwaarde als waar wordt geëvalueerd.
  • elif = (afkorting van else if) Het is een sectie waarmee we aanvullende voorwaarden kunnen opgeven om te controleren.
  • else = het is een sectie die opdrachten bevat die worden uitgevoerd als geen van de voorwaarden waar is.
  • fi = Het is een trefwoord dat het einde van het voorwaardelijke blok markeert.

16) Hoe lees je regels uit een bestand binnen een shellscript?

Naar lees regels vanuit een bestand binnen een shellscript kunnen we verschillende methoden gebruiken, maar een gebruikelijke benadering is het gebruik van een while-lus in combinatie met de leesopdracht. Zo kunnen we het doen:

#!/bin/bash
bestand=/home/jayeshkumar/jayesh.txt
# Controleer of het bestand bestaat
if [ -e $bestand ]; Dan
terwijl IFS= lees -r regel; Doen
echo Regel gelezen: $line
# Voeg hier uw verwerkingslogica toe
klaar <$bestand
anders
echo Bestand niet gevonden: $file
zijn

Uitleg:

  1. #!/bin/bash: Dit is de shebang-regel die de tolk (/bin/bash) specificeert die moet worden gebruikt voor het uitvoeren van het script.
  2. file=/home/jayeshkumar/jayesh.txt: Deze regel definieert het variabele bestand en wijst het volledige pad toe aan het bestand jayesh.txt in de map /home/jayeshkumar. Wijzig dit pad zodat het overeenkomt met het daadwerkelijke pad van het bestand dat u wilt lezen.
  3. if [ -e $bestand ]; then: Deze regel start een if-statement. Er wordt gecontroleerd of het bestand dat is opgegeven door de variabele $file bestaat. De vlag -e controleert of het bestand bestaat.
  4. terwijl IFS= lees -r regel; do: Deze regel initieert een while-lus die regels uit het bestand leest.
    • IFS=: De IFS (Internal Field Separator) is ingesteld op een lege waarde om voorloop- en volgspaties te behouden.
    • read -r line: Dit leest de huidige regel uit het bestand en slaat deze op in de variabele regel.
  5. echo Line read: $line: Deze regel geeft de inhoud weer van de regel die uit het bestand is gelezen. De variabele $line bevat de inhoud van de huidige regel.
  6. # Voeg hier uw verwerkingslogica toe: Dit is een plaatsaanduiding voor commentaar waarin u uw eigen logica kunt toevoegen om elke regel te verwerken. U kunt bijvoorbeeld de regel analyseren, informatie extraheren of specifieke acties uitvoeren op basis van de inhoud.
  7. done <$file: Dit markeert het einde van de while-lus. De < $file leidt de inhoud van het bestand om zodat deze door de lus kan worden gelezen.
  8. else: Als het bestand niet bestaat (de voorwaarde in de if-instructie is false), voert het script de code uit onder de else-vertakking.
  9. echo Bestand niet gevonden: $file: Deze regel geeft een foutmelding weer die aangeeft dat het opgegeven bestand niet is gevonden.
  10. fi: Deze regel markeert het einde van de if-instructie.
bestand lezen

bestand lezen

Hier gebruikten we ` pwd ` commando om het pad van de huidige map op te halen.

17) Schrijf een functie in een shellscript die de faculteit van een bepaald getal berekent.

Hier is het script datbereken de faculteitvan een bepaald getal.

#!/bin/bash
# Definieer een functie om faculteit te berekenen
berekenen_factorial() {
aantal=$1
feit=1
voor ((i=1; i<=getal; i++)); Doen
feit=$((feit * i))
klaar
echo $ feit
}
# Vraag de gebruiker om een ​​nummer in te voeren
echo Voer een getal in:
lees invoer_getal
# Roep de functie 'calculate_factorial' aan met het invoernummer
factorial_result=$(calculate_factorial $input_num)
# Geef het faculteitsresultaat weer
echo Faculteit van $input_num is: $factorial_result

Uitleg:

  1. Het script begint met de regel #!/bin/bash om de tolk op te geven.
  2. berekenen_factorial() is gedefinieerd als een functie. Er is één argument nodig, num, wat het getal is waarvoor de faculteit moet worden berekend.
  3. Binnen de functie wordt feit geïnitialiseerd op 1. Deze variabele slaat het faculteitsresultaat op.
  4. De for-lus itereert van 1 naar het opgegeven getal (num). In elke iteratie vermenigvuldigt het de huidige feitelijke waarde met de lusindex i.
  5. Nadat de lus is voltooid, bevat de feitvariabele de berekende faculteit.
  6. Het script vraagt ​​de gebruiker om een ​​getal in te voeren met behulp van read.
  7. De functie ‘calculate_factorial’ wordt aangeroepen met het door de gebruiker opgegeven getal, en het resultaat wordt opgeslagen in de variabele factorial_result.
  8. Ten slotte geeft het script het berekende factoriële resultaat weer.
Factorieel

Factorieel

18) Hoe ga je om met signalen als Ctrl+C in een shellscript?

In een shellscript kun je signalen zoals Ctrl+C (ook bekend als SIGINT) verwerken met behulp van het trap-commando. Ctrl+C genereert een SIGINT-signaal wanneer de gebruiker erop drukt om het actieve script of programma te onderbreken. Door het trap-commando te gebruiken, kunt u de acties opgeven die moeten worden ondernomen wanneer een bepaald signaal wordt ontvangen. Zo verwerkt u signalen zoals Ctrl+C in een shellscript:

#!/bin/bash
opruimen() {
echo Script onderbroken. Opruimen uitvoeren…
# Voeg hier uw opruimacties toe
uitgang 1
}
# Stel een trap in om de opruimfunctie aan te roepen wanneer Ctrl+C (SIGINT) wordt ontvangen
valopruiming SIGINT
# Rest van je script
echo Rennen...
slapen 10
echo Klaar.

Het omgaan met signalen is belangrijk om scripts robuust te maken en ervoor te zorgen dat ze onverwachte onderbrekingen netjes afhandelen. U kunt de opschoonfunctie aanpassen aan uw specifieke behoeften, zoals het sluiten van bestanden, het stoppen van processen of het loggen van informatie voordat het script wordt afgesloten.

Uitleg:

  1. #!/bin/bash: Deze shebang-regel specificeert de tolk die moet worden gebruikt voor het uitvoeren van het script.
  2. cleanup() { … }: Dit definieert een functie met de naam cleanup. Binnen deze functie kunt u alle acties opnemen die moeten worden uitgevoerd wanneer het script wordt onderbroken, zoals het sluiten van bestanden, het vrijgeven van bronnen of het uitvoeren van andere opruimtaken.
  3. trap opruimen SIGINT: Het trap-commando wordt gebruikt om een ​​signaalhandler in te stellen. In dit geval specificeert het dat wanneer het SIGINT-signaal (Ctrl+C) wordt ontvangen, de opschoonfunctie moet worden uitgevoerd.
  4. echo Running…, sleep 10, echo Finished.: Dit zijn slechts voorbeeldopdrachten om de uitvoering van een script te simuleren.

446

19) Maak een script dat dubbele regels in een tekstbestand controleert en verwijdert.

Hier is ons Linux-script waarin we dubbele regels uit een tekstbestand zullen verwijderen.

#!/bin/bash
invoer_bestand=invoer.txt
uitvoer_bestand=uitvoer.txt
sorteer $input_file | uniq> $output_file
echo Dubbele regels zijn succesvol verwijderd.

Uitleg:

  1. Het script begint met een shebang (#!/bin/bash), wat aangeeft dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. De variabele input_file wordt ingesteld op de naam van het invoerbestand dat dubbele regels bevat (wijzig dit in de werkelijke naam van het invoerbestand).
  3. De output_file variabele wordt ingesteld op de naam van het uitvoerbestand waar de duplicaten zullen worden verwijderd (wijzig dit in de gewenste uitvoerbestandsnaam).
  4. Het script gebruikt het sorteercommando om de regels in het invoerbestand te sorteren. Door de regels te sorteren, worden dubbele regels gegroepeerd.
  5. De gesorteerde regels worden vervolgens door het uniq-commando geleid, dat opeenvolgende dubbele regels verwijdert. De uitvoer van dit proces wordt omgeleid naar het uitvoerbestand.
  6. Nadat de duplicaten zijn verwijderd, drukt het script een succesbericht af.
dubbele regel verwijderen

dubbele regel verwijderen

Hier gebruiken we ` kat ` om de tekst in het tekstbestand weer te geven.

20) Schrijf een script dat een veilig willekeurig wachtwoord genereert.

Hier is ons script om een ​​veilig willekeurig wachtwoord te genereren.

#!/bin/bash
# Functie om een ​​willekeurig wachtwoord te genereren
Genereer wachtwoord() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Roep de functie op en sla het gegenereerde wachtwoord op
wachtwoord=$(genereer_wachtwoord)
echo Gegenereerd wachtwoord: $password

Opmerking: De gebruiker kan de lengte van zijn wachtwoord dienovereenkomstig wijzigen door het getal `12` te vervangen.

Uitleg:

  1. Het script begint met een shebang (#!/bin/bash), wat aangeeft dat het moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. De functie genereren_wachtwoord is gedefinieerd om een ​​willekeurig wachtwoord te genereren. Dit is hoe het werkt:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 verdeelt de gefilterde willekeurige gegevens in regels met een breedte van elk 12 tekens.
    • head -n 1 selecteert de eerste regel, waardoor we feitelijk een willekeurige reeks tekens met een lengte van 12 krijgen.
  3. Aan de wachtwoordvariabele wordt het resultaat toegewezen van het aanroepen van de functie genereren_wachtwoord.
  4. Ten slotte wordt het gegenereerde wachtwoord weergegeven met behulp van echo.

448

21) Schrijf een shellscript dat de totale grootte van alle bestanden in een map berekent.

Hier is een shellscript om de totale grootte van alle bestanden in een map te berekenen.

#!/bin/bash
map=/pad/naar/uw/map
total_size=$(du -csh $directory | grep totaal | awk ‘{print $1}’)
echo Totale grootte van bestanden in $directory: $total_size

Uitleg:

  1. Het script begint met #!/bin/bash shebang, wat aangeeft dat het moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. De mapvariabele wordt ingesteld op het pad van de map waarvoor u de totale bestandsgrootte wilt berekenen. Vervang /pad/naar/uw/directory door het daadwerkelijke pad.
  3. De opdracht du wordt gebruikt om het gebruik van de bestandsruimte te schatten. De gebruikte opties zijn:
    • -c: Produceer een eindtotaal.
    • -s: Geef alleen de totale grootte van de opgegeven map weer.
    • -h: afdrukformaten in een voor mensen leesbaar formaat (bijvoorbeeld KB, MB, GB).
  4. De uitvoer van du wordt doorgesluisd naar grep total om de regel uit te filteren die de totale grootte bevat.
  5. awk ‘{print $1}’ wordt gebruikt om het eerste veld (totale grootte) uit de regel te extraheren.
  6. De berekende totale grootte wordt opgeslagen in de variabele total_size.
  7. Ten slotte geeft het script de totale grootte weer met behulp van echo.
Totale grootte van bestanden

Totale grootte van bestanden

Hier gebruikten we ` pwd ` commando om het huidige mappad te zien.

22) Leg het verschil uit tussen if- en elif-instructies in shell-scripting.

Functie `als`Staffement `elif`-verklaring
Doel Leg het verschil uit tussen if- en elif-instructies in shell-scripting. Biedt alternatieve voorwaarden om te controleren of de initiële if-voorwaarde onwaar is.
gebruik Gebruikt voor de begintoestand. Wordt gebruikt na de initiële if-voorwaarde om aanvullende voorwaarden te controleren.
aantal blokken Kan er maar één hebben als blok. Kan meerdere elif-blokken hebben, maar slechts één ander blok (optioneel).
Executie Voert het codeblok uit dat is gekoppeld aan de if-instructie als de voorwaarde waar is. Als de voorwaarde onwaar is, wordt het else-blok (indien aanwezig) uitgevoerd (optioneel). Controleert elke elif-voorwaarde op volgorde. Als één elif-voorwaarde waar is, wordt het corresponderende codeblok uitgevoerd en verlaat het script het volledige voorwaardelijke blok. Als geen van de elif-voorwaarden waar is, wordt het else-blok (indien aanwezig) uitgevoerd.
Geneste structuren Kan worden genest in andere if-, elif- of else-blokken. Kan niet in een ander elif-blok worden genest, maar kan wel in een if- of else-blok worden gebruikt.

Laten we het aan de hand van een voorbeeld begrijpen.

#!/bin/bash
aantal=5
if [$nummer -gt 10]; Dan
echo $getal is groter dan 10
anders
echo $number is niet groter dan 10
zijn
echo ——–
if [$nummer -gt 10]; Dan
echo $getal is groter dan 10
elif [ $getal -eq 10 ]; Dan
echo $getal is gelijk aan 10
anders
echo $getal is kleiner dan 10
zijn

Uitleg:

In dit voorbeeld controleert het eerste if-blok of getal groter is dan 10. Als dit niet het geval is, wordt er een bericht afgedrukt dat aangeeft dat het getal niet groter is dan 10. Het tweede blok met elif-instructies controleert meerdere voorwaarden opeenvolgend totdat een van deze waar is. In dit geval zal de uitvoer, aangezien de waarde van getal 5 is:

if_elif verschil

if_elif verschil

23) Hoe gebruik je een while-lus om herhaaldelijk opdrachten uit te voeren?

Een while-lus wordt gebruikt in shell-scripts om herhaaldelijk een reeks opdrachten uit te voeren zolang een opgegeven voorwaarde waar is. De lus gaat door met het uitvoeren van de opdrachten totdat de voorwaarde onwaar wordt.

Hier is de basissyntaxis van een while-lus:

terwijl [voorwaarde]; Doen
# Uit te voeren opdrachten
klaar

Uitleg:

  1. De 'while'-lus begint met het sleutelwoord 'while', gevolgd door een voorwaarde tussen vierkante haakjes '[ ]'.
  2. De body van de lus, die de uit te voeren opdrachten bevat, wordt omsloten door de trefwoorden `do` en `done`.
  3. De lus controleert eerst de toestand. Als de voorwaarde waar is, worden de opdrachten binnen de lusbody uitgevoerd. Nadat de lusbody is uitgevoerd, wordt de voorwaarde opnieuw gecontroleerd en herhaalt het proces zich totdat de voorwaarde onwaar wordt.

Voorbeeld: Als we getallen van 1 tot 5 willen afdrukken

#!/bin/bash
teller=1
while [ $counter -le 5 ]; Doen
echo-nummer: $counter
teller=$((teller + 1))
klaar

Uitleg:

  • De tellervariabele is ingesteld op 1.
  • De while-lus controleert of de waarde van counter kleiner dan of gelijk is aan 5. Zolang deze voorwaarde waar is, gaat de lus door met uitvoeren.
  • Binnen de lus wordt de huidige waarde van de teller afgedrukt met behulp van echo.
  • De teller wordt met 1 verhoogd met behulp van de uitdrukking $((teller + 1)).
herhalingslus

herhalingslus

24) Maak een shellscript dat alle lege bestanden in een map vindt en vermeldt.

Shell-script dat u kunt gebruiken om alle lege bestanden in een map te vinden en weer te geven met behulp van de opdrachten `find` en `stat`:

#!/bin/bash
map=$1″
if [ -z $map ]; Dan
echogebruik: $0
uitgang 1
zijn

als [ ! -d $map]; Dan
echo Fout: ‘$directory’ is geen geldige map.
uitgang 1
zijn
echo Lege bestanden in $directory:
zoek $directory -type f -leeg

Uitleg:

  1. ` #!/bin/bash `: Dit wordt een shebang genoemd en vertelt het besturingssysteem om de Bash-shell te gebruiken om het script te interpreteren en uit te voeren.
  2. ` map=$1″ `: Deze regel wijst het eerste opdrachtregelargument (aangeduid met $1) toe aan de variabele ` map `.
  3. ` if [ -z $map ]; Dan `: Deze regel start een if-instructie die controleert of de ` map ` variabele is leeg (-z test voor een lege string).
  4. ` echogebruik: $0 `: Als de directory leeg is, drukt deze regel een gebruiksbericht af, waarbij ` $ 0 ` vertegenwoordigt de naam van het script.
  5. ` uitgang 1 `: Deze regel sluit het script af met de afsluitcode ` 1 ', wat een fout aangeeft.
  6. ` zijn `: Deze regel markeert het einde van de ` als ` verklaring.
  7. ` als [ ! -d $map]; Dan `: Dit start een nieuwe if-instructie om te controleren of de opgegeven map bestaat (` -D ` tests voor een directory).
  8. ` echo Fout: ‘$directory’ is geen geldige map. `: Als de opgegeven directory niet bestaat, drukt deze regel een foutmelding af.
  9. ` uitgang 1 `: Sluit het script af met de afsluitcode ` 1 `.
  10. ` zijn `: Markeert het einde van de tweede ` als` stelling.
  11. ` echo Lege bestanden in $directory: `: Als alles tot nu toe geldig is, drukt deze regel een bericht af dat aangeeft dat het script lege bestanden in de opgegeven map zal weergeven.
  12. ` zoek $directory -type f -leeg `: Deze regel gebruikt de ` vinden ` commando om te zoeken naar lege bestanden (` -leeg `) van het type gewone bestanden (` -type f `) in de opgegeven map. Vervolgens worden deze lege bestanden weergegeven.
Lege bestanden vinden

Lege bestanden vinden

Opmerking : We moeten een map opgeven als argument bij het uitvoeren van het script. Hier hebben we het pad van de huidige map home/jayeshkumar/ gebruikt

25) Wat is het doel van het leescommando in shell-scripting?

Met de leesopdracht in shell-scripting kan het script u om informatie vragen. Het is alsof een computer je een vraag stelt en op je antwoord wacht. Dit is handig voor scripts waarbij u iets moet typen of wanneer het script moet werken met informatie uit bestanden. De leesopdracht helpt het script te stoppen en te wachten op wat u typt, en vervolgens kan het die informatie gebruiken om meer dingen in het script te doen.

Syntaxis van leesopdracht:

read variable_name>

Voorbeeld : Als we de naam als invoer van de gebruiker willen gebruiken om deze af te drukken.

#!/bin/bash
echo Voer uw naam in:
lees naam
echo Hallo, $naam!

453

lees naam

Samenvattend wordt het leescommando gebruikt om gebruikersinvoer of gegevens uit bestanden binnen shell-scripts vast te leggen, waardoor de scripts interactiever en veelzijdiger worden.

26) Schrijf een shellscript dat alle bestandsnamen in een map naar kleine letters converteert.

Hier is een shellscript dat alle bestandsnamen in een map naar kleine letters converteert.

#!/bin/bash
map=$1″
if [ -z $map ]; Dan
echogebruik: $0
uitgang 1
zijn

als [ ! -d $map]; Dan

echo Fout: ‘$directory’ is geen geldige map.
uitgang 1
zijn

cd $map || uitgang 1

voor bestand in *; Doen
if [ -f $bestand ]; Dan
nieuwenaam=$(echo $bestand | tr ‘A-Z’ ‘a-z’)
[ $bestand != $nieuwenaam ] && mv $bestand $nieuwenaam
zijn
klaar

Uitleg:

  1. #!/bin/bash : Dit is de shebang, waarin wordt gespecificeerd dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. map=$1″ : Deze regel wijst het eerste opdrachtregelargument toe aan de variabelenmap.
  3. if [ -z $map ]; Dan : Deze regel controleert of de mapvariabele leeg is (er wordt geen argument opgegeven bij het uitvoeren van het script).
  4. echogebruik: $0 : Als de map leeg is, drukt deze regel een gebruiksbericht af met de naam van het script ($0).
  5. uitgang 1 : deze regel sluit het script af met de afsluitcode 1, wat aangeeft dat er een fout is opgetreden.
  6. F i: Dit markeert het einde van de eerste if-instructie.
  7. als [ ! -d $map]; Dan : Deze regel controleert of de opgegeven map niet bestaat (-d test voor een map).
  8. echo Fout: ‘$directory’ is geen geldige map. : Als de opgegeven map niet bestaat, drukt deze regel een foutmelding af.
  9. uitgang 1 : Sluit het script af met de afsluitcode 1.
  10. zijn : Markeert het einde van de tweede if-instructie.
  11. cd $map || uitgang 1 : Wijzigt de huidige werkmap naar de opgegeven map. Als het wijzigen van de map mislukt (bijvoorbeeld als de map niet bestaat), wordt het script afgesloten met een foutcode.
  12. voor bestand in *; Doen: I voor bestand in *; Doen: zorgt voor een lus die alle items in de huidige map doorloopt (* komt overeen met alle bestandsnamen).
  13. if [ -f $bestand ]; Dan : Controleert of het huidige lus-iteratie-item een ​​normaal bestand is (-f test voor een normaal bestand).
  14. nieuwenaam=$(echo $bestand | tr ‘A-Z’ ‘a-z’) : Converteert de huidige bestandsnaam ($file) naar kleine letters met behulp van de opdracht tr en slaat het resultaat op in de variabele newname.
  15. [ $bestand != $nieuwenaam ] && mv $bestand $nieuwenaam : Vergelijkt de oorspronkelijke bestandsnaam met de nieuwe bestandsnaam in kleine letters. Als ze verschillend zijn, wordt de naam van het bestand gewijzigd met behulp van de opdracht mv.
  16. zijn : Markeert het einde van de innerlijke if-instructie.
  17. klaar : Markeert het einde van de lus.

454

Opmerking : We moeten een map opgeven als argument bij het uitvoeren van het script. Hier hebben we het pad van de huidige map home/jayeshkumar/test gebruikt

27) Hoe kun je rekenkundige bewerkingen gebruiken binnen een shellscript?

Rekenkundige bewerkingen kunnen worden uitgevoerd binnen een shellscript met behulp van verschillende ingebouwde methoden. De shell biedt mechanismen voor eenvoudige rekenkundige berekeningen met behulp van rekenkundige uitbreiding, zoals:

  1. Rekenkundige uitbreiding ($((…)))
  2. Gebruik expr-opdracht
  3. Met behulp van let Command

Hier is ons Shell-script waarin alle drie de methoden voor rekenkundige bewerkingen worden uitgelegd.

#!/bin/bash
getal1=10
aantal2=5

#Rekenkundige uitbreiding ($((…)))

resultaat=$((aantal1 + aantal2))
echo Som: $resultaat

#Expr-opdracht gebruiken

som=$(expr $num1 + $num2)
echo Som: $som

#Let-opdracht gebruiken

laat som = num1 + num2
echo Som: $som

Uitleg:

  1. `#!/bin/bash` : Dit is de shebang, waarin wordt gespecificeerd dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. `num1=10` en ` getal2=5` : Deze regels wijzen de waarden 10 en 5 toe aan de variabelen ` num1 ' en ' num2 ', respectievelijk.
  3. `#Rekenkundige uitbreiding ($((…)))` : Dit is een opmerking die het begin aangeeft van de sectie die de rekenkundige uitbreiding demonstreert.
  4. `resultaat=$((aantal1 + aantal2))` : Deze regel gebruikt rekenkundige expansie om de som van ` te berekenen num1 ' en ' num2 ` en slaat het resultaat op in de ` resultaat ` variabele.
  5. `echosom: $resultaat` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` resultaat ` variabele.
  6. `#Gebruik expr-opdracht` : Dit is een commentaar dat het begin aangeeft van de sectie die het gebruik van de ` uitspr ` commando voor rekenkundige bewerkingen.
  7. `som=$(expr $num1 + $num2)` : Deze regel gebruikt de ` uitspr ` commando om de som van ` te berekenen num1 ' en ' num2 ` en slaat het resultaat op in de ` som ` variabele. Merk op dat de ` uitspr Het commando ` vereist spaties rond de operatoren.
  8. `echo Som: $som` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` som ` variabele.
  9. `#Gebruik let-commando` : Dit is een commentaar dat het begin aangeeft van de sectie die het gebruik van de ` laten ` commando voor rekenkundige bewerkingen.
  10. `laat som = num1 + num2″` : Deze regel gebruikt de ` laten ` commando om de som van ` te berekenen num1 ' en ' num2 ' en wijst het resultaat toe aan de ' som ` variabele. De ` laten Het commando ` vereist geen spaties rond de operatoren.
  11. `echo Som: $som` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` som ` variabele.
rekenkundig

rekenkundig

28) Maak een script dat controleert of een netwerkhost bereikbaar is.

Hier is een eenvoudig shellscript dat de ping-opdracht gebruikt om te controleren of een netwerkhost bereikbaar is:

#!/bin/bash
gastheer=$1″
als [ -z $host ]; Dan
echogebruik: $0
uitgang 1
zijn
ping -c 4 $host

als [$? -eq 0]; Dan
echo $host is bereikbaar.
anders
echo $host is niet bereikbaar.
zijn

Uitleg:

  1. Het neemt een hostnaam of IP-adres als argument en controleert of het argument wordt opgegeven.
  2. Als er geen argument wordt opgegeven, wordt er een gebruiksbericht weergegeven en wordt het afgesloten.
  3. Het gebruikt het ping-commando met de optie -c 4 om vier ICMP-echoverzoeken naar de opgegeven host te sturen.
  4. Nadat de ping-opdracht is uitgevoerd, wordt de afsluitstatus ($?) gecontroleerd. Als de afsluitstatus 0 is, betekent dit dat de host bereikbaar is en dat het script een succesbericht afdrukt. Anders wordt er een foutbericht afgedrukt.

456

Opmerking : We moeten een hostnaam opgeven als argument bij het uitvoeren van het script. Hier hebben we google.com gebruikt

29) Schrijf een shellscript om het grootste element in een array te vinden:

Hier is een shellscript om het grootste element in een array te vinden.

#!/bin/bash
# Declareer een array
array=(3 56 24 89 67)

# Initialiseer een variabele om de maximale waarde op te slaan, te beginnen met het eerste element

max=${array[0]}

# Herhaal de array

voor num in ${array[@]}; Doen

# Vergelijk elk element met het huidige maximum

als ((aantal> max)); Dan
max=$num
zijn
klaar

# Druk de maximale waarde af

echo Het maximale element in de array is: $max

Uitleg:

  1. ` #!/bin/bash `: De shebang-regel specificeert dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. ` array=(3 56 24 89 67) `: De array wordt gedeclareerd en geïnitialiseerd met waarden.
  3. ` max=${array[0]} `: `max` wordt geïnitialiseerd met het eerste element van de array.
  4. ` voor num in ${array[@]}; Doen `: Een `for`-lus wordt gebruikt om door de elementen van de array te lopen.
  5. ` als ((aantal> max)); Dan `: Een `if`-instructie controleert of het huidige element `num` groter is dan het huidige maximum `max`.
  6. ` max=$num`: Als`aantal ` groter is dan `max`, `max` wordt bijgewerkt met de waarde num.
  7. ` klaar `: De `for`-lus is gesloten.
  8. ` echo Het maximale element in de array is: $max `: Ten slotte drukt het script de maximale waarde af die in de array is gevonden.
461

grootste aantal

30) Schrijf een script om de som van elementen in een array te berekenen.

#!/bin/bash

# Declareer een array

array=(1 65 22 19 94)

# Initialiseer een variabele om de som op te slaan

som=0

# Herhaal de array en voeg elk element toe aan de som

voor num in ${array[@]}; Doen
ben=$((ben + ben))
klaar

# Druk de som af

echo De som van de elementen in de array is: $sum

Uitleg:

` #!/bin/bash `: De shebang-regel specificeert dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.

` array=(1 65 22 19 94) `: De array wordt gedeclareerd en geïnitialiseerd met waarden.

` som=0 `:` som ` wordt geïnitialiseerd op nul om de som van de elementen vast te houden.

` voor num in ${array[@]}; Doen `: Een` voor ` lus wordt gebruikt om door de elementen van de array te lopen.

` ben=$((ben + ben)) `: Binnen de lus, elk element ` op een ` wordt toegevoegd aan ` som ` variabele.

` klaar `: De ` voor ' lus is gesloten.

`echo De som van de elementen in de array is: $sum`: Ten slotte drukt het script de som van alle elementen in de array af.

462

Som van elementen

Meer weten over Shell-scripts

Conclusie

We weten allemaal dat shell-script erg handig is om de werkproductiviteit te verhogen en ook tijd te besparen. Dus in dit artikel hebben we het besproken 30 zeer nuttige en meest conman shell-scriptvoorbeelden . We hopen dat deze complete handleiding over shell-scriptvoorbeelden u helpt alles over de shell-scripts te begrijpen.




uitgang 1
zijn

als [ ! -d $map]; Dan
echo Fout: ‘$directory’ is geen geldige map.
uitgang 1
zijn
echo Lege bestanden in $directory:
zoek $directory -type f -leeg

Uitleg:

  1. ` #!/bin/bash `: Dit wordt een shebang genoemd en vertelt het besturingssysteem om de Bash-shell te gebruiken om het script te interpreteren en uit te voeren.
  2. ` map=″ `: Deze regel wijst het eerste opdrachtregelargument (aangeduid met ) toe aan de variabele ` map `.
  3. ` if [ -z $map ]; Dan `: Deze regel start een if-instructie die controleert of de ` map ` variabele is leeg (-z test voor een lege string).
  4. ` echogebruik:

    Voor alle Linux-distributies is het shellscript als een toverstaf die het proces automatiseert, gebruikers tijd bespaart en de productiviteit verhoogt. Deze zelfstudie voor scripting laat je kennismaken met de meer dan 25 voorbeelden van scripting.

    Maar voordat we verder gaan met het onderwerp shell-scripting Laten we, met voorbeelden, het shell-script en de daadwerkelijke gebruiksscenario's van shell-scripting begrijpen.

    Wat is Shell-script?

    Nou, de schaal is een CLI ( opdrachtregelinterpreter ), dat wordt uitgevoerd in een tekstvenster waarin gebruikers shell-opdrachten kunnen beheren en uitvoeren. Aan de andere kant wordt het proces van het schrijven van een reeks opdrachten die op een Linux-systeem moeten worden uitgevoerd. Een bestand dat dergelijke instructies bevat, wordt een bash-script genoemd.

    Gebruik van Shell-scripts

    Hieronder staan ​​enkele veelvoorkomende toepassingen van Shell Script:

    • Taakautomatisering – Het kan worden gebruikt om repetitieve taken te automatiseren, zoals regelmatige back-ups en software-installatietaken.
    • Maatwerk - Men kan shell-scripts gebruiken om de opdrachtregelomgeving te ontwerpen en de taak eenvoudig uit te voeren volgens de behoeften.
    • Bestandsbeheer - De shellscripts kunnen ook worden gebruikt voor het beheren en manipuleren van bestanden en mappen, zoals het verplaatsen, kopiëren, hernoemen of verwijderen van bestanden.

    Shell-scriptvoorbeelden in Linux

    1) Wat geeft de shebang (#!) aan het begin van een shellscript aan?

    De shebang (#!) aan het begin van een script geeft de tolk aan die moet worden gebruikt om het script uit te voeren. Het vertelt het systeem welke shell of tolk de opdrachten van het script moet interpreteren.

    Bijvoorbeeld: Stel dat we een script hebben met de naam mijnscript.sh geschreven in de Bash-shell:

    keet

    keet

    In dit voorbeeld:

    • De #!/bin/bash aan het begin van het script geeft aan dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
    • De echo-opdrachten worden gebruikt om berichten naar de terminal af te drukken.

    2) Hoe voer je een shellscript uit vanaf de opdrachtregel?

    Om een ​​shellscript vanaf de opdrachtregel uit te voeren, moeten we deze stappen volgen:

    • Zorg ervoor dat het scriptbestand uitvoerbare machtigingen heeft met behulp van de chmod-opdracht :
    chmod +x myscript.sh>
    • Voer het script uit met behulp van de bestandsnaam:
    ./myscript.sh>

    Hier moet je vervangen mijnscript.sh met uw scriptnaam.

    3) Schrijf een shellscript dat techcodeview.com naar de terminal afdrukt.

    Maak een scriptnaam `myscript.sh` (we gebruiken ` omdat ` editor, u kunt elke editor kiezen)

    vim myscript.sh>

    #!/bin/bash
    # Dit script drukt techcodeview.com af naar de terminal
    echo techcodeview.com

    print naam

    print naam

    We maken ons script uitvoerbaar door `chmod +x` te gebruiken en vervolgens uit te voeren met `./myscipt.sh` en krijgen de gewenste uitvoer techcodeview.com.

    4) Leg het doel uit van het echo-commando in shell-scripting.

    De echo-opdracht wordt gebruikt om tekst of variabelen op de terminal weer te geven. Het wordt vaak gebruikt voor het afdrukken van berichten, variabele waarden en het genereren van programma-uitvoer.

    434

    echo-opdracht

    In dit voorbeeld moeten we `echo` rechtstreeks op terminal uitvoeren, omdat het binnen het shell-script hetzelfde werkt.

    5) Hoe kun je een waarde toewijzen aan een variabele in een shellscript?

    Aan variabelen worden waarden toegewezen met behulp van de toewijzingsoperator =.

    Bijvoorbeeld:

    #!/bin/bash
    # Een waarde aan een variabele toekennen
    naam=Jayesh
    leeftijd = 21
    echo $naam $leeftijd

    Uitleg:

    • Aan de naamvariabele wordt de waarde Jayesh toegewezen.
    • De leeftijdsvariabele krijgt de waarde 21.
    • echo wordt gebruikt om af te drukken en `$name` `$age` wordt gebruikt om de waarde aan te roepen die in de variabelen is opgeslagen.

    435

    6) Schrijf een shellscript dat de naam van een gebruiker als invoer neemt en deze begroet.

    Maak een scriptnaam `example.sh`.

    #!/bin/bash
    # Vraag de gebruiker naar zijn naam
    echo Hoe heet je?
    lees naam
    # Begroet de gebruiker
    echo Hallo, $naam! Aangenaam.

    Uitleg:

    • #!/bin/bash: Dit is de shebang-regel. Het vertelt het systeem dat het de Bash-interpreter moet gebruiken om het script uit te voeren.
    • # Vraag de gebruiker naar zijn naam: Dit is een opmerking. Het biedt context over de komende code. Opmerkingen worden door de tolk genegeerd.
    • echo Hoe heet je?: Het echo-commando wordt gebruikt om de tekst tussen dubbele aanhalingstekens op de terminal weer te geven.
    • leesnaam: Het leescommando wacht tot de gebruiker tekst invoert en slaat deze op in de variabelenaam.
    • echo Hallo, $naam! Leuk je te ontmoeten.: Deze regel gebruikt het echo-commando om een ​​begroetingsbericht af te drukken dat de waarde bevat van de naamvariabele, die is verzameld uit de invoer van de gebruiker.

    436

    7) Hoe voeg je commentaar toe aan een shellscript?

    Opmerkingen in shell-scripting worden gebruikt om uitleg of context aan de code te geven. Ze worden door de tolk genegeerd en zijn alleen bedoeld voor mensen die het script lezen. U kunt opmerkingen toevoegen met het #-symbool.

    #!/bin/bash
    # Dit is een commentaar waarin het doel van het script wordt uitgelegd
    echo gfg

    8) Maak een shellscript dat controleert of een bestand in de huidige map bestaat.

    Hier is een script dat controleert of een bestand met de naam example.txt in de huidige map bestaat:

    #!/bin/bash
    bestand=voorbeeld.txt
    # Controleer of het bestand bestaat
    if [ -e $bestand ]; Dan
    echo Bestand bestaat: $file
    anders
    echo Bestand niet gevonden: $file
    zijn

    Uitleg:

    1. #!/bin/bash: Dit is de shebang-regel die de tolk (/bin/bash) specificeert die moet worden gebruikt voor het uitvoeren van het script.
    2. file=example.txt: Deze regel definieert het variabele bestand en wijst er de waarde example.txt aan toe. U kunt dit vervangen door de naam van het bestand waarop u wilt controleren.
    3. if [ -e $bestand ]; then: Deze regel start een if-statement. De voorwaarde [ -e $file ] controleert of het bestand dat wordt opgegeven door de waarde van de bestandsvariabele bestaat. De vlag -e wordt gebruikt om te controleren of het bestand bestaat.
    4. echo Bestand bestaat: $file: Als de voorwaarde waar is (dat wil zeggen: het bestand bestaat), wordt op deze regel een bericht afgedrukt dat aangeeft dat het bestand bestaat, samen met de naam van het bestand.
    5. else: Als de voorwaarde onwaar is (dat wil zeggen: het bestand bestaat niet), voert het script de code uit onder de else-vertakking.
    6. echo Bestand niet gevonden: $file: Deze regel geeft een foutmelding weer die aangeeft dat het opgegeven bestand niet is gevonden, samen met de bestandsnaam.
    7. fi: Deze regel markeert het einde van de if-instructie.
    Bestand zoeken

    Bestand zoeken

    9) Wat is het verschil tussen enkele aanhalingstekens (‘) en dubbele aanhalingstekens () in shell-scripting?

    Enkele aanhalingstekens (‘) en dubbele aanhalingstekens () worden gebruikt om tekenreeksen in shell-scripting te omsluiten, maar ze gedragen zich verschillend:

    • Enkele aanhalingstekens: Alles tussen enkele aanhalingstekens wordt behandeld als een letterlijke tekenreeks. Variabelenamen en de meeste speciale tekens worden niet uitgevouwen.
    • Dubbele aanhalingstekens: Variabelen en bepaalde speciale tekens binnen dubbele aanhalingstekens worden uitgevouwen. De inhoud is onderhevig aan variabele vervanging en opdrachtvervanging.

    #!/bin/bash

    abcd=Hallo
    echo ‘$abcd’ # Uitvoer: $abcd
    echo $abcd # Uitvoer: Hallo

    10) Hoe kunt u opdrachtregelargumenten gebruiken in een shellscript?

    Opdrachtregelargumenten zijn waarden die aan een script worden verstrekt wanneer het wordt uitgevoerd. Ze zijn binnen het script toegankelijk met behulp van speciale variabelen zoals $1, $2, etc., waarbij $1 het eerste argument vertegenwoordigt, $2 het tweede argument, enzovoort.

    Bijvoorbeeld: Als onze scriptnaam `example.sh`

    #!/bin/bash

    echo Scriptnaam: $0
    echo Eerste argument: $1
    echo Tweede argument: $2

    Als we het script uitvoeren met `.example.sh hello_1 hello_2`, zal het het volgende opleveren:

    cli argumenten

    cli argumenten

    11) Hoe gebruik je de for-lus om een ​​lijst met waarden te doorlopen?

    Maak een scriptnaam `example.sh`.

    #!/bin/bash

    fruits=(appel banaan kersen dadel)
    voor fruit in ${fruits[@]}; Doen
    echo Huidig ​​fruit: $fruit
    klaar

    Uitleg:

    De lijn `fruits=` creëert een array met de naam fruit met vier elementen: appel, banaan, kers en dadel.

    • voor fruit in ${fruits[@]}; do: Deze regel start een for-lus. Dit is wat elk onderdeel betekent:
    • voor fruit: Dit declareert een lusvariabele genaamd fruit. In elke iteratie van de lus behoudt fruit de waarde van het huidige element uit de fruits-array.
    • ${fruits[@]}: Dit is een array-uitbreiding die alle elementen uit de fruits-array overneemt. De syntaxis ${…} zorgt ervoor dat elk element als een afzonderlijk item wordt behandeld.
    • do: Dit trefwoord markeert het begin van de lusbody.
    • echo Huidig ​​fruit: $fruit: Binnen de lus gebruikt deze regel het echo-commando om de huidige waarde van de lusvariabele fruit weer te geven. Er wordt een bericht afgedrukt als Huidig ​​fruit: appel voor elk fruit in de array.
    • done: Dit trefwoord markeert het einde van de lusbody. Het vertelt het script dat de lus is voltooid.
    for loop

    for loop

    12) Schrijf een shellscript dat de som van gehele getallen van 1 tot N berekent met behulp van een lus.

    Maak een scriptnaam `example.sh`.

    #!/bin/bash

    echo Voer een getal in (N):
    lees N
    som=0
    voor (( i=1; i<=$N; i++ )); Doen
    som=$((som + i))
    klaar
    echo De som van gehele getallen van 1 tot $N is: $sum

    Uitleg:
    Het script begint met de vraag om een ​​getal (N) in te voeren met behulp van read. Dit getal bepaalt hoe vaak de lus wordt uitgevoerd.

    1. De variabele som wordt geïnitialiseerd op 0. Deze variabele houdt de som van gehele getallen bij.
    2. De for-lus begint met for (( i=1; i<=$N; i++ )). Deze lusstructuur wordt gebruikt om een ​​reeks acties een bepaald aantal keren te herhalen, in dit geval van 1 tot de waarde van N.
    3. Binnen de lus gebeuren deze dingen:
      • i=1 stelt de lusvariabele i in op 1 aan het begin van elke iteratie.
      • De lusvoorwaarde i<=$N controleert of i nog steeds kleiner is dan of gelijk is aan het gegeven getal N.
      • Als de voorwaarde waar is, wordt de lusbody uitgevoerd.
      • sum=$((sum + i)) berekent de nieuwe waarde van sum door de huidige waarde van i erbij op te tellen. Dit telt de gehele getallen van 1 op tot de huidige i-waarde.
    4. Na elke iteratie verhoogt i++ de waarde van i met 1.
    5. De lus blijft lopen totdat de voorwaarde i<=$N onwaar wordt (wanneer i groter wordt dan N).
    6. Zodra de lus is voltooid, geeft het script de som weer van de gehele getallen van 1 tot het ingevoerde getal N.

    439

    13) Maak een script dat naar een specifiek woord in een bestand zoekt en het aantal keren dat het voorkomt telt.

    Maak een scriptnaam `word_count.sh`

    #!/bin/bash

    echo Voer het woord in waarnaar u wilt zoeken:
    lees doel_woord
    echo Voer de bestandsnaam in:
    lees bestandsnaam
    count=$(grep -o -w $doelwoord $bestandsnaam | wc -l)
    echo Het woord ‘$target_word’ verschijnt $count keer in ‘$filename’.

    Uitleg:

    • echo Voer het woord in waarnaar moet worden gezocht:: Op deze regel wordt een bericht weergegeven waarin de gebruiker wordt gevraagd een woord in te voeren waarnaar hij wil zoeken in een bestand.
    • read target_word: Deze regel leest de invoer van de gebruiker en slaat deze op in een variabele met de naam target_word.
    • echo Voer de bestandsnaam in:: Op deze regel wordt een bericht weergegeven waarin de gebruiker wordt gevraagd de naam in te voeren van het bestand waarin hij wil zoeken.
    • lees bestandsnaam: Deze regel leest de invoer van de gebruiker en slaat deze op in een variabele met de naam bestandsnaam.
    • count=$(grep -o -w $target_word $filename | wc -l): Deze regel doet het hoofdwerk van het script. Laten we het verder uitsplitsen:
      • grep -o -w $target_word $filename: Dit deel van de opdracht zoekt naar exemplaren van het target_word in de opgegeven bestandsnaam. De opties -o en -w zorgen ervoor dat alleen overeenkomsten van hele woorden worden geteld.
      • |: Dit is een pipe, die de uitvoer van het vorige commando neemt en deze als invoer voor het volgende commando verzendt.
      • wc -l: Dit deel van de opdracht gebruikt de opdracht wc om het aantal regels in de invoer te tellen. De optie -l telt specifiek de regels.
      • De hele opdracht berekent het aantal keren dat het doelwoord in het bestand voorkomt en wijst dat aantal toe aan de variabele aantal

    441

    14) Leg de verschillen uit tussen standaarduitvoer (stdout) en standaardfout (stderr).

    Het belangrijkste verschil tussen standaarduitvoer (stdout) en standaardfout (stderr) is als volgt:

    • Standaarduitvoer (stdout): Dit is de standaarduitvoerstroom waar de reguliere uitvoer van een opdracht naartoe gaat. Het wordt standaard op de terminal weergegeven. U kunt het omleiden naar een bestand met behulp van>.
    • Standaardfout (stderr): Dit is de uitvoerstroom voor foutmeldingen en waarschuwingen. Het wordt ook standaard op de terminal weergegeven. U kunt het omleiden naar een bestand met behulp van 2>.

    15) Leg het concept van voorwaardelijke instructies in shell-scripting uit.

    Voorwaardelijke instructies in shell-scripting stellen ons in staat beslissingen te nemen en de stroom van ons script te controleren op basis van bepaalde voorwaarden. Ze zorgen ervoor dat ons script verschillende sets opdrachten kan uitvoeren, afhankelijk van of een bepaalde voorwaarde waar of onwaar is. De primaire voorwaardelijke instructies in shell-scripting zijn de if-instructie, de elif-instructie (optioneel) en de else-instructie (optioneel).

    Hier is de basisstructuur van een voorwaardelijke instructie in shell-scripting:

    als [voorwaarde]; Dan
    # Commando's die moeten worden uitgevoerd als de voorwaarde waar is
    elif [andere_voorwaarde]; Dan
    # Commando's die moeten worden uitgevoerd als een andere_voorwaarde waar is (optioneel)
    anders
    # Uit te voeren opdrachten als geen van de voorwaarden waar is (optioneel)
    zijn

    Uitleg:

    • [ condition ] = Commando dat de voorwaarde evalueert en een waar (0) of onwaar (niet-nul) afsluitstatus retourneert.
    • then = Het is een trefwoord dat aangeeft dat de daaropvolgende opdrachten worden uitgevoerd als de voorwaarde als waar wordt geëvalueerd.
    • elif = (afkorting van else if) Het is een sectie waarmee we aanvullende voorwaarden kunnen opgeven om te controleren.
    • else = het is een sectie die opdrachten bevat die worden uitgevoerd als geen van de voorwaarden waar is.
    • fi = Het is een trefwoord dat het einde van het voorwaardelijke blok markeert.

    16) Hoe lees je regels uit een bestand binnen een shellscript?

    Naar lees regels vanuit een bestand binnen een shellscript kunnen we verschillende methoden gebruiken, maar een gebruikelijke benadering is het gebruik van een while-lus in combinatie met de leesopdracht. Zo kunnen we het doen:

    #!/bin/bash
    bestand=/home/jayeshkumar/jayesh.txt
    # Controleer of het bestand bestaat
    if [ -e $bestand ]; Dan
    terwijl IFS= lees -r regel; Doen
    echo Regel gelezen: $line
    # Voeg hier uw verwerkingslogica toe
    klaar <$bestand
    anders
    echo Bestand niet gevonden: $file
    zijn

    Uitleg:

    1. #!/bin/bash: Dit is de shebang-regel die de tolk (/bin/bash) specificeert die moet worden gebruikt voor het uitvoeren van het script.
    2. file=/home/jayeshkumar/jayesh.txt: Deze regel definieert het variabele bestand en wijst het volledige pad toe aan het bestand jayesh.txt in de map /home/jayeshkumar. Wijzig dit pad zodat het overeenkomt met het daadwerkelijke pad van het bestand dat u wilt lezen.
    3. if [ -e $bestand ]; then: Deze regel start een if-statement. Er wordt gecontroleerd of het bestand dat is opgegeven door de variabele $file bestaat. De vlag -e controleert of het bestand bestaat.
    4. terwijl IFS= lees -r regel; do: Deze regel initieert een while-lus die regels uit het bestand leest.
      • IFS=: De IFS (Internal Field Separator) is ingesteld op een lege waarde om voorloop- en volgspaties te behouden.
      • read -r line: Dit leest de huidige regel uit het bestand en slaat deze op in de variabele regel.
    5. echo Line read: $line: Deze regel geeft de inhoud weer van de regel die uit het bestand is gelezen. De variabele $line bevat de inhoud van de huidige regel.
    6. # Voeg hier uw verwerkingslogica toe: Dit is een plaatsaanduiding voor commentaar waarin u uw eigen logica kunt toevoegen om elke regel te verwerken. U kunt bijvoorbeeld de regel analyseren, informatie extraheren of specifieke acties uitvoeren op basis van de inhoud.
    7. done <$file: Dit markeert het einde van de while-lus. De < $file leidt de inhoud van het bestand om zodat deze door de lus kan worden gelezen.
    8. else: Als het bestand niet bestaat (de voorwaarde in de if-instructie is false), voert het script de code uit onder de else-vertakking.
    9. echo Bestand niet gevonden: $file: Deze regel geeft een foutmelding weer die aangeeft dat het opgegeven bestand niet is gevonden.
    10. fi: Deze regel markeert het einde van de if-instructie.
    bestand lezen

    bestand lezen

    Hier gebruikten we ` pwd ` commando om het pad van de huidige map op te halen.

    17) Schrijf een functie in een shellscript die de faculteit van een bepaald getal berekent.

    Hier is het script datbereken de faculteitvan een bepaald getal.

    #!/bin/bash
    # Definieer een functie om faculteit te berekenen
    berekenen_factorial() {
    aantal=$1
    feit=1
    voor ((i=1; i<=getal; i++)); Doen
    feit=$((feit * i))
    klaar
    echo $ feit
    }
    # Vraag de gebruiker om een ​​nummer in te voeren
    echo Voer een getal in:
    lees invoer_getal
    # Roep de functie 'calculate_factorial' aan met het invoernummer
    factorial_result=$(calculate_factorial $input_num)
    # Geef het faculteitsresultaat weer
    echo Faculteit van $input_num is: $factorial_result

    Uitleg:

    1. Het script begint met de regel #!/bin/bash om de tolk op te geven.
    2. berekenen_factorial() is gedefinieerd als een functie. Er is één argument nodig, num, wat het getal is waarvoor de faculteit moet worden berekend.
    3. Binnen de functie wordt feit geïnitialiseerd op 1. Deze variabele slaat het faculteitsresultaat op.
    4. De for-lus itereert van 1 naar het opgegeven getal (num). In elke iteratie vermenigvuldigt het de huidige feitelijke waarde met de lusindex i.
    5. Nadat de lus is voltooid, bevat de feitvariabele de berekende faculteit.
    6. Het script vraagt ​​de gebruiker om een ​​getal in te voeren met behulp van read.
    7. De functie ‘calculate_factorial’ wordt aangeroepen met het door de gebruiker opgegeven getal, en het resultaat wordt opgeslagen in de variabele factorial_result.
    8. Ten slotte geeft het script het berekende factoriële resultaat weer.
    Factorieel

    Factorieel

    18) Hoe ga je om met signalen als Ctrl+C in een shellscript?

    In een shellscript kun je signalen zoals Ctrl+C (ook bekend als SIGINT) verwerken met behulp van het trap-commando. Ctrl+C genereert een SIGINT-signaal wanneer de gebruiker erop drukt om het actieve script of programma te onderbreken. Door het trap-commando te gebruiken, kunt u de acties opgeven die moeten worden ondernomen wanneer een bepaald signaal wordt ontvangen. Zo verwerkt u signalen zoals Ctrl+C in een shellscript:

    #!/bin/bash
    opruimen() {
    echo Script onderbroken. Opruimen uitvoeren…
    # Voeg hier uw opruimacties toe
    uitgang 1
    }
    # Stel een trap in om de opruimfunctie aan te roepen wanneer Ctrl+C (SIGINT) wordt ontvangen
    valopruiming SIGINT
    # Rest van je script
    echo Rennen...
    slapen 10
    echo Klaar.

    Het omgaan met signalen is belangrijk om scripts robuust te maken en ervoor te zorgen dat ze onverwachte onderbrekingen netjes afhandelen. U kunt de opschoonfunctie aanpassen aan uw specifieke behoeften, zoals het sluiten van bestanden, het stoppen van processen of het loggen van informatie voordat het script wordt afgesloten.

    Uitleg:

    1. #!/bin/bash: Deze shebang-regel specificeert de tolk die moet worden gebruikt voor het uitvoeren van het script.
    2. cleanup() { … }: Dit definieert een functie met de naam cleanup. Binnen deze functie kunt u alle acties opnemen die moeten worden uitgevoerd wanneer het script wordt onderbroken, zoals het sluiten van bestanden, het vrijgeven van bronnen of het uitvoeren van andere opruimtaken.
    3. trap opruimen SIGINT: Het trap-commando wordt gebruikt om een ​​signaalhandler in te stellen. In dit geval specificeert het dat wanneer het SIGINT-signaal (Ctrl+C) wordt ontvangen, de opschoonfunctie moet worden uitgevoerd.
    4. echo Running…, sleep 10, echo Finished.: Dit zijn slechts voorbeeldopdrachten om de uitvoering van een script te simuleren.

    446

    19) Maak een script dat dubbele regels in een tekstbestand controleert en verwijdert.

    Hier is ons Linux-script waarin we dubbele regels uit een tekstbestand zullen verwijderen.

    #!/bin/bash
    invoer_bestand=invoer.txt
    uitvoer_bestand=uitvoer.txt
    sorteer $input_file | uniq> $output_file
    echo Dubbele regels zijn succesvol verwijderd.

    Uitleg:

    1. Het script begint met een shebang (#!/bin/bash), wat aangeeft dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. De variabele input_file wordt ingesteld op de naam van het invoerbestand dat dubbele regels bevat (wijzig dit in de werkelijke naam van het invoerbestand).
    3. De output_file variabele wordt ingesteld op de naam van het uitvoerbestand waar de duplicaten zullen worden verwijderd (wijzig dit in de gewenste uitvoerbestandsnaam).
    4. Het script gebruikt het sorteercommando om de regels in het invoerbestand te sorteren. Door de regels te sorteren, worden dubbele regels gegroepeerd.
    5. De gesorteerde regels worden vervolgens door het uniq-commando geleid, dat opeenvolgende dubbele regels verwijdert. De uitvoer van dit proces wordt omgeleid naar het uitvoerbestand.
    6. Nadat de duplicaten zijn verwijderd, drukt het script een succesbericht af.
    dubbele regel verwijderen

    dubbele regel verwijderen

    Hier gebruiken we ` kat ` om de tekst in het tekstbestand weer te geven.

    20) Schrijf een script dat een veilig willekeurig wachtwoord genereert.

    Hier is ons script om een ​​veilig willekeurig wachtwoord te genereren.

    #!/bin/bash
    # Functie om een ​​willekeurig wachtwoord te genereren
    Genereer wachtwoord() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Roep de functie op en sla het gegenereerde wachtwoord op
    wachtwoord=$(genereer_wachtwoord)
    echo Gegenereerd wachtwoord: $password

    Opmerking: De gebruiker kan de lengte van zijn wachtwoord dienovereenkomstig wijzigen door het getal `12` te vervangen.

    Uitleg:

    1. Het script begint met een shebang (#!/bin/bash), wat aangeeft dat het moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. De functie genereren_wachtwoord is gedefinieerd om een ​​willekeurig wachtwoord te genereren. Dit is hoe het werkt:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 verdeelt de gefilterde willekeurige gegevens in regels met een breedte van elk 12 tekens.
      • head -n 1 selecteert de eerste regel, waardoor we feitelijk een willekeurige reeks tekens met een lengte van 12 krijgen.
    3. Aan de wachtwoordvariabele wordt het resultaat toegewezen van het aanroepen van de functie genereren_wachtwoord.
    4. Ten slotte wordt het gegenereerde wachtwoord weergegeven met behulp van echo.

    448

    21) Schrijf een shellscript dat de totale grootte van alle bestanden in een map berekent.

    Hier is een shellscript om de totale grootte van alle bestanden in een map te berekenen.

    #!/bin/bash
    map=/pad/naar/uw/map
    total_size=$(du -csh $directory | grep totaal | awk ‘{print $1}’)
    echo Totale grootte van bestanden in $directory: $total_size

    Uitleg:

    1. Het script begint met #!/bin/bash shebang, wat aangeeft dat het moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. De mapvariabele wordt ingesteld op het pad van de map waarvoor u de totale bestandsgrootte wilt berekenen. Vervang /pad/naar/uw/directory door het daadwerkelijke pad.
    3. De opdracht du wordt gebruikt om het gebruik van de bestandsruimte te schatten. De gebruikte opties zijn:
      • -c: Produceer een eindtotaal.
      • -s: Geef alleen de totale grootte van de opgegeven map weer.
      • -h: afdrukformaten in een voor mensen leesbaar formaat (bijvoorbeeld KB, MB, GB).
    4. De uitvoer van du wordt doorgesluisd naar grep total om de regel uit te filteren die de totale grootte bevat.
    5. awk ‘{print $1}’ wordt gebruikt om het eerste veld (totale grootte) uit de regel te extraheren.
    6. De berekende totale grootte wordt opgeslagen in de variabele total_size.
    7. Ten slotte geeft het script de totale grootte weer met behulp van echo.
    Totale grootte van bestanden

    Totale grootte van bestanden

    Hier gebruikten we ` pwd ` commando om het huidige mappad te zien.

    22) Leg het verschil uit tussen if- en elif-instructies in shell-scripting.

    Functie `als`Staffement `elif`-verklaring
    Doel Leg het verschil uit tussen if- en elif-instructies in shell-scripting. Biedt alternatieve voorwaarden om te controleren of de initiële if-voorwaarde onwaar is.
    gebruik Gebruikt voor de begintoestand. Wordt gebruikt na de initiële if-voorwaarde om aanvullende voorwaarden te controleren.
    aantal blokken Kan er maar één hebben als blok. Kan meerdere elif-blokken hebben, maar slechts één ander blok (optioneel).
    Executie Voert het codeblok uit dat is gekoppeld aan de if-instructie als de voorwaarde waar is. Als de voorwaarde onwaar is, wordt het else-blok (indien aanwezig) uitgevoerd (optioneel). Controleert elke elif-voorwaarde op volgorde. Als één elif-voorwaarde waar is, wordt het corresponderende codeblok uitgevoerd en verlaat het script het volledige voorwaardelijke blok. Als geen van de elif-voorwaarden waar is, wordt het else-blok (indien aanwezig) uitgevoerd.
    Geneste structuren Kan worden genest in andere if-, elif- of else-blokken. Kan niet in een ander elif-blok worden genest, maar kan wel in een if- of else-blok worden gebruikt.

    Laten we het aan de hand van een voorbeeld begrijpen.

    #!/bin/bash
    aantal=5
    if [$nummer -gt 10]; Dan
    echo $getal is groter dan 10
    anders
    echo $number is niet groter dan 10
    zijn
    echo ——–
    if [$nummer -gt 10]; Dan
    echo $getal is groter dan 10
    elif [ $getal -eq 10 ]; Dan
    echo $getal is gelijk aan 10
    anders
    echo $getal is kleiner dan 10
    zijn

    Uitleg:

    In dit voorbeeld controleert het eerste if-blok of getal groter is dan 10. Als dit niet het geval is, wordt er een bericht afgedrukt dat aangeeft dat het getal niet groter is dan 10. Het tweede blok met elif-instructies controleert meerdere voorwaarden opeenvolgend totdat een van deze waar is. In dit geval zal de uitvoer, aangezien de waarde van getal 5 is:

    if_elif verschil

    if_elif verschil

    23) Hoe gebruik je een while-lus om herhaaldelijk opdrachten uit te voeren?

    Een while-lus wordt gebruikt in shell-scripts om herhaaldelijk een reeks opdrachten uit te voeren zolang een opgegeven voorwaarde waar is. De lus gaat door met het uitvoeren van de opdrachten totdat de voorwaarde onwaar wordt.

    Hier is de basissyntaxis van een while-lus:

    terwijl [voorwaarde]; Doen
    # Uit te voeren opdrachten
    klaar

    Uitleg:

    1. De 'while'-lus begint met het sleutelwoord 'while', gevolgd door een voorwaarde tussen vierkante haakjes '[ ]'.
    2. De body van de lus, die de uit te voeren opdrachten bevat, wordt omsloten door de trefwoorden `do` en `done`.
    3. De lus controleert eerst de toestand. Als de voorwaarde waar is, worden de opdrachten binnen de lusbody uitgevoerd. Nadat de lusbody is uitgevoerd, wordt de voorwaarde opnieuw gecontroleerd en herhaalt het proces zich totdat de voorwaarde onwaar wordt.

    Voorbeeld: Als we getallen van 1 tot 5 willen afdrukken

    #!/bin/bash
    teller=1
    while [ $counter -le 5 ]; Doen
    echo-nummer: $counter
    teller=$((teller + 1))
    klaar

    Uitleg:

    • De tellervariabele is ingesteld op 1.
    • De while-lus controleert of de waarde van counter kleiner dan of gelijk is aan 5. Zolang deze voorwaarde waar is, gaat de lus door met uitvoeren.
    • Binnen de lus wordt de huidige waarde van de teller afgedrukt met behulp van echo.
    • De teller wordt met 1 verhoogd met behulp van de uitdrukking $((teller + 1)).
    herhalingslus

    herhalingslus

    24) Maak een shellscript dat alle lege bestanden in een map vindt en vermeldt.

    Shell-script dat u kunt gebruiken om alle lege bestanden in een map te vinden en weer te geven met behulp van de opdrachten `find` en `stat`:

    #!/bin/bash
    map=$1″
    if [ -z $map ]; Dan
    echogebruik: $0
    uitgang 1
    zijn

    als [ ! -d $map]; Dan
    echo Fout: ‘$directory’ is geen geldige map.
    uitgang 1
    zijn
    echo Lege bestanden in $directory:
    zoek $directory -type f -leeg

    Uitleg:

    1. ` #!/bin/bash `: Dit wordt een shebang genoemd en vertelt het besturingssysteem om de Bash-shell te gebruiken om het script te interpreteren en uit te voeren.
    2. ` map=$1″ `: Deze regel wijst het eerste opdrachtregelargument (aangeduid met $1) toe aan de variabele ` map `.
    3. ` if [ -z $map ]; Dan `: Deze regel start een if-instructie die controleert of de ` map ` variabele is leeg (-z test voor een lege string).
    4. ` echogebruik: $0 `: Als de directory leeg is, drukt deze regel een gebruiksbericht af, waarbij ` $ 0 ` vertegenwoordigt de naam van het script.
    5. ` uitgang 1 `: Deze regel sluit het script af met de afsluitcode ` 1 ', wat een fout aangeeft.
    6. ` zijn `: Deze regel markeert het einde van de ` als ` verklaring.
    7. ` als [ ! -d $map]; Dan `: Dit start een nieuwe if-instructie om te controleren of de opgegeven map bestaat (` -D ` tests voor een directory).
    8. ` echo Fout: ‘$directory’ is geen geldige map. `: Als de opgegeven directory niet bestaat, drukt deze regel een foutmelding af.
    9. ` uitgang 1 `: Sluit het script af met de afsluitcode ` 1 `.
    10. ` zijn `: Markeert het einde van de tweede ` als` stelling.
    11. ` echo Lege bestanden in $directory: `: Als alles tot nu toe geldig is, drukt deze regel een bericht af dat aangeeft dat het script lege bestanden in de opgegeven map zal weergeven.
    12. ` zoek $directory -type f -leeg `: Deze regel gebruikt de ` vinden ` commando om te zoeken naar lege bestanden (` -leeg `) van het type gewone bestanden (` -type f `) in de opgegeven map. Vervolgens worden deze lege bestanden weergegeven.
    Lege bestanden vinden

    Lege bestanden vinden

    Opmerking : We moeten een map opgeven als argument bij het uitvoeren van het script. Hier hebben we het pad van de huidige map home/jayeshkumar/ gebruikt

    25) Wat is het doel van het leescommando in shell-scripting?

    Met de leesopdracht in shell-scripting kan het script u om informatie vragen. Het is alsof een computer je een vraag stelt en op je antwoord wacht. Dit is handig voor scripts waarbij u iets moet typen of wanneer het script moet werken met informatie uit bestanden. De leesopdracht helpt het script te stoppen en te wachten op wat u typt, en vervolgens kan het die informatie gebruiken om meer dingen in het script te doen.

    Syntaxis van leesopdracht:

    read variable_name>

    Voorbeeld : Als we de naam als invoer van de gebruiker willen gebruiken om deze af te drukken.

    #!/bin/bash
    echo Voer uw naam in:
    lees naam
    echo Hallo, $naam!

    453

    lees naam

    Samenvattend wordt het leescommando gebruikt om gebruikersinvoer of gegevens uit bestanden binnen shell-scripts vast te leggen, waardoor de scripts interactiever en veelzijdiger worden.

    26) Schrijf een shellscript dat alle bestandsnamen in een map naar kleine letters converteert.

    Hier is een shellscript dat alle bestandsnamen in een map naar kleine letters converteert.

    #!/bin/bash
    map=$1″
    if [ -z $map ]; Dan
    echogebruik: $0
    uitgang 1
    zijn

    als [ ! -d $map]; Dan

    echo Fout: ‘$directory’ is geen geldige map.
    uitgang 1
    zijn

    cd $map || uitgang 1

    voor bestand in *; Doen
    if [ -f $bestand ]; Dan
    nieuwenaam=$(echo $bestand | tr ‘A-Z’ ‘a-z’)
    [ $bestand != $nieuwenaam ] && mv $bestand $nieuwenaam
    zijn
    klaar

    Uitleg:

    1. #!/bin/bash : Dit is de shebang, waarin wordt gespecificeerd dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. map=$1″ : Deze regel wijst het eerste opdrachtregelargument toe aan de variabelenmap.
    3. if [ -z $map ]; Dan : Deze regel controleert of de mapvariabele leeg is (er wordt geen argument opgegeven bij het uitvoeren van het script).
    4. echogebruik: $0 : Als de map leeg is, drukt deze regel een gebruiksbericht af met de naam van het script ($0).
    5. uitgang 1 : deze regel sluit het script af met de afsluitcode 1, wat aangeeft dat er een fout is opgetreden.
    6. F i: Dit markeert het einde van de eerste if-instructie.
    7. als [ ! -d $map]; Dan : Deze regel controleert of de opgegeven map niet bestaat (-d test voor een map).
    8. echo Fout: ‘$directory’ is geen geldige map. : Als de opgegeven map niet bestaat, drukt deze regel een foutmelding af.
    9. uitgang 1 : Sluit het script af met de afsluitcode 1.
    10. zijn : Markeert het einde van de tweede if-instructie.
    11. cd $map || uitgang 1 : Wijzigt de huidige werkmap naar de opgegeven map. Als het wijzigen van de map mislukt (bijvoorbeeld als de map niet bestaat), wordt het script afgesloten met een foutcode.
    12. voor bestand in *; Doen: I voor bestand in *; Doen: zorgt voor een lus die alle items in de huidige map doorloopt (* komt overeen met alle bestandsnamen).
    13. if [ -f $bestand ]; Dan : Controleert of het huidige lus-iteratie-item een ​​normaal bestand is (-f test voor een normaal bestand).
    14. nieuwenaam=$(echo $bestand | tr ‘A-Z’ ‘a-z’) : Converteert de huidige bestandsnaam ($file) naar kleine letters met behulp van de opdracht tr en slaat het resultaat op in de variabele newname.
    15. [ $bestand != $nieuwenaam ] && mv $bestand $nieuwenaam : Vergelijkt de oorspronkelijke bestandsnaam met de nieuwe bestandsnaam in kleine letters. Als ze verschillend zijn, wordt de naam van het bestand gewijzigd met behulp van de opdracht mv.
    16. zijn : Markeert het einde van de innerlijke if-instructie.
    17. klaar : Markeert het einde van de lus.

    454

    Opmerking : We moeten een map opgeven als argument bij het uitvoeren van het script. Hier hebben we het pad van de huidige map home/jayeshkumar/test gebruikt

    27) Hoe kun je rekenkundige bewerkingen gebruiken binnen een shellscript?

    Rekenkundige bewerkingen kunnen worden uitgevoerd binnen een shellscript met behulp van verschillende ingebouwde methoden. De shell biedt mechanismen voor eenvoudige rekenkundige berekeningen met behulp van rekenkundige uitbreiding, zoals:

    1. Rekenkundige uitbreiding ($((…)))
    2. Gebruik expr-opdracht
    3. Met behulp van let Command

    Hier is ons Shell-script waarin alle drie de methoden voor rekenkundige bewerkingen worden uitgelegd.

    #!/bin/bash
    getal1=10
    aantal2=5

    #Rekenkundige uitbreiding ($((…)))

    resultaat=$((aantal1 + aantal2))
    echo Som: $resultaat

    #Expr-opdracht gebruiken

    som=$(expr $num1 + $num2)
    echo Som: $som

    #Let-opdracht gebruiken

    laat som = num1 + num2
    echo Som: $som

    Uitleg:

    1. `#!/bin/bash` : Dit is de shebang, waarin wordt gespecificeerd dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. `num1=10` en ` getal2=5` : Deze regels wijzen de waarden 10 en 5 toe aan de variabelen ` num1 ' en ' num2 ', respectievelijk.
    3. `#Rekenkundige uitbreiding ($((…)))` : Dit is een opmerking die het begin aangeeft van de sectie die de rekenkundige uitbreiding demonstreert.
    4. `resultaat=$((aantal1 + aantal2))` : Deze regel gebruikt rekenkundige expansie om de som van ` te berekenen num1 ' en ' num2 ` en slaat het resultaat op in de ` resultaat ` variabele.
    5. `echosom: $resultaat` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` resultaat ` variabele.
    6. `#Gebruik expr-opdracht` : Dit is een commentaar dat het begin aangeeft van de sectie die het gebruik van de ` uitspr ` commando voor rekenkundige bewerkingen.
    7. `som=$(expr $num1 + $num2)` : Deze regel gebruikt de ` uitspr ` commando om de som van ` te berekenen num1 ' en ' num2 ` en slaat het resultaat op in de ` som ` variabele. Merk op dat de ` uitspr Het commando ` vereist spaties rond de operatoren.
    8. `echo Som: $som` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` som ` variabele.
    9. `#Gebruik let-commando` : Dit is een commentaar dat het begin aangeeft van de sectie die het gebruik van de ` laten ` commando voor rekenkundige bewerkingen.
    10. `laat som = num1 + num2″` : Deze regel gebruikt de ` laten ` commando om de som van ` te berekenen num1 ' en ' num2 ' en wijst het resultaat toe aan de ' som ` variabele. De ` laten Het commando ` vereist geen spaties rond de operatoren.
    11. `echo Som: $som` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` som ` variabele.
    rekenkundig

    rekenkundig

    28) Maak een script dat controleert of een netwerkhost bereikbaar is.

    Hier is een eenvoudig shellscript dat de ping-opdracht gebruikt om te controleren of een netwerkhost bereikbaar is:

    #!/bin/bash
    gastheer=$1″
    als [ -z $host ]; Dan
    echogebruik: $0
    uitgang 1
    zijn
    ping -c 4 $host

    als [$? -eq 0]; Dan
    echo $host is bereikbaar.
    anders
    echo $host is niet bereikbaar.
    zijn

    Uitleg:

    1. Het neemt een hostnaam of IP-adres als argument en controleert of het argument wordt opgegeven.
    2. Als er geen argument wordt opgegeven, wordt er een gebruiksbericht weergegeven en wordt het afgesloten.
    3. Het gebruikt het ping-commando met de optie -c 4 om vier ICMP-echoverzoeken naar de opgegeven host te sturen.
    4. Nadat de ping-opdracht is uitgevoerd, wordt de afsluitstatus ($?) gecontroleerd. Als de afsluitstatus 0 is, betekent dit dat de host bereikbaar is en dat het script een succesbericht afdrukt. Anders wordt er een foutbericht afgedrukt.

    456

    Opmerking : We moeten een hostnaam opgeven als argument bij het uitvoeren van het script. Hier hebben we google.com gebruikt

    29) Schrijf een shellscript om het grootste element in een array te vinden:

    Hier is een shellscript om het grootste element in een array te vinden.

    #!/bin/bash
    # Declareer een array
    array=(3 56 24 89 67)

    # Initialiseer een variabele om de maximale waarde op te slaan, te beginnen met het eerste element

    max=${array[0]}

    # Herhaal de array

    voor num in ${array[@]}; Doen

    # Vergelijk elk element met het huidige maximum

    als ((aantal> max)); Dan
    max=$num
    zijn
    klaar

    # Druk de maximale waarde af

    echo Het maximale element in de array is: $max

    Uitleg:

    1. ` #!/bin/bash `: De shebang-regel specificeert dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. ` array=(3 56 24 89 67) `: De array wordt gedeclareerd en geïnitialiseerd met waarden.
    3. ` max=${array[0]} `: `max` wordt geïnitialiseerd met het eerste element van de array.
    4. ` voor num in ${array[@]}; Doen `: Een `for`-lus wordt gebruikt om door de elementen van de array te lopen.
    5. ` als ((aantal> max)); Dan `: Een `if`-instructie controleert of het huidige element `num` groter is dan het huidige maximum `max`.
    6. ` max=$num`: Als`aantal ` groter is dan `max`, `max` wordt bijgewerkt met de waarde num.
    7. ` klaar `: De `for`-lus is gesloten.
    8. ` echo Het maximale element in de array is: $max `: Ten slotte drukt het script de maximale waarde af die in de array is gevonden.
    461

    grootste aantal

    30) Schrijf een script om de som van elementen in een array te berekenen.

    #!/bin/bash

    # Declareer een array

    array=(1 65 22 19 94)

    # Initialiseer een variabele om de som op te slaan

    som=0

    # Herhaal de array en voeg elk element toe aan de som

    voor num in ${array[@]}; Doen
    ben=$((ben + ben))
    klaar

    # Druk de som af

    echo De som van de elementen in de array is: $sum

    Uitleg:

    ` #!/bin/bash `: De shebang-regel specificeert dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.

    ` array=(1 65 22 19 94) `: De array wordt gedeclareerd en geïnitialiseerd met waarden.

    ` som=0 `:` som ` wordt geïnitialiseerd op nul om de som van de elementen vast te houden.

    ` voor num in ${array[@]}; Doen `: Een` voor ` lus wordt gebruikt om door de elementen van de array te lopen.

    ` ben=$((ben + ben)) `: Binnen de lus, elk element ` op een ` wordt toegevoegd aan ` som ` variabele.

    ` klaar `: De ` voor ' lus is gesloten.

    `echo De som van de elementen in de array is: $sum`: Ten slotte drukt het script de som van alle elementen in de array af.

    462

    Som van elementen

    Meer weten over Shell-scripts

    Conclusie

    We weten allemaal dat shell-script erg handig is om de werkproductiviteit te verhogen en ook tijd te besparen. Dus in dit artikel hebben we het besproken 30 zeer nuttige en meest conman shell-scriptvoorbeelden . We hopen dat deze complete handleiding over shell-scriptvoorbeelden u helpt alles over de shell-scripts te begrijpen.



    `: Als de directory leeg is, drukt deze regel een gebruiksbericht af, waarbij ` $ 0 ` vertegenwoordigt de naam van het script.
  5. ` uitgang 1 `: Deze regel sluit het script af met de afsluitcode ` 1 ', wat een fout aangeeft.
  6. ` zijn `: Deze regel markeert het einde van de ` als ` verklaring.
  7. ` als [ ! -d $map]; Dan `: Dit start een nieuwe if-instructie om te controleren of de opgegeven map bestaat (` -D ` tests voor een directory).
  8. ` echo Fout: ‘$directory’ is geen geldige map. `: Als de opgegeven directory niet bestaat, drukt deze regel een foutmelding af.
  9. ` uitgang 1 `: Sluit het script af met de afsluitcode ` 1 `.
  10. ` zijn `: Markeert het einde van de tweede ` als` stelling.
  11. ` echo Lege bestanden in $directory: `: Als alles tot nu toe geldig is, drukt deze regel een bericht af dat aangeeft dat het script lege bestanden in de opgegeven map zal weergeven.
  12. ` zoek $directory -type f -leeg `: Deze regel gebruikt de ` vinden ` commando om te zoeken naar lege bestanden (` -leeg `) van het type gewone bestanden (` -type f `) in de opgegeven map. Vervolgens worden deze lege bestanden weergegeven.
Lege bestanden vinden

Lege bestanden vinden

Opmerking : We moeten een map opgeven als argument bij het uitvoeren van het script. Hier hebben we het pad van de huidige map home/jayeshkumar/ gebruikt

25) Wat is het doel van het leescommando in shell-scripting?

Met de leesopdracht in shell-scripting kan het script u om informatie vragen. Het is alsof een computer je een vraag stelt en op je antwoord wacht. Dit is handig voor scripts waarbij u iets moet typen of wanneer het script moet werken met informatie uit bestanden. De leesopdracht helpt het script te stoppen en te wachten op wat u typt, en vervolgens kan het die informatie gebruiken om meer dingen in het script te doen.

Syntaxis van leesopdracht:

read variable_name>

Voorbeeld : Als we de naam als invoer van de gebruiker willen gebruiken om deze af te drukken.

#!/bin/bash
echo Voer uw naam in:
lees naam
echo Hallo, $naam!

453

lees naam

Samenvattend wordt het leescommando gebruikt om gebruikersinvoer of gegevens uit bestanden binnen shell-scripts vast te leggen, waardoor de scripts interactiever en veelzijdiger worden.

26) Schrijf een shellscript dat alle bestandsnamen in een map naar kleine letters converteert.

Hier is een shellscript dat alle bestandsnamen in een map naar kleine letters converteert.

#!/bin/bash
map=″
if [ -z $map ]; Dan
echogebruik:

Voor alle Linux-distributies is het shellscript als een toverstaf die het proces automatiseert, gebruikers tijd bespaart en de productiviteit verhoogt. Deze zelfstudie voor scripting laat je kennismaken met de meer dan 25 voorbeelden van scripting.

Maar voordat we verder gaan met het onderwerp shell-scripting Laten we, met voorbeelden, het shell-script en de daadwerkelijke gebruiksscenario's van shell-scripting begrijpen.

Wat is Shell-script?

Nou, de schaal is een CLI ( opdrachtregelinterpreter ), dat wordt uitgevoerd in een tekstvenster waarin gebruikers shell-opdrachten kunnen beheren en uitvoeren. Aan de andere kant wordt het proces van het schrijven van een reeks opdrachten die op een Linux-systeem moeten worden uitgevoerd. Een bestand dat dergelijke instructies bevat, wordt een bash-script genoemd.

Gebruik van Shell-scripts

Hieronder staan ​​enkele veelvoorkomende toepassingen van Shell Script:

  • Taakautomatisering – Het kan worden gebruikt om repetitieve taken te automatiseren, zoals regelmatige back-ups en software-installatietaken.
  • Maatwerk - Men kan shell-scripts gebruiken om de opdrachtregelomgeving te ontwerpen en de taak eenvoudig uit te voeren volgens de behoeften.
  • Bestandsbeheer - De shellscripts kunnen ook worden gebruikt voor het beheren en manipuleren van bestanden en mappen, zoals het verplaatsen, kopiëren, hernoemen of verwijderen van bestanden.

Shell-scriptvoorbeelden in Linux

1) Wat geeft de shebang (#!) aan het begin van een shellscript aan?

De shebang (#!) aan het begin van een script geeft de tolk aan die moet worden gebruikt om het script uit te voeren. Het vertelt het systeem welke shell of tolk de opdrachten van het script moet interpreteren.

Bijvoorbeeld: Stel dat we een script hebben met de naam mijnscript.sh geschreven in de Bash-shell:

keet

keet

In dit voorbeeld:

  • De #!/bin/bash aan het begin van het script geeft aan dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  • De echo-opdrachten worden gebruikt om berichten naar de terminal af te drukken.

2) Hoe voer je een shellscript uit vanaf de opdrachtregel?

Om een ​​shellscript vanaf de opdrachtregel uit te voeren, moeten we deze stappen volgen:

  • Zorg ervoor dat het scriptbestand uitvoerbare machtigingen heeft met behulp van de chmod-opdracht :
chmod +x myscript.sh>
  • Voer het script uit met behulp van de bestandsnaam:
./myscript.sh>

Hier moet je vervangen mijnscript.sh met uw scriptnaam.

3) Schrijf een shellscript dat techcodeview.com naar de terminal afdrukt.

Maak een scriptnaam `myscript.sh` (we gebruiken ` omdat ` editor, u kunt elke editor kiezen)

vim myscript.sh>

#!/bin/bash
# Dit script drukt techcodeview.com af naar de terminal
echo techcodeview.com

print naam

print naam

We maken ons script uitvoerbaar door `chmod +x` te gebruiken en vervolgens uit te voeren met `./myscipt.sh` en krijgen de gewenste uitvoer techcodeview.com.

4) Leg het doel uit van het echo-commando in shell-scripting.

De echo-opdracht wordt gebruikt om tekst of variabelen op de terminal weer te geven. Het wordt vaak gebruikt voor het afdrukken van berichten, variabele waarden en het genereren van programma-uitvoer.

434

echo-opdracht

In dit voorbeeld moeten we `echo` rechtstreeks op terminal uitvoeren, omdat het binnen het shell-script hetzelfde werkt.

5) Hoe kun je een waarde toewijzen aan een variabele in een shellscript?

Aan variabelen worden waarden toegewezen met behulp van de toewijzingsoperator =.

Bijvoorbeeld:

#!/bin/bash
# Een waarde aan een variabele toekennen
naam=Jayesh
leeftijd = 21
echo $naam $leeftijd

Uitleg:

  • Aan de naamvariabele wordt de waarde Jayesh toegewezen.
  • De leeftijdsvariabele krijgt de waarde 21.
  • echo wordt gebruikt om af te drukken en `$name` `$age` wordt gebruikt om de waarde aan te roepen die in de variabelen is opgeslagen.

435

6) Schrijf een shellscript dat de naam van een gebruiker als invoer neemt en deze begroet.

Maak een scriptnaam `example.sh`.

#!/bin/bash
# Vraag de gebruiker naar zijn naam
echo Hoe heet je?
lees naam
# Begroet de gebruiker
echo Hallo, $naam! Aangenaam.

Uitleg:

  • #!/bin/bash: Dit is de shebang-regel. Het vertelt het systeem dat het de Bash-interpreter moet gebruiken om het script uit te voeren.
  • # Vraag de gebruiker naar zijn naam: Dit is een opmerking. Het biedt context over de komende code. Opmerkingen worden door de tolk genegeerd.
  • echo Hoe heet je?: Het echo-commando wordt gebruikt om de tekst tussen dubbele aanhalingstekens op de terminal weer te geven.
  • leesnaam: Het leescommando wacht tot de gebruiker tekst invoert en slaat deze op in de variabelenaam.
  • echo Hallo, $naam! Leuk je te ontmoeten.: Deze regel gebruikt het echo-commando om een ​​begroetingsbericht af te drukken dat de waarde bevat van de naamvariabele, die is verzameld uit de invoer van de gebruiker.

436

7) Hoe voeg je commentaar toe aan een shellscript?

Opmerkingen in shell-scripting worden gebruikt om uitleg of context aan de code te geven. Ze worden door de tolk genegeerd en zijn alleen bedoeld voor mensen die het script lezen. U kunt opmerkingen toevoegen met het #-symbool.

#!/bin/bash
# Dit is een commentaar waarin het doel van het script wordt uitgelegd
echo gfg

8) Maak een shellscript dat controleert of een bestand in de huidige map bestaat.

Hier is een script dat controleert of een bestand met de naam example.txt in de huidige map bestaat:

#!/bin/bash
bestand=voorbeeld.txt
# Controleer of het bestand bestaat
if [ -e $bestand ]; Dan
echo Bestand bestaat: $file
anders
echo Bestand niet gevonden: $file
zijn

Uitleg:

  1. #!/bin/bash: Dit is de shebang-regel die de tolk (/bin/bash) specificeert die moet worden gebruikt voor het uitvoeren van het script.
  2. file=example.txt: Deze regel definieert het variabele bestand en wijst er de waarde example.txt aan toe. U kunt dit vervangen door de naam van het bestand waarop u wilt controleren.
  3. if [ -e $bestand ]; then: Deze regel start een if-statement. De voorwaarde [ -e $file ] controleert of het bestand dat wordt opgegeven door de waarde van de bestandsvariabele bestaat. De vlag -e wordt gebruikt om te controleren of het bestand bestaat.
  4. echo Bestand bestaat: $file: Als de voorwaarde waar is (dat wil zeggen: het bestand bestaat), wordt op deze regel een bericht afgedrukt dat aangeeft dat het bestand bestaat, samen met de naam van het bestand.
  5. else: Als de voorwaarde onwaar is (dat wil zeggen: het bestand bestaat niet), voert het script de code uit onder de else-vertakking.
  6. echo Bestand niet gevonden: $file: Deze regel geeft een foutmelding weer die aangeeft dat het opgegeven bestand niet is gevonden, samen met de bestandsnaam.
  7. fi: Deze regel markeert het einde van de if-instructie.
Bestand zoeken

Bestand zoeken

9) Wat is het verschil tussen enkele aanhalingstekens (‘) en dubbele aanhalingstekens () in shell-scripting?

Enkele aanhalingstekens (‘) en dubbele aanhalingstekens () worden gebruikt om tekenreeksen in shell-scripting te omsluiten, maar ze gedragen zich verschillend:

  • Enkele aanhalingstekens: Alles tussen enkele aanhalingstekens wordt behandeld als een letterlijke tekenreeks. Variabelenamen en de meeste speciale tekens worden niet uitgevouwen.
  • Dubbele aanhalingstekens: Variabelen en bepaalde speciale tekens binnen dubbele aanhalingstekens worden uitgevouwen. De inhoud is onderhevig aan variabele vervanging en opdrachtvervanging.

#!/bin/bash

abcd=Hallo
echo ‘$abcd’ # Uitvoer: $abcd
echo $abcd # Uitvoer: Hallo

10) Hoe kunt u opdrachtregelargumenten gebruiken in een shellscript?

Opdrachtregelargumenten zijn waarden die aan een script worden verstrekt wanneer het wordt uitgevoerd. Ze zijn binnen het script toegankelijk met behulp van speciale variabelen zoals $1, $2, etc., waarbij $1 het eerste argument vertegenwoordigt, $2 het tweede argument, enzovoort.

Bijvoorbeeld: Als onze scriptnaam `example.sh`

#!/bin/bash

echo Scriptnaam: $0
echo Eerste argument: $1
echo Tweede argument: $2

Als we het script uitvoeren met `.example.sh hello_1 hello_2`, zal het het volgende opleveren:

cli argumenten

cli argumenten

11) Hoe gebruik je de for-lus om een ​​lijst met waarden te doorlopen?

Maak een scriptnaam `example.sh`.

#!/bin/bash

fruits=(appel banaan kersen dadel)
voor fruit in ${fruits[@]}; Doen
echo Huidig ​​fruit: $fruit
klaar

Uitleg:

De lijn `fruits=` creëert een array met de naam fruit met vier elementen: appel, banaan, kers en dadel.

  • voor fruit in ${fruits[@]}; do: Deze regel start een for-lus. Dit is wat elk onderdeel betekent:
  • voor fruit: Dit declareert een lusvariabele genaamd fruit. In elke iteratie van de lus behoudt fruit de waarde van het huidige element uit de fruits-array.
  • ${fruits[@]}: Dit is een array-uitbreiding die alle elementen uit de fruits-array overneemt. De syntaxis ${…} zorgt ervoor dat elk element als een afzonderlijk item wordt behandeld.
  • do: Dit trefwoord markeert het begin van de lusbody.
  • echo Huidig ​​fruit: $fruit: Binnen de lus gebruikt deze regel het echo-commando om de huidige waarde van de lusvariabele fruit weer te geven. Er wordt een bericht afgedrukt als Huidig ​​fruit: appel voor elk fruit in de array.
  • done: Dit trefwoord markeert het einde van de lusbody. Het vertelt het script dat de lus is voltooid.
for loop

for loop

12) Schrijf een shellscript dat de som van gehele getallen van 1 tot N berekent met behulp van een lus.

Maak een scriptnaam `example.sh`.

#!/bin/bash

echo Voer een getal in (N):
lees N
som=0
voor (( i=1; i<=$N; i++ )); Doen
som=$((som + i))
klaar
echo De som van gehele getallen van 1 tot $N is: $sum

Uitleg:
Het script begint met de vraag om een ​​getal (N) in te voeren met behulp van read. Dit getal bepaalt hoe vaak de lus wordt uitgevoerd.

  1. De variabele som wordt geïnitialiseerd op 0. Deze variabele houdt de som van gehele getallen bij.
  2. De for-lus begint met for (( i=1; i<=$N; i++ )). Deze lusstructuur wordt gebruikt om een ​​reeks acties een bepaald aantal keren te herhalen, in dit geval van 1 tot de waarde van N.
  3. Binnen de lus gebeuren deze dingen:
    • i=1 stelt de lusvariabele i in op 1 aan het begin van elke iteratie.
    • De lusvoorwaarde i<=$N controleert of i nog steeds kleiner is dan of gelijk is aan het gegeven getal N.
    • Als de voorwaarde waar is, wordt de lusbody uitgevoerd.
    • sum=$((sum + i)) berekent de nieuwe waarde van sum door de huidige waarde van i erbij op te tellen. Dit telt de gehele getallen van 1 op tot de huidige i-waarde.
  4. Na elke iteratie verhoogt i++ de waarde van i met 1.
  5. De lus blijft lopen totdat de voorwaarde i<=$N onwaar wordt (wanneer i groter wordt dan N).
  6. Zodra de lus is voltooid, geeft het script de som weer van de gehele getallen van 1 tot het ingevoerde getal N.

439

13) Maak een script dat naar een specifiek woord in een bestand zoekt en het aantal keren dat het voorkomt telt.

Maak een scriptnaam `word_count.sh`

#!/bin/bash

echo Voer het woord in waarnaar u wilt zoeken:
lees doel_woord
echo Voer de bestandsnaam in:
lees bestandsnaam
count=$(grep -o -w $doelwoord $bestandsnaam | wc -l)
echo Het woord ‘$target_word’ verschijnt $count keer in ‘$filename’.

Uitleg:

  • echo Voer het woord in waarnaar moet worden gezocht:: Op deze regel wordt een bericht weergegeven waarin de gebruiker wordt gevraagd een woord in te voeren waarnaar hij wil zoeken in een bestand.
  • read target_word: Deze regel leest de invoer van de gebruiker en slaat deze op in een variabele met de naam target_word.
  • echo Voer de bestandsnaam in:: Op deze regel wordt een bericht weergegeven waarin de gebruiker wordt gevraagd de naam in te voeren van het bestand waarin hij wil zoeken.
  • lees bestandsnaam: Deze regel leest de invoer van de gebruiker en slaat deze op in een variabele met de naam bestandsnaam.
  • count=$(grep -o -w $target_word $filename | wc -l): Deze regel doet het hoofdwerk van het script. Laten we het verder uitsplitsen:
    • grep -o -w $target_word $filename: Dit deel van de opdracht zoekt naar exemplaren van het target_word in de opgegeven bestandsnaam. De opties -o en -w zorgen ervoor dat alleen overeenkomsten van hele woorden worden geteld.
    • |: Dit is een pipe, die de uitvoer van het vorige commando neemt en deze als invoer voor het volgende commando verzendt.
    • wc -l: Dit deel van de opdracht gebruikt de opdracht wc om het aantal regels in de invoer te tellen. De optie -l telt specifiek de regels.
    • De hele opdracht berekent het aantal keren dat het doelwoord in het bestand voorkomt en wijst dat aantal toe aan de variabele aantal

441

14) Leg de verschillen uit tussen standaarduitvoer (stdout) en standaardfout (stderr).

Het belangrijkste verschil tussen standaarduitvoer (stdout) en standaardfout (stderr) is als volgt:

  • Standaarduitvoer (stdout): Dit is de standaarduitvoerstroom waar de reguliere uitvoer van een opdracht naartoe gaat. Het wordt standaard op de terminal weergegeven. U kunt het omleiden naar een bestand met behulp van>.
  • Standaardfout (stderr): Dit is de uitvoerstroom voor foutmeldingen en waarschuwingen. Het wordt ook standaard op de terminal weergegeven. U kunt het omleiden naar een bestand met behulp van 2>.

15) Leg het concept van voorwaardelijke instructies in shell-scripting uit.

Voorwaardelijke instructies in shell-scripting stellen ons in staat beslissingen te nemen en de stroom van ons script te controleren op basis van bepaalde voorwaarden. Ze zorgen ervoor dat ons script verschillende sets opdrachten kan uitvoeren, afhankelijk van of een bepaalde voorwaarde waar of onwaar is. De primaire voorwaardelijke instructies in shell-scripting zijn de if-instructie, de elif-instructie (optioneel) en de else-instructie (optioneel).

Hier is de basisstructuur van een voorwaardelijke instructie in shell-scripting:

als [voorwaarde]; Dan
# Commando's die moeten worden uitgevoerd als de voorwaarde waar is
elif [andere_voorwaarde]; Dan
# Commando's die moeten worden uitgevoerd als een andere_voorwaarde waar is (optioneel)
anders
# Uit te voeren opdrachten als geen van de voorwaarden waar is (optioneel)
zijn

Uitleg:

  • [ condition ] = Commando dat de voorwaarde evalueert en een waar (0) of onwaar (niet-nul) afsluitstatus retourneert.
  • then = Het is een trefwoord dat aangeeft dat de daaropvolgende opdrachten worden uitgevoerd als de voorwaarde als waar wordt geëvalueerd.
  • elif = (afkorting van else if) Het is een sectie waarmee we aanvullende voorwaarden kunnen opgeven om te controleren.
  • else = het is een sectie die opdrachten bevat die worden uitgevoerd als geen van de voorwaarden waar is.
  • fi = Het is een trefwoord dat het einde van het voorwaardelijke blok markeert.

16) Hoe lees je regels uit een bestand binnen een shellscript?

Naar lees regels vanuit een bestand binnen een shellscript kunnen we verschillende methoden gebruiken, maar een gebruikelijke benadering is het gebruik van een while-lus in combinatie met de leesopdracht. Zo kunnen we het doen:

#!/bin/bash
bestand=/home/jayeshkumar/jayesh.txt
# Controleer of het bestand bestaat
if [ -e $bestand ]; Dan
terwijl IFS= lees -r regel; Doen
echo Regel gelezen: $line
# Voeg hier uw verwerkingslogica toe
klaar <$bestand
anders
echo Bestand niet gevonden: $file
zijn

Uitleg:

  1. #!/bin/bash: Dit is de shebang-regel die de tolk (/bin/bash) specificeert die moet worden gebruikt voor het uitvoeren van het script.
  2. file=/home/jayeshkumar/jayesh.txt: Deze regel definieert het variabele bestand en wijst het volledige pad toe aan het bestand jayesh.txt in de map /home/jayeshkumar. Wijzig dit pad zodat het overeenkomt met het daadwerkelijke pad van het bestand dat u wilt lezen.
  3. if [ -e $bestand ]; then: Deze regel start een if-statement. Er wordt gecontroleerd of het bestand dat is opgegeven door de variabele $file bestaat. De vlag -e controleert of het bestand bestaat.
  4. terwijl IFS= lees -r regel; do: Deze regel initieert een while-lus die regels uit het bestand leest.
    • IFS=: De IFS (Internal Field Separator) is ingesteld op een lege waarde om voorloop- en volgspaties te behouden.
    • read -r line: Dit leest de huidige regel uit het bestand en slaat deze op in de variabele regel.
  5. echo Line read: $line: Deze regel geeft de inhoud weer van de regel die uit het bestand is gelezen. De variabele $line bevat de inhoud van de huidige regel.
  6. # Voeg hier uw verwerkingslogica toe: Dit is een plaatsaanduiding voor commentaar waarin u uw eigen logica kunt toevoegen om elke regel te verwerken. U kunt bijvoorbeeld de regel analyseren, informatie extraheren of specifieke acties uitvoeren op basis van de inhoud.
  7. done <$file: Dit markeert het einde van de while-lus. De < $file leidt de inhoud van het bestand om zodat deze door de lus kan worden gelezen.
  8. else: Als het bestand niet bestaat (de voorwaarde in de if-instructie is false), voert het script de code uit onder de else-vertakking.
  9. echo Bestand niet gevonden: $file: Deze regel geeft een foutmelding weer die aangeeft dat het opgegeven bestand niet is gevonden.
  10. fi: Deze regel markeert het einde van de if-instructie.
bestand lezen

bestand lezen

Hier gebruikten we ` pwd ` commando om het pad van de huidige map op te halen.

17) Schrijf een functie in een shellscript die de faculteit van een bepaald getal berekent.

Hier is het script datbereken de faculteitvan een bepaald getal.

#!/bin/bash
# Definieer een functie om faculteit te berekenen
berekenen_factorial() {
aantal=$1
feit=1
voor ((i=1; i<=getal; i++)); Doen
feit=$((feit * i))
klaar
echo $ feit
}
# Vraag de gebruiker om een ​​nummer in te voeren
echo Voer een getal in:
lees invoer_getal
# Roep de functie 'calculate_factorial' aan met het invoernummer
factorial_result=$(calculate_factorial $input_num)
# Geef het faculteitsresultaat weer
echo Faculteit van $input_num is: $factorial_result

Uitleg:

  1. Het script begint met de regel #!/bin/bash om de tolk op te geven.
  2. berekenen_factorial() is gedefinieerd als een functie. Er is één argument nodig, num, wat het getal is waarvoor de faculteit moet worden berekend.
  3. Binnen de functie wordt feit geïnitialiseerd op 1. Deze variabele slaat het faculteitsresultaat op.
  4. De for-lus itereert van 1 naar het opgegeven getal (num). In elke iteratie vermenigvuldigt het de huidige feitelijke waarde met de lusindex i.
  5. Nadat de lus is voltooid, bevat de feitvariabele de berekende faculteit.
  6. Het script vraagt ​​de gebruiker om een ​​getal in te voeren met behulp van read.
  7. De functie ‘calculate_factorial’ wordt aangeroepen met het door de gebruiker opgegeven getal, en het resultaat wordt opgeslagen in de variabele factorial_result.
  8. Ten slotte geeft het script het berekende factoriële resultaat weer.
Factorieel

Factorieel

18) Hoe ga je om met signalen als Ctrl+C in een shellscript?

In een shellscript kun je signalen zoals Ctrl+C (ook bekend als SIGINT) verwerken met behulp van het trap-commando. Ctrl+C genereert een SIGINT-signaal wanneer de gebruiker erop drukt om het actieve script of programma te onderbreken. Door het trap-commando te gebruiken, kunt u de acties opgeven die moeten worden ondernomen wanneer een bepaald signaal wordt ontvangen. Zo verwerkt u signalen zoals Ctrl+C in een shellscript:

#!/bin/bash
opruimen() {
echo Script onderbroken. Opruimen uitvoeren…
# Voeg hier uw opruimacties toe
uitgang 1
}
# Stel een trap in om de opruimfunctie aan te roepen wanneer Ctrl+C (SIGINT) wordt ontvangen
valopruiming SIGINT
# Rest van je script
echo Rennen...
slapen 10
echo Klaar.

Het omgaan met signalen is belangrijk om scripts robuust te maken en ervoor te zorgen dat ze onverwachte onderbrekingen netjes afhandelen. U kunt de opschoonfunctie aanpassen aan uw specifieke behoeften, zoals het sluiten van bestanden, het stoppen van processen of het loggen van informatie voordat het script wordt afgesloten.

Uitleg:

  1. #!/bin/bash: Deze shebang-regel specificeert de tolk die moet worden gebruikt voor het uitvoeren van het script.
  2. cleanup() { … }: Dit definieert een functie met de naam cleanup. Binnen deze functie kunt u alle acties opnemen die moeten worden uitgevoerd wanneer het script wordt onderbroken, zoals het sluiten van bestanden, het vrijgeven van bronnen of het uitvoeren van andere opruimtaken.
  3. trap opruimen SIGINT: Het trap-commando wordt gebruikt om een ​​signaalhandler in te stellen. In dit geval specificeert het dat wanneer het SIGINT-signaal (Ctrl+C) wordt ontvangen, de opschoonfunctie moet worden uitgevoerd.
  4. echo Running…, sleep 10, echo Finished.: Dit zijn slechts voorbeeldopdrachten om de uitvoering van een script te simuleren.

446

19) Maak een script dat dubbele regels in een tekstbestand controleert en verwijdert.

Hier is ons Linux-script waarin we dubbele regels uit een tekstbestand zullen verwijderen.

#!/bin/bash
invoer_bestand=invoer.txt
uitvoer_bestand=uitvoer.txt
sorteer $input_file | uniq> $output_file
echo Dubbele regels zijn succesvol verwijderd.

Uitleg:

  1. Het script begint met een shebang (#!/bin/bash), wat aangeeft dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. De variabele input_file wordt ingesteld op de naam van het invoerbestand dat dubbele regels bevat (wijzig dit in de werkelijke naam van het invoerbestand).
  3. De output_file variabele wordt ingesteld op de naam van het uitvoerbestand waar de duplicaten zullen worden verwijderd (wijzig dit in de gewenste uitvoerbestandsnaam).
  4. Het script gebruikt het sorteercommando om de regels in het invoerbestand te sorteren. Door de regels te sorteren, worden dubbele regels gegroepeerd.
  5. De gesorteerde regels worden vervolgens door het uniq-commando geleid, dat opeenvolgende dubbele regels verwijdert. De uitvoer van dit proces wordt omgeleid naar het uitvoerbestand.
  6. Nadat de duplicaten zijn verwijderd, drukt het script een succesbericht af.
dubbele regel verwijderen

dubbele regel verwijderen

Hier gebruiken we ` kat ` om de tekst in het tekstbestand weer te geven.

20) Schrijf een script dat een veilig willekeurig wachtwoord genereert.

Hier is ons script om een ​​veilig willekeurig wachtwoord te genereren.

#!/bin/bash
# Functie om een ​​willekeurig wachtwoord te genereren
Genereer wachtwoord() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Roep de functie op en sla het gegenereerde wachtwoord op
wachtwoord=$(genereer_wachtwoord)
echo Gegenereerd wachtwoord: $password

Opmerking: De gebruiker kan de lengte van zijn wachtwoord dienovereenkomstig wijzigen door het getal `12` te vervangen.

Uitleg:

  1. Het script begint met een shebang (#!/bin/bash), wat aangeeft dat het moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. De functie genereren_wachtwoord is gedefinieerd om een ​​willekeurig wachtwoord te genereren. Dit is hoe het werkt:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 verdeelt de gefilterde willekeurige gegevens in regels met een breedte van elk 12 tekens.
    • head -n 1 selecteert de eerste regel, waardoor we feitelijk een willekeurige reeks tekens met een lengte van 12 krijgen.
  3. Aan de wachtwoordvariabele wordt het resultaat toegewezen van het aanroepen van de functie genereren_wachtwoord.
  4. Ten slotte wordt het gegenereerde wachtwoord weergegeven met behulp van echo.

448

21) Schrijf een shellscript dat de totale grootte van alle bestanden in een map berekent.

Hier is een shellscript om de totale grootte van alle bestanden in een map te berekenen.

#!/bin/bash
map=/pad/naar/uw/map
total_size=$(du -csh $directory | grep totaal | awk ‘{print $1}’)
echo Totale grootte van bestanden in $directory: $total_size

Uitleg:

  1. Het script begint met #!/bin/bash shebang, wat aangeeft dat het moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. De mapvariabele wordt ingesteld op het pad van de map waarvoor u de totale bestandsgrootte wilt berekenen. Vervang /pad/naar/uw/directory door het daadwerkelijke pad.
  3. De opdracht du wordt gebruikt om het gebruik van de bestandsruimte te schatten. De gebruikte opties zijn:
    • -c: Produceer een eindtotaal.
    • -s: Geef alleen de totale grootte van de opgegeven map weer.
    • -h: afdrukformaten in een voor mensen leesbaar formaat (bijvoorbeeld KB, MB, GB).
  4. De uitvoer van du wordt doorgesluisd naar grep total om de regel uit te filteren die de totale grootte bevat.
  5. awk ‘{print $1}’ wordt gebruikt om het eerste veld (totale grootte) uit de regel te extraheren.
  6. De berekende totale grootte wordt opgeslagen in de variabele total_size.
  7. Ten slotte geeft het script de totale grootte weer met behulp van echo.
Totale grootte van bestanden

Totale grootte van bestanden

Hier gebruikten we ` pwd ` commando om het huidige mappad te zien.

22) Leg het verschil uit tussen if- en elif-instructies in shell-scripting.

Functie `als`Staffement `elif`-verklaring
Doel Leg het verschil uit tussen if- en elif-instructies in shell-scripting. Biedt alternatieve voorwaarden om te controleren of de initiële if-voorwaarde onwaar is.
gebruik Gebruikt voor de begintoestand. Wordt gebruikt na de initiële if-voorwaarde om aanvullende voorwaarden te controleren.
aantal blokken Kan er maar één hebben als blok. Kan meerdere elif-blokken hebben, maar slechts één ander blok (optioneel).
Executie Voert het codeblok uit dat is gekoppeld aan de if-instructie als de voorwaarde waar is. Als de voorwaarde onwaar is, wordt het else-blok (indien aanwezig) uitgevoerd (optioneel). Controleert elke elif-voorwaarde op volgorde. Als één elif-voorwaarde waar is, wordt het corresponderende codeblok uitgevoerd en verlaat het script het volledige voorwaardelijke blok. Als geen van de elif-voorwaarden waar is, wordt het else-blok (indien aanwezig) uitgevoerd.
Geneste structuren Kan worden genest in andere if-, elif- of else-blokken. Kan niet in een ander elif-blok worden genest, maar kan wel in een if- of else-blok worden gebruikt.

Laten we het aan de hand van een voorbeeld begrijpen.

#!/bin/bash
aantal=5
if [$nummer -gt 10]; Dan
echo $getal is groter dan 10
anders
echo $number is niet groter dan 10
zijn
echo ——–
if [$nummer -gt 10]; Dan
echo $getal is groter dan 10
elif [ $getal -eq 10 ]; Dan
echo $getal is gelijk aan 10
anders
echo $getal is kleiner dan 10
zijn

Uitleg:

In dit voorbeeld controleert het eerste if-blok of getal groter is dan 10. Als dit niet het geval is, wordt er een bericht afgedrukt dat aangeeft dat het getal niet groter is dan 10. Het tweede blok met elif-instructies controleert meerdere voorwaarden opeenvolgend totdat een van deze waar is. In dit geval zal de uitvoer, aangezien de waarde van getal 5 is:

if_elif verschil

if_elif verschil

23) Hoe gebruik je een while-lus om herhaaldelijk opdrachten uit te voeren?

Een while-lus wordt gebruikt in shell-scripts om herhaaldelijk een reeks opdrachten uit te voeren zolang een opgegeven voorwaarde waar is. De lus gaat door met het uitvoeren van de opdrachten totdat de voorwaarde onwaar wordt.

Hier is de basissyntaxis van een while-lus:

terwijl [voorwaarde]; Doen
# Uit te voeren opdrachten
klaar

Uitleg:

  1. De 'while'-lus begint met het sleutelwoord 'while', gevolgd door een voorwaarde tussen vierkante haakjes '[ ]'.
  2. De body van de lus, die de uit te voeren opdrachten bevat, wordt omsloten door de trefwoorden `do` en `done`.
  3. De lus controleert eerst de toestand. Als de voorwaarde waar is, worden de opdrachten binnen de lusbody uitgevoerd. Nadat de lusbody is uitgevoerd, wordt de voorwaarde opnieuw gecontroleerd en herhaalt het proces zich totdat de voorwaarde onwaar wordt.

Voorbeeld: Als we getallen van 1 tot 5 willen afdrukken

#!/bin/bash
teller=1
while [ $counter -le 5 ]; Doen
echo-nummer: $counter
teller=$((teller + 1))
klaar

Uitleg:

  • De tellervariabele is ingesteld op 1.
  • De while-lus controleert of de waarde van counter kleiner dan of gelijk is aan 5. Zolang deze voorwaarde waar is, gaat de lus door met uitvoeren.
  • Binnen de lus wordt de huidige waarde van de teller afgedrukt met behulp van echo.
  • De teller wordt met 1 verhoogd met behulp van de uitdrukking $((teller + 1)).
herhalingslus

herhalingslus

24) Maak een shellscript dat alle lege bestanden in een map vindt en vermeldt.

Shell-script dat u kunt gebruiken om alle lege bestanden in een map te vinden en weer te geven met behulp van de opdrachten `find` en `stat`:

#!/bin/bash
map=$1″
if [ -z $map ]; Dan
echogebruik: $0
uitgang 1
zijn

als [ ! -d $map]; Dan
echo Fout: ‘$directory’ is geen geldige map.
uitgang 1
zijn
echo Lege bestanden in $directory:
zoek $directory -type f -leeg

Uitleg:

  1. ` #!/bin/bash `: Dit wordt een shebang genoemd en vertelt het besturingssysteem om de Bash-shell te gebruiken om het script te interpreteren en uit te voeren.
  2. ` map=$1″ `: Deze regel wijst het eerste opdrachtregelargument (aangeduid met $1) toe aan de variabele ` map `.
  3. ` if [ -z $map ]; Dan `: Deze regel start een if-instructie die controleert of de ` map ` variabele is leeg (-z test voor een lege string).
  4. ` echogebruik: $0 `: Als de directory leeg is, drukt deze regel een gebruiksbericht af, waarbij ` $ 0 ` vertegenwoordigt de naam van het script.
  5. ` uitgang 1 `: Deze regel sluit het script af met de afsluitcode ` 1 ', wat een fout aangeeft.
  6. ` zijn `: Deze regel markeert het einde van de ` als ` verklaring.
  7. ` als [ ! -d $map]; Dan `: Dit start een nieuwe if-instructie om te controleren of de opgegeven map bestaat (` -D ` tests voor een directory).
  8. ` echo Fout: ‘$directory’ is geen geldige map. `: Als de opgegeven directory niet bestaat, drukt deze regel een foutmelding af.
  9. ` uitgang 1 `: Sluit het script af met de afsluitcode ` 1 `.
  10. ` zijn `: Markeert het einde van de tweede ` als` stelling.
  11. ` echo Lege bestanden in $directory: `: Als alles tot nu toe geldig is, drukt deze regel een bericht af dat aangeeft dat het script lege bestanden in de opgegeven map zal weergeven.
  12. ` zoek $directory -type f -leeg `: Deze regel gebruikt de ` vinden ` commando om te zoeken naar lege bestanden (` -leeg `) van het type gewone bestanden (` -type f `) in de opgegeven map. Vervolgens worden deze lege bestanden weergegeven.
Lege bestanden vinden

Lege bestanden vinden

Opmerking : We moeten een map opgeven als argument bij het uitvoeren van het script. Hier hebben we het pad van de huidige map home/jayeshkumar/ gebruikt

25) Wat is het doel van het leescommando in shell-scripting?

Met de leesopdracht in shell-scripting kan het script u om informatie vragen. Het is alsof een computer je een vraag stelt en op je antwoord wacht. Dit is handig voor scripts waarbij u iets moet typen of wanneer het script moet werken met informatie uit bestanden. De leesopdracht helpt het script te stoppen en te wachten op wat u typt, en vervolgens kan het die informatie gebruiken om meer dingen in het script te doen.

Syntaxis van leesopdracht:

read variable_name>

Voorbeeld : Als we de naam als invoer van de gebruiker willen gebruiken om deze af te drukken.

#!/bin/bash
echo Voer uw naam in:
lees naam
echo Hallo, $naam!

453

lees naam

Samenvattend wordt het leescommando gebruikt om gebruikersinvoer of gegevens uit bestanden binnen shell-scripts vast te leggen, waardoor de scripts interactiever en veelzijdiger worden.

26) Schrijf een shellscript dat alle bestandsnamen in een map naar kleine letters converteert.

Hier is een shellscript dat alle bestandsnamen in een map naar kleine letters converteert.

#!/bin/bash
map=$1″
if [ -z $map ]; Dan
echogebruik: $0
uitgang 1
zijn

als [ ! -d $map]; Dan

echo Fout: ‘$directory’ is geen geldige map.
uitgang 1
zijn

cd $map || uitgang 1

voor bestand in *; Doen
if [ -f $bestand ]; Dan
nieuwenaam=$(echo $bestand | tr ‘A-Z’ ‘a-z’)
[ $bestand != $nieuwenaam ] && mv $bestand $nieuwenaam
zijn
klaar

Uitleg:

  1. #!/bin/bash : Dit is de shebang, waarin wordt gespecificeerd dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. map=$1″ : Deze regel wijst het eerste opdrachtregelargument toe aan de variabelenmap.
  3. if [ -z $map ]; Dan : Deze regel controleert of de mapvariabele leeg is (er wordt geen argument opgegeven bij het uitvoeren van het script).
  4. echogebruik: $0 : Als de map leeg is, drukt deze regel een gebruiksbericht af met de naam van het script ($0).
  5. uitgang 1 : deze regel sluit het script af met de afsluitcode 1, wat aangeeft dat er een fout is opgetreden.
  6. F i: Dit markeert het einde van de eerste if-instructie.
  7. als [ ! -d $map]; Dan : Deze regel controleert of de opgegeven map niet bestaat (-d test voor een map).
  8. echo Fout: ‘$directory’ is geen geldige map. : Als de opgegeven map niet bestaat, drukt deze regel een foutmelding af.
  9. uitgang 1 : Sluit het script af met de afsluitcode 1.
  10. zijn : Markeert het einde van de tweede if-instructie.
  11. cd $map || uitgang 1 : Wijzigt de huidige werkmap naar de opgegeven map. Als het wijzigen van de map mislukt (bijvoorbeeld als de map niet bestaat), wordt het script afgesloten met een foutcode.
  12. voor bestand in *; Doen: I voor bestand in *; Doen: zorgt voor een lus die alle items in de huidige map doorloopt (* komt overeen met alle bestandsnamen).
  13. if [ -f $bestand ]; Dan : Controleert of het huidige lus-iteratie-item een ​​normaal bestand is (-f test voor een normaal bestand).
  14. nieuwenaam=$(echo $bestand | tr ‘A-Z’ ‘a-z’) : Converteert de huidige bestandsnaam ($file) naar kleine letters met behulp van de opdracht tr en slaat het resultaat op in de variabele newname.
  15. [ $bestand != $nieuwenaam ] && mv $bestand $nieuwenaam : Vergelijkt de oorspronkelijke bestandsnaam met de nieuwe bestandsnaam in kleine letters. Als ze verschillend zijn, wordt de naam van het bestand gewijzigd met behulp van de opdracht mv.
  16. zijn : Markeert het einde van de innerlijke if-instructie.
  17. klaar : Markeert het einde van de lus.

454

Opmerking : We moeten een map opgeven als argument bij het uitvoeren van het script. Hier hebben we het pad van de huidige map home/jayeshkumar/test gebruikt

27) Hoe kun je rekenkundige bewerkingen gebruiken binnen een shellscript?

Rekenkundige bewerkingen kunnen worden uitgevoerd binnen een shellscript met behulp van verschillende ingebouwde methoden. De shell biedt mechanismen voor eenvoudige rekenkundige berekeningen met behulp van rekenkundige uitbreiding, zoals:

  1. Rekenkundige uitbreiding ($((…)))
  2. Gebruik expr-opdracht
  3. Met behulp van let Command

Hier is ons Shell-script waarin alle drie de methoden voor rekenkundige bewerkingen worden uitgelegd.

#!/bin/bash
getal1=10
aantal2=5

#Rekenkundige uitbreiding ($((…)))

resultaat=$((aantal1 + aantal2))
echo Som: $resultaat

#Expr-opdracht gebruiken

som=$(expr $num1 + $num2)
echo Som: $som

#Let-opdracht gebruiken

laat som = num1 + num2
echo Som: $som

Uitleg:

  1. `#!/bin/bash` : Dit is de shebang, waarin wordt gespecificeerd dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. `num1=10` en ` getal2=5` : Deze regels wijzen de waarden 10 en 5 toe aan de variabelen ` num1 ' en ' num2 ', respectievelijk.
  3. `#Rekenkundige uitbreiding ($((…)))` : Dit is een opmerking die het begin aangeeft van de sectie die de rekenkundige uitbreiding demonstreert.
  4. `resultaat=$((aantal1 + aantal2))` : Deze regel gebruikt rekenkundige expansie om de som van ` te berekenen num1 ' en ' num2 ` en slaat het resultaat op in de ` resultaat ` variabele.
  5. `echosom: $resultaat` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` resultaat ` variabele.
  6. `#Gebruik expr-opdracht` : Dit is een commentaar dat het begin aangeeft van de sectie die het gebruik van de ` uitspr ` commando voor rekenkundige bewerkingen.
  7. `som=$(expr $num1 + $num2)` : Deze regel gebruikt de ` uitspr ` commando om de som van ` te berekenen num1 ' en ' num2 ` en slaat het resultaat op in de ` som ` variabele. Merk op dat de ` uitspr Het commando ` vereist spaties rond de operatoren.
  8. `echo Som: $som` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` som ` variabele.
  9. `#Gebruik let-commando` : Dit is een commentaar dat het begin aangeeft van de sectie die het gebruik van de ` laten ` commando voor rekenkundige bewerkingen.
  10. `laat som = num1 + num2″` : Deze regel gebruikt de ` laten ` commando om de som van ` te berekenen num1 ' en ' num2 ' en wijst het resultaat toe aan de ' som ` variabele. De ` laten Het commando ` vereist geen spaties rond de operatoren.
  11. `echo Som: $som` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` som ` variabele.
rekenkundig

rekenkundig

28) Maak een script dat controleert of een netwerkhost bereikbaar is.

Hier is een eenvoudig shellscript dat de ping-opdracht gebruikt om te controleren of een netwerkhost bereikbaar is:

#!/bin/bash
gastheer=$1″
als [ -z $host ]; Dan
echogebruik: $0
uitgang 1
zijn
ping -c 4 $host

als [$? -eq 0]; Dan
echo $host is bereikbaar.
anders
echo $host is niet bereikbaar.
zijn

Uitleg:

  1. Het neemt een hostnaam of IP-adres als argument en controleert of het argument wordt opgegeven.
  2. Als er geen argument wordt opgegeven, wordt er een gebruiksbericht weergegeven en wordt het afgesloten.
  3. Het gebruikt het ping-commando met de optie -c 4 om vier ICMP-echoverzoeken naar de opgegeven host te sturen.
  4. Nadat de ping-opdracht is uitgevoerd, wordt de afsluitstatus ($?) gecontroleerd. Als de afsluitstatus 0 is, betekent dit dat de host bereikbaar is en dat het script een succesbericht afdrukt. Anders wordt er een foutbericht afgedrukt.

456

Opmerking : We moeten een hostnaam opgeven als argument bij het uitvoeren van het script. Hier hebben we google.com gebruikt

29) Schrijf een shellscript om het grootste element in een array te vinden:

Hier is een shellscript om het grootste element in een array te vinden.

#!/bin/bash
# Declareer een array
array=(3 56 24 89 67)

# Initialiseer een variabele om de maximale waarde op te slaan, te beginnen met het eerste element

max=${array[0]}

# Herhaal de array

voor num in ${array[@]}; Doen

# Vergelijk elk element met het huidige maximum

als ((aantal> max)); Dan
max=$num
zijn
klaar

# Druk de maximale waarde af

echo Het maximale element in de array is: $max

Uitleg:

  1. ` #!/bin/bash `: De shebang-regel specificeert dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. ` array=(3 56 24 89 67) `: De array wordt gedeclareerd en geïnitialiseerd met waarden.
  3. ` max=${array[0]} `: `max` wordt geïnitialiseerd met het eerste element van de array.
  4. ` voor num in ${array[@]}; Doen `: Een `for`-lus wordt gebruikt om door de elementen van de array te lopen.
  5. ` als ((aantal> max)); Dan `: Een `if`-instructie controleert of het huidige element `num` groter is dan het huidige maximum `max`.
  6. ` max=$num`: Als`aantal ` groter is dan `max`, `max` wordt bijgewerkt met de waarde num.
  7. ` klaar `: De `for`-lus is gesloten.
  8. ` echo Het maximale element in de array is: $max `: Ten slotte drukt het script de maximale waarde af die in de array is gevonden.
461

grootste aantal

30) Schrijf een script om de som van elementen in een array te berekenen.

#!/bin/bash

# Declareer een array

array=(1 65 22 19 94)

# Initialiseer een variabele om de som op te slaan

som=0

# Herhaal de array en voeg elk element toe aan de som

voor num in ${array[@]}; Doen
ben=$((ben + ben))
klaar

# Druk de som af

echo De som van de elementen in de array is: $sum

Uitleg:

` #!/bin/bash `: De shebang-regel specificeert dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.

` array=(1 65 22 19 94) `: De array wordt gedeclareerd en geïnitialiseerd met waarden.

` som=0 `:` som ` wordt geïnitialiseerd op nul om de som van de elementen vast te houden.

` voor num in ${array[@]}; Doen `: Een` voor ` lus wordt gebruikt om door de elementen van de array te lopen.

` ben=$((ben + ben)) `: Binnen de lus, elk element ` op een ` wordt toegevoegd aan ` som ` variabele.

` klaar `: De ` voor ' lus is gesloten.

`echo De som van de elementen in de array is: $sum`: Ten slotte drukt het script de som van alle elementen in de array af.

462

Som van elementen

Meer weten over Shell-scripts

Conclusie

We weten allemaal dat shell-script erg handig is om de werkproductiviteit te verhogen en ook tijd te besparen. Dus in dit artikel hebben we het besproken 30 zeer nuttige en meest conman shell-scriptvoorbeelden . We hopen dat deze complete handleiding over shell-scriptvoorbeelden u helpt alles over de shell-scripts te begrijpen.




uitgang 1
zijn

als [ ! -d $map]; Dan

echo Fout: ‘$directory’ is geen geldige map.
uitgang 1
zijn

cd $map || uitgang 1

voor bestand in *; Doen
if [ -f $bestand ]; Dan
nieuwenaam=$(echo $bestand | tr ‘A-Z’ ‘a-z’)
[ $bestand != $nieuwenaam ] && mv $bestand $nieuwenaam
zijn
klaar

Uitleg:

  1. #!/bin/bash : Dit is de shebang, waarin wordt gespecificeerd dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. map=″ : Deze regel wijst het eerste opdrachtregelargument toe aan de variabelenmap.
  3. if [ -z $map ]; Dan : Deze regel controleert of de mapvariabele leeg is (er wordt geen argument opgegeven bij het uitvoeren van het script).
  4. echogebruik:

    Voor alle Linux-distributies is het shellscript als een toverstaf die het proces automatiseert, gebruikers tijd bespaart en de productiviteit verhoogt. Deze zelfstudie voor scripting laat je kennismaken met de meer dan 25 voorbeelden van scripting.

    Maar voordat we verder gaan met het onderwerp shell-scripting Laten we, met voorbeelden, het shell-script en de daadwerkelijke gebruiksscenario's van shell-scripting begrijpen.

    Wat is Shell-script?

    Nou, de schaal is een CLI ( opdrachtregelinterpreter ), dat wordt uitgevoerd in een tekstvenster waarin gebruikers shell-opdrachten kunnen beheren en uitvoeren. Aan de andere kant wordt het proces van het schrijven van een reeks opdrachten die op een Linux-systeem moeten worden uitgevoerd. Een bestand dat dergelijke instructies bevat, wordt een bash-script genoemd.

    Gebruik van Shell-scripts

    Hieronder staan ​​enkele veelvoorkomende toepassingen van Shell Script:

    • Taakautomatisering – Het kan worden gebruikt om repetitieve taken te automatiseren, zoals regelmatige back-ups en software-installatietaken.
    • Maatwerk - Men kan shell-scripts gebruiken om de opdrachtregelomgeving te ontwerpen en de taak eenvoudig uit te voeren volgens de behoeften.
    • Bestandsbeheer - De shellscripts kunnen ook worden gebruikt voor het beheren en manipuleren van bestanden en mappen, zoals het verplaatsen, kopiëren, hernoemen of verwijderen van bestanden.

    Shell-scriptvoorbeelden in Linux

    1) Wat geeft de shebang (#!) aan het begin van een shellscript aan?

    De shebang (#!) aan het begin van een script geeft de tolk aan die moet worden gebruikt om het script uit te voeren. Het vertelt het systeem welke shell of tolk de opdrachten van het script moet interpreteren.

    Bijvoorbeeld: Stel dat we een script hebben met de naam mijnscript.sh geschreven in de Bash-shell:

    keet

    keet

    In dit voorbeeld:

    • De #!/bin/bash aan het begin van het script geeft aan dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
    • De echo-opdrachten worden gebruikt om berichten naar de terminal af te drukken.

    2) Hoe voer je een shellscript uit vanaf de opdrachtregel?

    Om een ​​shellscript vanaf de opdrachtregel uit te voeren, moeten we deze stappen volgen:

    • Zorg ervoor dat het scriptbestand uitvoerbare machtigingen heeft met behulp van de chmod-opdracht :
    chmod +x myscript.sh>
    • Voer het script uit met behulp van de bestandsnaam:
    ./myscript.sh>

    Hier moet je vervangen mijnscript.sh met uw scriptnaam.

    3) Schrijf een shellscript dat techcodeview.com naar de terminal afdrukt.

    Maak een scriptnaam `myscript.sh` (we gebruiken ` omdat ` editor, u kunt elke editor kiezen)

    vim myscript.sh>

    #!/bin/bash
    # Dit script drukt techcodeview.com af naar de terminal
    echo techcodeview.com

    print naam

    print naam

    We maken ons script uitvoerbaar door `chmod +x` te gebruiken en vervolgens uit te voeren met `./myscipt.sh` en krijgen de gewenste uitvoer techcodeview.com.

    4) Leg het doel uit van het echo-commando in shell-scripting.

    De echo-opdracht wordt gebruikt om tekst of variabelen op de terminal weer te geven. Het wordt vaak gebruikt voor het afdrukken van berichten, variabele waarden en het genereren van programma-uitvoer.

    434

    echo-opdracht

    In dit voorbeeld moeten we `echo` rechtstreeks op terminal uitvoeren, omdat het binnen het shell-script hetzelfde werkt.

    5) Hoe kun je een waarde toewijzen aan een variabele in een shellscript?

    Aan variabelen worden waarden toegewezen met behulp van de toewijzingsoperator =.

    Bijvoorbeeld:

    #!/bin/bash
    # Een waarde aan een variabele toekennen
    naam=Jayesh
    leeftijd = 21
    echo $naam $leeftijd

    Uitleg:

    • Aan de naamvariabele wordt de waarde Jayesh toegewezen.
    • De leeftijdsvariabele krijgt de waarde 21.
    • echo wordt gebruikt om af te drukken en `$name` `$age` wordt gebruikt om de waarde aan te roepen die in de variabelen is opgeslagen.

    435

    6) Schrijf een shellscript dat de naam van een gebruiker als invoer neemt en deze begroet.

    Maak een scriptnaam `example.sh`.

    #!/bin/bash
    # Vraag de gebruiker naar zijn naam
    echo Hoe heet je?
    lees naam
    # Begroet de gebruiker
    echo Hallo, $naam! Aangenaam.

    Uitleg:

    • #!/bin/bash: Dit is de shebang-regel. Het vertelt het systeem dat het de Bash-interpreter moet gebruiken om het script uit te voeren.
    • # Vraag de gebruiker naar zijn naam: Dit is een opmerking. Het biedt context over de komende code. Opmerkingen worden door de tolk genegeerd.
    • echo Hoe heet je?: Het echo-commando wordt gebruikt om de tekst tussen dubbele aanhalingstekens op de terminal weer te geven.
    • leesnaam: Het leescommando wacht tot de gebruiker tekst invoert en slaat deze op in de variabelenaam.
    • echo Hallo, $naam! Leuk je te ontmoeten.: Deze regel gebruikt het echo-commando om een ​​begroetingsbericht af te drukken dat de waarde bevat van de naamvariabele, die is verzameld uit de invoer van de gebruiker.

    436

    7) Hoe voeg je commentaar toe aan een shellscript?

    Opmerkingen in shell-scripting worden gebruikt om uitleg of context aan de code te geven. Ze worden door de tolk genegeerd en zijn alleen bedoeld voor mensen die het script lezen. U kunt opmerkingen toevoegen met het #-symbool.

    #!/bin/bash
    # Dit is een commentaar waarin het doel van het script wordt uitgelegd
    echo gfg

    8) Maak een shellscript dat controleert of een bestand in de huidige map bestaat.

    Hier is een script dat controleert of een bestand met de naam example.txt in de huidige map bestaat:

    #!/bin/bash
    bestand=voorbeeld.txt
    # Controleer of het bestand bestaat
    if [ -e $bestand ]; Dan
    echo Bestand bestaat: $file
    anders
    echo Bestand niet gevonden: $file
    zijn

    Uitleg:

    1. #!/bin/bash: Dit is de shebang-regel die de tolk (/bin/bash) specificeert die moet worden gebruikt voor het uitvoeren van het script.
    2. file=example.txt: Deze regel definieert het variabele bestand en wijst er de waarde example.txt aan toe. U kunt dit vervangen door de naam van het bestand waarop u wilt controleren.
    3. if [ -e $bestand ]; then: Deze regel start een if-statement. De voorwaarde [ -e $file ] controleert of het bestand dat wordt opgegeven door de waarde van de bestandsvariabele bestaat. De vlag -e wordt gebruikt om te controleren of het bestand bestaat.
    4. echo Bestand bestaat: $file: Als de voorwaarde waar is (dat wil zeggen: het bestand bestaat), wordt op deze regel een bericht afgedrukt dat aangeeft dat het bestand bestaat, samen met de naam van het bestand.
    5. else: Als de voorwaarde onwaar is (dat wil zeggen: het bestand bestaat niet), voert het script de code uit onder de else-vertakking.
    6. echo Bestand niet gevonden: $file: Deze regel geeft een foutmelding weer die aangeeft dat het opgegeven bestand niet is gevonden, samen met de bestandsnaam.
    7. fi: Deze regel markeert het einde van de if-instructie.
    Bestand zoeken

    Bestand zoeken

    9) Wat is het verschil tussen enkele aanhalingstekens (‘) en dubbele aanhalingstekens () in shell-scripting?

    Enkele aanhalingstekens (‘) en dubbele aanhalingstekens () worden gebruikt om tekenreeksen in shell-scripting te omsluiten, maar ze gedragen zich verschillend:

    • Enkele aanhalingstekens: Alles tussen enkele aanhalingstekens wordt behandeld als een letterlijke tekenreeks. Variabelenamen en de meeste speciale tekens worden niet uitgevouwen.
    • Dubbele aanhalingstekens: Variabelen en bepaalde speciale tekens binnen dubbele aanhalingstekens worden uitgevouwen. De inhoud is onderhevig aan variabele vervanging en opdrachtvervanging.

    #!/bin/bash

    abcd=Hallo
    echo ‘$abcd’ # Uitvoer: $abcd
    echo $abcd # Uitvoer: Hallo

    10) Hoe kunt u opdrachtregelargumenten gebruiken in een shellscript?

    Opdrachtregelargumenten zijn waarden die aan een script worden verstrekt wanneer het wordt uitgevoerd. Ze zijn binnen het script toegankelijk met behulp van speciale variabelen zoals $1, $2, etc., waarbij $1 het eerste argument vertegenwoordigt, $2 het tweede argument, enzovoort.

    Bijvoorbeeld: Als onze scriptnaam `example.sh`

    #!/bin/bash

    echo Scriptnaam: $0
    echo Eerste argument: $1
    echo Tweede argument: $2

    Als we het script uitvoeren met `.example.sh hello_1 hello_2`, zal het het volgende opleveren:

    cli argumenten

    cli argumenten

    11) Hoe gebruik je de for-lus om een ​​lijst met waarden te doorlopen?

    Maak een scriptnaam `example.sh`.

    #!/bin/bash

    fruits=(appel banaan kersen dadel)
    voor fruit in ${fruits[@]}; Doen
    echo Huidig ​​fruit: $fruit
    klaar

    Uitleg:

    De lijn `fruits=` creëert een array met de naam fruit met vier elementen: appel, banaan, kers en dadel.

    • voor fruit in ${fruits[@]}; do: Deze regel start een for-lus. Dit is wat elk onderdeel betekent:
    • voor fruit: Dit declareert een lusvariabele genaamd fruit. In elke iteratie van de lus behoudt fruit de waarde van het huidige element uit de fruits-array.
    • ${fruits[@]}: Dit is een array-uitbreiding die alle elementen uit de fruits-array overneemt. De syntaxis ${…} zorgt ervoor dat elk element als een afzonderlijk item wordt behandeld.
    • do: Dit trefwoord markeert het begin van de lusbody.
    • echo Huidig ​​fruit: $fruit: Binnen de lus gebruikt deze regel het echo-commando om de huidige waarde van de lusvariabele fruit weer te geven. Er wordt een bericht afgedrukt als Huidig ​​fruit: appel voor elk fruit in de array.
    • done: Dit trefwoord markeert het einde van de lusbody. Het vertelt het script dat de lus is voltooid.
    for loop

    for loop

    12) Schrijf een shellscript dat de som van gehele getallen van 1 tot N berekent met behulp van een lus.

    Maak een scriptnaam `example.sh`.

    #!/bin/bash

    echo Voer een getal in (N):
    lees N
    som=0
    voor (( i=1; i<=$N; i++ )); Doen
    som=$((som + i))
    klaar
    echo De som van gehele getallen van 1 tot $N is: $sum

    Uitleg:
    Het script begint met de vraag om een ​​getal (N) in te voeren met behulp van read. Dit getal bepaalt hoe vaak de lus wordt uitgevoerd.

    1. De variabele som wordt geïnitialiseerd op 0. Deze variabele houdt de som van gehele getallen bij.
    2. De for-lus begint met for (( i=1; i<=$N; i++ )). Deze lusstructuur wordt gebruikt om een ​​reeks acties een bepaald aantal keren te herhalen, in dit geval van 1 tot de waarde van N.
    3. Binnen de lus gebeuren deze dingen:
      • i=1 stelt de lusvariabele i in op 1 aan het begin van elke iteratie.
      • De lusvoorwaarde i<=$N controleert of i nog steeds kleiner is dan of gelijk is aan het gegeven getal N.
      • Als de voorwaarde waar is, wordt de lusbody uitgevoerd.
      • sum=$((sum + i)) berekent de nieuwe waarde van sum door de huidige waarde van i erbij op te tellen. Dit telt de gehele getallen van 1 op tot de huidige i-waarde.
    4. Na elke iteratie verhoogt i++ de waarde van i met 1.
    5. De lus blijft lopen totdat de voorwaarde i<=$N onwaar wordt (wanneer i groter wordt dan N).
    6. Zodra de lus is voltooid, geeft het script de som weer van de gehele getallen van 1 tot het ingevoerde getal N.

    439

    13) Maak een script dat naar een specifiek woord in een bestand zoekt en het aantal keren dat het voorkomt telt.

    Maak een scriptnaam `word_count.sh`

    #!/bin/bash

    echo Voer het woord in waarnaar u wilt zoeken:
    lees doel_woord
    echo Voer de bestandsnaam in:
    lees bestandsnaam
    count=$(grep -o -w $doelwoord $bestandsnaam | wc -l)
    echo Het woord ‘$target_word’ verschijnt $count keer in ‘$filename’.

    Uitleg:

    • echo Voer het woord in waarnaar moet worden gezocht:: Op deze regel wordt een bericht weergegeven waarin de gebruiker wordt gevraagd een woord in te voeren waarnaar hij wil zoeken in een bestand.
    • read target_word: Deze regel leest de invoer van de gebruiker en slaat deze op in een variabele met de naam target_word.
    • echo Voer de bestandsnaam in:: Op deze regel wordt een bericht weergegeven waarin de gebruiker wordt gevraagd de naam in te voeren van het bestand waarin hij wil zoeken.
    • lees bestandsnaam: Deze regel leest de invoer van de gebruiker en slaat deze op in een variabele met de naam bestandsnaam.
    • count=$(grep -o -w $target_word $filename | wc -l): Deze regel doet het hoofdwerk van het script. Laten we het verder uitsplitsen:
      • grep -o -w $target_word $filename: Dit deel van de opdracht zoekt naar exemplaren van het target_word in de opgegeven bestandsnaam. De opties -o en -w zorgen ervoor dat alleen overeenkomsten van hele woorden worden geteld.
      • |: Dit is een pipe, die de uitvoer van het vorige commando neemt en deze als invoer voor het volgende commando verzendt.
      • wc -l: Dit deel van de opdracht gebruikt de opdracht wc om het aantal regels in de invoer te tellen. De optie -l telt specifiek de regels.
      • De hele opdracht berekent het aantal keren dat het doelwoord in het bestand voorkomt en wijst dat aantal toe aan de variabele aantal

    441

    14) Leg de verschillen uit tussen standaarduitvoer (stdout) en standaardfout (stderr).

    Het belangrijkste verschil tussen standaarduitvoer (stdout) en standaardfout (stderr) is als volgt:

    • Standaarduitvoer (stdout): Dit is de standaarduitvoerstroom waar de reguliere uitvoer van een opdracht naartoe gaat. Het wordt standaard op de terminal weergegeven. U kunt het omleiden naar een bestand met behulp van>.
    • Standaardfout (stderr): Dit is de uitvoerstroom voor foutmeldingen en waarschuwingen. Het wordt ook standaard op de terminal weergegeven. U kunt het omleiden naar een bestand met behulp van 2>.

    15) Leg het concept van voorwaardelijke instructies in shell-scripting uit.

    Voorwaardelijke instructies in shell-scripting stellen ons in staat beslissingen te nemen en de stroom van ons script te controleren op basis van bepaalde voorwaarden. Ze zorgen ervoor dat ons script verschillende sets opdrachten kan uitvoeren, afhankelijk van of een bepaalde voorwaarde waar of onwaar is. De primaire voorwaardelijke instructies in shell-scripting zijn de if-instructie, de elif-instructie (optioneel) en de else-instructie (optioneel).

    Hier is de basisstructuur van een voorwaardelijke instructie in shell-scripting:

    als [voorwaarde]; Dan
    # Commando's die moeten worden uitgevoerd als de voorwaarde waar is
    elif [andere_voorwaarde]; Dan
    # Commando's die moeten worden uitgevoerd als een andere_voorwaarde waar is (optioneel)
    anders
    # Uit te voeren opdrachten als geen van de voorwaarden waar is (optioneel)
    zijn

    Uitleg:

    • [ condition ] = Commando dat de voorwaarde evalueert en een waar (0) of onwaar (niet-nul) afsluitstatus retourneert.
    • then = Het is een trefwoord dat aangeeft dat de daaropvolgende opdrachten worden uitgevoerd als de voorwaarde als waar wordt geëvalueerd.
    • elif = (afkorting van else if) Het is een sectie waarmee we aanvullende voorwaarden kunnen opgeven om te controleren.
    • else = het is een sectie die opdrachten bevat die worden uitgevoerd als geen van de voorwaarden waar is.
    • fi = Het is een trefwoord dat het einde van het voorwaardelijke blok markeert.

    16) Hoe lees je regels uit een bestand binnen een shellscript?

    Naar lees regels vanuit een bestand binnen een shellscript kunnen we verschillende methoden gebruiken, maar een gebruikelijke benadering is het gebruik van een while-lus in combinatie met de leesopdracht. Zo kunnen we het doen:

    #!/bin/bash
    bestand=/home/jayeshkumar/jayesh.txt
    # Controleer of het bestand bestaat
    if [ -e $bestand ]; Dan
    terwijl IFS= lees -r regel; Doen
    echo Regel gelezen: $line
    # Voeg hier uw verwerkingslogica toe
    klaar <$bestand
    anders
    echo Bestand niet gevonden: $file
    zijn

    Uitleg:

    1. #!/bin/bash: Dit is de shebang-regel die de tolk (/bin/bash) specificeert die moet worden gebruikt voor het uitvoeren van het script.
    2. file=/home/jayeshkumar/jayesh.txt: Deze regel definieert het variabele bestand en wijst het volledige pad toe aan het bestand jayesh.txt in de map /home/jayeshkumar. Wijzig dit pad zodat het overeenkomt met het daadwerkelijke pad van het bestand dat u wilt lezen.
    3. if [ -e $bestand ]; then: Deze regel start een if-statement. Er wordt gecontroleerd of het bestand dat is opgegeven door de variabele $file bestaat. De vlag -e controleert of het bestand bestaat.
    4. terwijl IFS= lees -r regel; do: Deze regel initieert een while-lus die regels uit het bestand leest.
      • IFS=: De IFS (Internal Field Separator) is ingesteld op een lege waarde om voorloop- en volgspaties te behouden.
      • read -r line: Dit leest de huidige regel uit het bestand en slaat deze op in de variabele regel.
    5. echo Line read: $line: Deze regel geeft de inhoud weer van de regel die uit het bestand is gelezen. De variabele $line bevat de inhoud van de huidige regel.
    6. # Voeg hier uw verwerkingslogica toe: Dit is een plaatsaanduiding voor commentaar waarin u uw eigen logica kunt toevoegen om elke regel te verwerken. U kunt bijvoorbeeld de regel analyseren, informatie extraheren of specifieke acties uitvoeren op basis van de inhoud.
    7. done <$file: Dit markeert het einde van de while-lus. De < $file leidt de inhoud van het bestand om zodat deze door de lus kan worden gelezen.
    8. else: Als het bestand niet bestaat (de voorwaarde in de if-instructie is false), voert het script de code uit onder de else-vertakking.
    9. echo Bestand niet gevonden: $file: Deze regel geeft een foutmelding weer die aangeeft dat het opgegeven bestand niet is gevonden.
    10. fi: Deze regel markeert het einde van de if-instructie.
    bestand lezen

    bestand lezen

    Hier gebruikten we ` pwd ` commando om het pad van de huidige map op te halen.

    17) Schrijf een functie in een shellscript die de faculteit van een bepaald getal berekent.

    Hier is het script datbereken de faculteitvan een bepaald getal.

    #!/bin/bash
    # Definieer een functie om faculteit te berekenen
    berekenen_factorial() {
    aantal=$1
    feit=1
    voor ((i=1; i<=getal; i++)); Doen
    feit=$((feit * i))
    klaar
    echo $ feit
    }
    # Vraag de gebruiker om een ​​nummer in te voeren
    echo Voer een getal in:
    lees invoer_getal
    # Roep de functie 'calculate_factorial' aan met het invoernummer
    factorial_result=$(calculate_factorial $input_num)
    # Geef het faculteitsresultaat weer
    echo Faculteit van $input_num is: $factorial_result

    Uitleg:

    1. Het script begint met de regel #!/bin/bash om de tolk op te geven.
    2. berekenen_factorial() is gedefinieerd als een functie. Er is één argument nodig, num, wat het getal is waarvoor de faculteit moet worden berekend.
    3. Binnen de functie wordt feit geïnitialiseerd op 1. Deze variabele slaat het faculteitsresultaat op.
    4. De for-lus itereert van 1 naar het opgegeven getal (num). In elke iteratie vermenigvuldigt het de huidige feitelijke waarde met de lusindex i.
    5. Nadat de lus is voltooid, bevat de feitvariabele de berekende faculteit.
    6. Het script vraagt ​​de gebruiker om een ​​getal in te voeren met behulp van read.
    7. De functie ‘calculate_factorial’ wordt aangeroepen met het door de gebruiker opgegeven getal, en het resultaat wordt opgeslagen in de variabele factorial_result.
    8. Ten slotte geeft het script het berekende factoriële resultaat weer.
    Factorieel

    Factorieel

    18) Hoe ga je om met signalen als Ctrl+C in een shellscript?

    In een shellscript kun je signalen zoals Ctrl+C (ook bekend als SIGINT) verwerken met behulp van het trap-commando. Ctrl+C genereert een SIGINT-signaal wanneer de gebruiker erop drukt om het actieve script of programma te onderbreken. Door het trap-commando te gebruiken, kunt u de acties opgeven die moeten worden ondernomen wanneer een bepaald signaal wordt ontvangen. Zo verwerkt u signalen zoals Ctrl+C in een shellscript:

    #!/bin/bash
    opruimen() {
    echo Script onderbroken. Opruimen uitvoeren…
    # Voeg hier uw opruimacties toe
    uitgang 1
    }
    # Stel een trap in om de opruimfunctie aan te roepen wanneer Ctrl+C (SIGINT) wordt ontvangen
    valopruiming SIGINT
    # Rest van je script
    echo Rennen...
    slapen 10
    echo Klaar.

    Het omgaan met signalen is belangrijk om scripts robuust te maken en ervoor te zorgen dat ze onverwachte onderbrekingen netjes afhandelen. U kunt de opschoonfunctie aanpassen aan uw specifieke behoeften, zoals het sluiten van bestanden, het stoppen van processen of het loggen van informatie voordat het script wordt afgesloten.

    Uitleg:

    1. #!/bin/bash: Deze shebang-regel specificeert de tolk die moet worden gebruikt voor het uitvoeren van het script.
    2. cleanup() { … }: Dit definieert een functie met de naam cleanup. Binnen deze functie kunt u alle acties opnemen die moeten worden uitgevoerd wanneer het script wordt onderbroken, zoals het sluiten van bestanden, het vrijgeven van bronnen of het uitvoeren van andere opruimtaken.
    3. trap opruimen SIGINT: Het trap-commando wordt gebruikt om een ​​signaalhandler in te stellen. In dit geval specificeert het dat wanneer het SIGINT-signaal (Ctrl+C) wordt ontvangen, de opschoonfunctie moet worden uitgevoerd.
    4. echo Running…, sleep 10, echo Finished.: Dit zijn slechts voorbeeldopdrachten om de uitvoering van een script te simuleren.

    446

    19) Maak een script dat dubbele regels in een tekstbestand controleert en verwijdert.

    Hier is ons Linux-script waarin we dubbele regels uit een tekstbestand zullen verwijderen.

    #!/bin/bash
    invoer_bestand=invoer.txt
    uitvoer_bestand=uitvoer.txt
    sorteer $input_file | uniq> $output_file
    echo Dubbele regels zijn succesvol verwijderd.

    Uitleg:

    1. Het script begint met een shebang (#!/bin/bash), wat aangeeft dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. De variabele input_file wordt ingesteld op de naam van het invoerbestand dat dubbele regels bevat (wijzig dit in de werkelijke naam van het invoerbestand).
    3. De output_file variabele wordt ingesteld op de naam van het uitvoerbestand waar de duplicaten zullen worden verwijderd (wijzig dit in de gewenste uitvoerbestandsnaam).
    4. Het script gebruikt het sorteercommando om de regels in het invoerbestand te sorteren. Door de regels te sorteren, worden dubbele regels gegroepeerd.
    5. De gesorteerde regels worden vervolgens door het uniq-commando geleid, dat opeenvolgende dubbele regels verwijdert. De uitvoer van dit proces wordt omgeleid naar het uitvoerbestand.
    6. Nadat de duplicaten zijn verwijderd, drukt het script een succesbericht af.
    dubbele regel verwijderen

    dubbele regel verwijderen

    Hier gebruiken we ` kat ` om de tekst in het tekstbestand weer te geven.

    20) Schrijf een script dat een veilig willekeurig wachtwoord genereert.

    Hier is ons script om een ​​veilig willekeurig wachtwoord te genereren.

    #!/bin/bash
    # Functie om een ​​willekeurig wachtwoord te genereren
    Genereer wachtwoord() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Roep de functie op en sla het gegenereerde wachtwoord op
    wachtwoord=$(genereer_wachtwoord)
    echo Gegenereerd wachtwoord: $password

    Opmerking: De gebruiker kan de lengte van zijn wachtwoord dienovereenkomstig wijzigen door het getal `12` te vervangen.

    Uitleg:

    1. Het script begint met een shebang (#!/bin/bash), wat aangeeft dat het moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. De functie genereren_wachtwoord is gedefinieerd om een ​​willekeurig wachtwoord te genereren. Dit is hoe het werkt:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 verdeelt de gefilterde willekeurige gegevens in regels met een breedte van elk 12 tekens.
      • head -n 1 selecteert de eerste regel, waardoor we feitelijk een willekeurige reeks tekens met een lengte van 12 krijgen.
    3. Aan de wachtwoordvariabele wordt het resultaat toegewezen van het aanroepen van de functie genereren_wachtwoord.
    4. Ten slotte wordt het gegenereerde wachtwoord weergegeven met behulp van echo.

    448

    21) Schrijf een shellscript dat de totale grootte van alle bestanden in een map berekent.

    Hier is een shellscript om de totale grootte van alle bestanden in een map te berekenen.

    #!/bin/bash
    map=/pad/naar/uw/map
    total_size=$(du -csh $directory | grep totaal | awk ‘{print $1}’)
    echo Totale grootte van bestanden in $directory: $total_size

    Uitleg:

    1. Het script begint met #!/bin/bash shebang, wat aangeeft dat het moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. De mapvariabele wordt ingesteld op het pad van de map waarvoor u de totale bestandsgrootte wilt berekenen. Vervang /pad/naar/uw/directory door het daadwerkelijke pad.
    3. De opdracht du wordt gebruikt om het gebruik van de bestandsruimte te schatten. De gebruikte opties zijn:
      • -c: Produceer een eindtotaal.
      • -s: Geef alleen de totale grootte van de opgegeven map weer.
      • -h: afdrukformaten in een voor mensen leesbaar formaat (bijvoorbeeld KB, MB, GB).
    4. De uitvoer van du wordt doorgesluisd naar grep total om de regel uit te filteren die de totale grootte bevat.
    5. awk ‘{print $1}’ wordt gebruikt om het eerste veld (totale grootte) uit de regel te extraheren.
    6. De berekende totale grootte wordt opgeslagen in de variabele total_size.
    7. Ten slotte geeft het script de totale grootte weer met behulp van echo.
    Totale grootte van bestanden

    Totale grootte van bestanden

    Hier gebruikten we ` pwd ` commando om het huidige mappad te zien.

    22) Leg het verschil uit tussen if- en elif-instructies in shell-scripting.

    Functie `als`Staffement `elif`-verklaring
    Doel Leg het verschil uit tussen if- en elif-instructies in shell-scripting. Biedt alternatieve voorwaarden om te controleren of de initiële if-voorwaarde onwaar is.
    gebruik Gebruikt voor de begintoestand. Wordt gebruikt na de initiële if-voorwaarde om aanvullende voorwaarden te controleren.
    aantal blokken Kan er maar één hebben als blok. Kan meerdere elif-blokken hebben, maar slechts één ander blok (optioneel).
    Executie Voert het codeblok uit dat is gekoppeld aan de if-instructie als de voorwaarde waar is. Als de voorwaarde onwaar is, wordt het else-blok (indien aanwezig) uitgevoerd (optioneel). Controleert elke elif-voorwaarde op volgorde. Als één elif-voorwaarde waar is, wordt het corresponderende codeblok uitgevoerd en verlaat het script het volledige voorwaardelijke blok. Als geen van de elif-voorwaarden waar is, wordt het else-blok (indien aanwezig) uitgevoerd.
    Geneste structuren Kan worden genest in andere if-, elif- of else-blokken. Kan niet in een ander elif-blok worden genest, maar kan wel in een if- of else-blok worden gebruikt.

    Laten we het aan de hand van een voorbeeld begrijpen.

    #!/bin/bash
    aantal=5
    if [$nummer -gt 10]; Dan
    echo $getal is groter dan 10
    anders
    echo $number is niet groter dan 10
    zijn
    echo ——–
    if [$nummer -gt 10]; Dan
    echo $getal is groter dan 10
    elif [ $getal -eq 10 ]; Dan
    echo $getal is gelijk aan 10
    anders
    echo $getal is kleiner dan 10
    zijn

    Uitleg:

    In dit voorbeeld controleert het eerste if-blok of getal groter is dan 10. Als dit niet het geval is, wordt er een bericht afgedrukt dat aangeeft dat het getal niet groter is dan 10. Het tweede blok met elif-instructies controleert meerdere voorwaarden opeenvolgend totdat een van deze waar is. In dit geval zal de uitvoer, aangezien de waarde van getal 5 is:

    if_elif verschil

    if_elif verschil

    23) Hoe gebruik je een while-lus om herhaaldelijk opdrachten uit te voeren?

    Een while-lus wordt gebruikt in shell-scripts om herhaaldelijk een reeks opdrachten uit te voeren zolang een opgegeven voorwaarde waar is. De lus gaat door met het uitvoeren van de opdrachten totdat de voorwaarde onwaar wordt.

    Hier is de basissyntaxis van een while-lus:

    terwijl [voorwaarde]; Doen
    # Uit te voeren opdrachten
    klaar

    Uitleg:

    1. De 'while'-lus begint met het sleutelwoord 'while', gevolgd door een voorwaarde tussen vierkante haakjes '[ ]'.
    2. De body van de lus, die de uit te voeren opdrachten bevat, wordt omsloten door de trefwoorden `do` en `done`.
    3. De lus controleert eerst de toestand. Als de voorwaarde waar is, worden de opdrachten binnen de lusbody uitgevoerd. Nadat de lusbody is uitgevoerd, wordt de voorwaarde opnieuw gecontroleerd en herhaalt het proces zich totdat de voorwaarde onwaar wordt.

    Voorbeeld: Als we getallen van 1 tot 5 willen afdrukken

    #!/bin/bash
    teller=1
    while [ $counter -le 5 ]; Doen
    echo-nummer: $counter
    teller=$((teller + 1))
    klaar

    Uitleg:

    • De tellervariabele is ingesteld op 1.
    • De while-lus controleert of de waarde van counter kleiner dan of gelijk is aan 5. Zolang deze voorwaarde waar is, gaat de lus door met uitvoeren.
    • Binnen de lus wordt de huidige waarde van de teller afgedrukt met behulp van echo.
    • De teller wordt met 1 verhoogd met behulp van de uitdrukking $((teller + 1)).
    herhalingslus

    herhalingslus

    24) Maak een shellscript dat alle lege bestanden in een map vindt en vermeldt.

    Shell-script dat u kunt gebruiken om alle lege bestanden in een map te vinden en weer te geven met behulp van de opdrachten `find` en `stat`:

    #!/bin/bash
    map=$1″
    if [ -z $map ]; Dan
    echogebruik: $0
    uitgang 1
    zijn

    als [ ! -d $map]; Dan
    echo Fout: ‘$directory’ is geen geldige map.
    uitgang 1
    zijn
    echo Lege bestanden in $directory:
    zoek $directory -type f -leeg

    Uitleg:

    1. ` #!/bin/bash `: Dit wordt een shebang genoemd en vertelt het besturingssysteem om de Bash-shell te gebruiken om het script te interpreteren en uit te voeren.
    2. ` map=$1″ `: Deze regel wijst het eerste opdrachtregelargument (aangeduid met $1) toe aan de variabele ` map `.
    3. ` if [ -z $map ]; Dan `: Deze regel start een if-instructie die controleert of de ` map ` variabele is leeg (-z test voor een lege string).
    4. ` echogebruik: $0 `: Als de directory leeg is, drukt deze regel een gebruiksbericht af, waarbij ` $ 0 ` vertegenwoordigt de naam van het script.
    5. ` uitgang 1 `: Deze regel sluit het script af met de afsluitcode ` 1 ', wat een fout aangeeft.
    6. ` zijn `: Deze regel markeert het einde van de ` als ` verklaring.
    7. ` als [ ! -d $map]; Dan `: Dit start een nieuwe if-instructie om te controleren of de opgegeven map bestaat (` -D ` tests voor een directory).
    8. ` echo Fout: ‘$directory’ is geen geldige map. `: Als de opgegeven directory niet bestaat, drukt deze regel een foutmelding af.
    9. ` uitgang 1 `: Sluit het script af met de afsluitcode ` 1 `.
    10. ` zijn `: Markeert het einde van de tweede ` als` stelling.
    11. ` echo Lege bestanden in $directory: `: Als alles tot nu toe geldig is, drukt deze regel een bericht af dat aangeeft dat het script lege bestanden in de opgegeven map zal weergeven.
    12. ` zoek $directory -type f -leeg `: Deze regel gebruikt de ` vinden ` commando om te zoeken naar lege bestanden (` -leeg `) van het type gewone bestanden (` -type f `) in de opgegeven map. Vervolgens worden deze lege bestanden weergegeven.
    Lege bestanden vinden

    Lege bestanden vinden

    Opmerking : We moeten een map opgeven als argument bij het uitvoeren van het script. Hier hebben we het pad van de huidige map home/jayeshkumar/ gebruikt

    25) Wat is het doel van het leescommando in shell-scripting?

    Met de leesopdracht in shell-scripting kan het script u om informatie vragen. Het is alsof een computer je een vraag stelt en op je antwoord wacht. Dit is handig voor scripts waarbij u iets moet typen of wanneer het script moet werken met informatie uit bestanden. De leesopdracht helpt het script te stoppen en te wachten op wat u typt, en vervolgens kan het die informatie gebruiken om meer dingen in het script te doen.

    Syntaxis van leesopdracht:

    read variable_name>

    Voorbeeld : Als we de naam als invoer van de gebruiker willen gebruiken om deze af te drukken.

    #!/bin/bash
    echo Voer uw naam in:
    lees naam
    echo Hallo, $naam!

    453

    lees naam

    Samenvattend wordt het leescommando gebruikt om gebruikersinvoer of gegevens uit bestanden binnen shell-scripts vast te leggen, waardoor de scripts interactiever en veelzijdiger worden.

    26) Schrijf een shellscript dat alle bestandsnamen in een map naar kleine letters converteert.

    Hier is een shellscript dat alle bestandsnamen in een map naar kleine letters converteert.

    #!/bin/bash
    map=$1″
    if [ -z $map ]; Dan
    echogebruik: $0
    uitgang 1
    zijn

    als [ ! -d $map]; Dan

    echo Fout: ‘$directory’ is geen geldige map.
    uitgang 1
    zijn

    cd $map || uitgang 1

    voor bestand in *; Doen
    if [ -f $bestand ]; Dan
    nieuwenaam=$(echo $bestand | tr ‘A-Z’ ‘a-z’)
    [ $bestand != $nieuwenaam ] && mv $bestand $nieuwenaam
    zijn
    klaar

    Uitleg:

    1. #!/bin/bash : Dit is de shebang, waarin wordt gespecificeerd dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. map=$1″ : Deze regel wijst het eerste opdrachtregelargument toe aan de variabelenmap.
    3. if [ -z $map ]; Dan : Deze regel controleert of de mapvariabele leeg is (er wordt geen argument opgegeven bij het uitvoeren van het script).
    4. echogebruik: $0 : Als de map leeg is, drukt deze regel een gebruiksbericht af met de naam van het script ($0).
    5. uitgang 1 : deze regel sluit het script af met de afsluitcode 1, wat aangeeft dat er een fout is opgetreden.
    6. F i: Dit markeert het einde van de eerste if-instructie.
    7. als [ ! -d $map]; Dan : Deze regel controleert of de opgegeven map niet bestaat (-d test voor een map).
    8. echo Fout: ‘$directory’ is geen geldige map. : Als de opgegeven map niet bestaat, drukt deze regel een foutmelding af.
    9. uitgang 1 : Sluit het script af met de afsluitcode 1.
    10. zijn : Markeert het einde van de tweede if-instructie.
    11. cd $map || uitgang 1 : Wijzigt de huidige werkmap naar de opgegeven map. Als het wijzigen van de map mislukt (bijvoorbeeld als de map niet bestaat), wordt het script afgesloten met een foutcode.
    12. voor bestand in *; Doen: I voor bestand in *; Doen: zorgt voor een lus die alle items in de huidige map doorloopt (* komt overeen met alle bestandsnamen).
    13. if [ -f $bestand ]; Dan : Controleert of het huidige lus-iteratie-item een ​​normaal bestand is (-f test voor een normaal bestand).
    14. nieuwenaam=$(echo $bestand | tr ‘A-Z’ ‘a-z’) : Converteert de huidige bestandsnaam ($file) naar kleine letters met behulp van de opdracht tr en slaat het resultaat op in de variabele newname.
    15. [ $bestand != $nieuwenaam ] && mv $bestand $nieuwenaam : Vergelijkt de oorspronkelijke bestandsnaam met de nieuwe bestandsnaam in kleine letters. Als ze verschillend zijn, wordt de naam van het bestand gewijzigd met behulp van de opdracht mv.
    16. zijn : Markeert het einde van de innerlijke if-instructie.
    17. klaar : Markeert het einde van de lus.

    454

    Opmerking : We moeten een map opgeven als argument bij het uitvoeren van het script. Hier hebben we het pad van de huidige map home/jayeshkumar/test gebruikt

    27) Hoe kun je rekenkundige bewerkingen gebruiken binnen een shellscript?

    Rekenkundige bewerkingen kunnen worden uitgevoerd binnen een shellscript met behulp van verschillende ingebouwde methoden. De shell biedt mechanismen voor eenvoudige rekenkundige berekeningen met behulp van rekenkundige uitbreiding, zoals:

    1. Rekenkundige uitbreiding ($((…)))
    2. Gebruik expr-opdracht
    3. Met behulp van let Command

    Hier is ons Shell-script waarin alle drie de methoden voor rekenkundige bewerkingen worden uitgelegd.

    #!/bin/bash
    getal1=10
    aantal2=5

    #Rekenkundige uitbreiding ($((…)))

    resultaat=$((aantal1 + aantal2))
    echo Som: $resultaat

    #Expr-opdracht gebruiken

    som=$(expr $num1 + $num2)
    echo Som: $som

    #Let-opdracht gebruiken

    laat som = num1 + num2
    echo Som: $som

    Uitleg:

    1. `#!/bin/bash` : Dit is de shebang, waarin wordt gespecificeerd dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. `num1=10` en ` getal2=5` : Deze regels wijzen de waarden 10 en 5 toe aan de variabelen ` num1 ' en ' num2 ', respectievelijk.
    3. `#Rekenkundige uitbreiding ($((…)))` : Dit is een opmerking die het begin aangeeft van de sectie die de rekenkundige uitbreiding demonstreert.
    4. `resultaat=$((aantal1 + aantal2))` : Deze regel gebruikt rekenkundige expansie om de som van ` te berekenen num1 ' en ' num2 ` en slaat het resultaat op in de ` resultaat ` variabele.
    5. `echosom: $resultaat` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` resultaat ` variabele.
    6. `#Gebruik expr-opdracht` : Dit is een commentaar dat het begin aangeeft van de sectie die het gebruik van de ` uitspr ` commando voor rekenkundige bewerkingen.
    7. `som=$(expr $num1 + $num2)` : Deze regel gebruikt de ` uitspr ` commando om de som van ` te berekenen num1 ' en ' num2 ` en slaat het resultaat op in de ` som ` variabele. Merk op dat de ` uitspr Het commando ` vereist spaties rond de operatoren.
    8. `echo Som: $som` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` som ` variabele.
    9. `#Gebruik let-commando` : Dit is een commentaar dat het begin aangeeft van de sectie die het gebruik van de ` laten ` commando voor rekenkundige bewerkingen.
    10. `laat som = num1 + num2″` : Deze regel gebruikt de ` laten ` commando om de som van ` te berekenen num1 ' en ' num2 ' en wijst het resultaat toe aan de ' som ` variabele. De ` laten Het commando ` vereist geen spaties rond de operatoren.
    11. `echo Som: $som` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` som ` variabele.
    rekenkundig

    rekenkundig

    28) Maak een script dat controleert of een netwerkhost bereikbaar is.

    Hier is een eenvoudig shellscript dat de ping-opdracht gebruikt om te controleren of een netwerkhost bereikbaar is:

    #!/bin/bash
    gastheer=$1″
    als [ -z $host ]; Dan
    echogebruik: $0
    uitgang 1
    zijn
    ping -c 4 $host

    als [$? -eq 0]; Dan
    echo $host is bereikbaar.
    anders
    echo $host is niet bereikbaar.
    zijn

    Uitleg:

    1. Het neemt een hostnaam of IP-adres als argument en controleert of het argument wordt opgegeven.
    2. Als er geen argument wordt opgegeven, wordt er een gebruiksbericht weergegeven en wordt het afgesloten.
    3. Het gebruikt het ping-commando met de optie -c 4 om vier ICMP-echoverzoeken naar de opgegeven host te sturen.
    4. Nadat de ping-opdracht is uitgevoerd, wordt de afsluitstatus ($?) gecontroleerd. Als de afsluitstatus 0 is, betekent dit dat de host bereikbaar is en dat het script een succesbericht afdrukt. Anders wordt er een foutbericht afgedrukt.

    456

    Opmerking : We moeten een hostnaam opgeven als argument bij het uitvoeren van het script. Hier hebben we google.com gebruikt

    29) Schrijf een shellscript om het grootste element in een array te vinden:

    Hier is een shellscript om het grootste element in een array te vinden.

    #!/bin/bash
    # Declareer een array
    array=(3 56 24 89 67)

    # Initialiseer een variabele om de maximale waarde op te slaan, te beginnen met het eerste element

    max=${array[0]}

    # Herhaal de array

    voor num in ${array[@]}; Doen

    # Vergelijk elk element met het huidige maximum

    als ((aantal> max)); Dan
    max=$num
    zijn
    klaar

    # Druk de maximale waarde af

    echo Het maximale element in de array is: $max

    Uitleg:

    1. ` #!/bin/bash `: De shebang-regel specificeert dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. ` array=(3 56 24 89 67) `: De array wordt gedeclareerd en geïnitialiseerd met waarden.
    3. ` max=${array[0]} `: `max` wordt geïnitialiseerd met het eerste element van de array.
    4. ` voor num in ${array[@]}; Doen `: Een `for`-lus wordt gebruikt om door de elementen van de array te lopen.
    5. ` als ((aantal> max)); Dan `: Een `if`-instructie controleert of het huidige element `num` groter is dan het huidige maximum `max`.
    6. ` max=$num`: Als`aantal ` groter is dan `max`, `max` wordt bijgewerkt met de waarde num.
    7. ` klaar `: De `for`-lus is gesloten.
    8. ` echo Het maximale element in de array is: $max `: Ten slotte drukt het script de maximale waarde af die in de array is gevonden.
    461

    grootste aantal

    30) Schrijf een script om de som van elementen in een array te berekenen.

    #!/bin/bash

    # Declareer een array

    array=(1 65 22 19 94)

    # Initialiseer een variabele om de som op te slaan

    som=0

    # Herhaal de array en voeg elk element toe aan de som

    voor num in ${array[@]}; Doen
    ben=$((ben + ben))
    klaar

    # Druk de som af

    echo De som van de elementen in de array is: $sum

    Uitleg:

    ` #!/bin/bash `: De shebang-regel specificeert dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.

    ` array=(1 65 22 19 94) `: De array wordt gedeclareerd en geïnitialiseerd met waarden.

    ` som=0 `:` som ` wordt geïnitialiseerd op nul om de som van de elementen vast te houden.

    ` voor num in ${array[@]}; Doen `: Een` voor ` lus wordt gebruikt om door de elementen van de array te lopen.

    ` ben=$((ben + ben)) `: Binnen de lus, elk element ` op een ` wordt toegevoegd aan ` som ` variabele.

    ` klaar `: De ` voor ' lus is gesloten.

    `echo De som van de elementen in de array is: $sum`: Ten slotte drukt het script de som van alle elementen in de array af.

    462

    Som van elementen

    Meer weten over Shell-scripts

    Conclusie

    We weten allemaal dat shell-script erg handig is om de werkproductiviteit te verhogen en ook tijd te besparen. Dus in dit artikel hebben we het besproken 30 zeer nuttige en meest conman shell-scriptvoorbeelden . We hopen dat deze complete handleiding over shell-scriptvoorbeelden u helpt alles over de shell-scripts te begrijpen.



    : Als de map leeg is, drukt deze regel een gebruiksbericht af met de naam van het script (

    Voor alle Linux-distributies is het shellscript als een toverstaf die het proces automatiseert, gebruikers tijd bespaart en de productiviteit verhoogt. Deze zelfstudie voor scripting laat je kennismaken met de meer dan 25 voorbeelden van scripting.

    Maar voordat we verder gaan met het onderwerp shell-scripting Laten we, met voorbeelden, het shell-script en de daadwerkelijke gebruiksscenario's van shell-scripting begrijpen.

    Wat is Shell-script?

    Nou, de schaal is een CLI ( opdrachtregelinterpreter ), dat wordt uitgevoerd in een tekstvenster waarin gebruikers shell-opdrachten kunnen beheren en uitvoeren. Aan de andere kant wordt het proces van het schrijven van een reeks opdrachten die op een Linux-systeem moeten worden uitgevoerd. Een bestand dat dergelijke instructies bevat, wordt een bash-script genoemd.

    Gebruik van Shell-scripts

    Hieronder staan ​​enkele veelvoorkomende toepassingen van Shell Script:

    • Taakautomatisering – Het kan worden gebruikt om repetitieve taken te automatiseren, zoals regelmatige back-ups en software-installatietaken.
    • Maatwerk - Men kan shell-scripts gebruiken om de opdrachtregelomgeving te ontwerpen en de taak eenvoudig uit te voeren volgens de behoeften.
    • Bestandsbeheer - De shellscripts kunnen ook worden gebruikt voor het beheren en manipuleren van bestanden en mappen, zoals het verplaatsen, kopiëren, hernoemen of verwijderen van bestanden.

    Shell-scriptvoorbeelden in Linux

    1) Wat geeft de shebang (#!) aan het begin van een shellscript aan?

    De shebang (#!) aan het begin van een script geeft de tolk aan die moet worden gebruikt om het script uit te voeren. Het vertelt het systeem welke shell of tolk de opdrachten van het script moet interpreteren.

    Bijvoorbeeld: Stel dat we een script hebben met de naam mijnscript.sh geschreven in de Bash-shell:

    keet

    keet

    In dit voorbeeld:

    • De #!/bin/bash aan het begin van het script geeft aan dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
    • De echo-opdrachten worden gebruikt om berichten naar de terminal af te drukken.

    2) Hoe voer je een shellscript uit vanaf de opdrachtregel?

    Om een ​​shellscript vanaf de opdrachtregel uit te voeren, moeten we deze stappen volgen:

    • Zorg ervoor dat het scriptbestand uitvoerbare machtigingen heeft met behulp van de chmod-opdracht :
    chmod +x myscript.sh>
    • Voer het script uit met behulp van de bestandsnaam:
    ./myscript.sh>

    Hier moet je vervangen mijnscript.sh met uw scriptnaam.

    3) Schrijf een shellscript dat techcodeview.com naar de terminal afdrukt.

    Maak een scriptnaam `myscript.sh` (we gebruiken ` omdat ` editor, u kunt elke editor kiezen)

    vim myscript.sh>

    #!/bin/bash
    # Dit script drukt techcodeview.com af naar de terminal
    echo techcodeview.com

    print naam

    print naam

    We maken ons script uitvoerbaar door `chmod +x` te gebruiken en vervolgens uit te voeren met `./myscipt.sh` en krijgen de gewenste uitvoer techcodeview.com.

    4) Leg het doel uit van het echo-commando in shell-scripting.

    De echo-opdracht wordt gebruikt om tekst of variabelen op de terminal weer te geven. Het wordt vaak gebruikt voor het afdrukken van berichten, variabele waarden en het genereren van programma-uitvoer.

    434

    echo-opdracht

    In dit voorbeeld moeten we `echo` rechtstreeks op terminal uitvoeren, omdat het binnen het shell-script hetzelfde werkt.

    5) Hoe kun je een waarde toewijzen aan een variabele in een shellscript?

    Aan variabelen worden waarden toegewezen met behulp van de toewijzingsoperator =.

    Bijvoorbeeld:

    #!/bin/bash
    # Een waarde aan een variabele toekennen
    naam=Jayesh
    leeftijd = 21
    echo $naam $leeftijd

    Uitleg:

    • Aan de naamvariabele wordt de waarde Jayesh toegewezen.
    • De leeftijdsvariabele krijgt de waarde 21.
    • echo wordt gebruikt om af te drukken en `$name` `$age` wordt gebruikt om de waarde aan te roepen die in de variabelen is opgeslagen.

    435

    6) Schrijf een shellscript dat de naam van een gebruiker als invoer neemt en deze begroet.

    Maak een scriptnaam `example.sh`.

    #!/bin/bash
    # Vraag de gebruiker naar zijn naam
    echo Hoe heet je?
    lees naam
    # Begroet de gebruiker
    echo Hallo, $naam! Aangenaam.

    Uitleg:

    • #!/bin/bash: Dit is de shebang-regel. Het vertelt het systeem dat het de Bash-interpreter moet gebruiken om het script uit te voeren.
    • # Vraag de gebruiker naar zijn naam: Dit is een opmerking. Het biedt context over de komende code. Opmerkingen worden door de tolk genegeerd.
    • echo Hoe heet je?: Het echo-commando wordt gebruikt om de tekst tussen dubbele aanhalingstekens op de terminal weer te geven.
    • leesnaam: Het leescommando wacht tot de gebruiker tekst invoert en slaat deze op in de variabelenaam.
    • echo Hallo, $naam! Leuk je te ontmoeten.: Deze regel gebruikt het echo-commando om een ​​begroetingsbericht af te drukken dat de waarde bevat van de naamvariabele, die is verzameld uit de invoer van de gebruiker.

    436

    7) Hoe voeg je commentaar toe aan een shellscript?

    Opmerkingen in shell-scripting worden gebruikt om uitleg of context aan de code te geven. Ze worden door de tolk genegeerd en zijn alleen bedoeld voor mensen die het script lezen. U kunt opmerkingen toevoegen met het #-symbool.

    #!/bin/bash
    # Dit is een commentaar waarin het doel van het script wordt uitgelegd
    echo gfg

    8) Maak een shellscript dat controleert of een bestand in de huidige map bestaat.

    Hier is een script dat controleert of een bestand met de naam example.txt in de huidige map bestaat:

    #!/bin/bash
    bestand=voorbeeld.txt
    # Controleer of het bestand bestaat
    if [ -e $bestand ]; Dan
    echo Bestand bestaat: $file
    anders
    echo Bestand niet gevonden: $file
    zijn

    Uitleg:

    1. #!/bin/bash: Dit is de shebang-regel die de tolk (/bin/bash) specificeert die moet worden gebruikt voor het uitvoeren van het script.
    2. file=example.txt: Deze regel definieert het variabele bestand en wijst er de waarde example.txt aan toe. U kunt dit vervangen door de naam van het bestand waarop u wilt controleren.
    3. if [ -e $bestand ]; then: Deze regel start een if-statement. De voorwaarde [ -e $file ] controleert of het bestand dat wordt opgegeven door de waarde van de bestandsvariabele bestaat. De vlag -e wordt gebruikt om te controleren of het bestand bestaat.
    4. echo Bestand bestaat: $file: Als de voorwaarde waar is (dat wil zeggen: het bestand bestaat), wordt op deze regel een bericht afgedrukt dat aangeeft dat het bestand bestaat, samen met de naam van het bestand.
    5. else: Als de voorwaarde onwaar is (dat wil zeggen: het bestand bestaat niet), voert het script de code uit onder de else-vertakking.
    6. echo Bestand niet gevonden: $file: Deze regel geeft een foutmelding weer die aangeeft dat het opgegeven bestand niet is gevonden, samen met de bestandsnaam.
    7. fi: Deze regel markeert het einde van de if-instructie.
    Bestand zoeken

    Bestand zoeken

    9) Wat is het verschil tussen enkele aanhalingstekens (‘) en dubbele aanhalingstekens () in shell-scripting?

    Enkele aanhalingstekens (‘) en dubbele aanhalingstekens () worden gebruikt om tekenreeksen in shell-scripting te omsluiten, maar ze gedragen zich verschillend:

    • Enkele aanhalingstekens: Alles tussen enkele aanhalingstekens wordt behandeld als een letterlijke tekenreeks. Variabelenamen en de meeste speciale tekens worden niet uitgevouwen.
    • Dubbele aanhalingstekens: Variabelen en bepaalde speciale tekens binnen dubbele aanhalingstekens worden uitgevouwen. De inhoud is onderhevig aan variabele vervanging en opdrachtvervanging.

    #!/bin/bash

    abcd=Hallo
    echo ‘$abcd’ # Uitvoer: $abcd
    echo $abcd # Uitvoer: Hallo

    10) Hoe kunt u opdrachtregelargumenten gebruiken in een shellscript?

    Opdrachtregelargumenten zijn waarden die aan een script worden verstrekt wanneer het wordt uitgevoerd. Ze zijn binnen het script toegankelijk met behulp van speciale variabelen zoals $1, $2, etc., waarbij $1 het eerste argument vertegenwoordigt, $2 het tweede argument, enzovoort.

    Bijvoorbeeld: Als onze scriptnaam `example.sh`

    #!/bin/bash

    echo Scriptnaam: $0
    echo Eerste argument: $1
    echo Tweede argument: $2

    Als we het script uitvoeren met `.example.sh hello_1 hello_2`, zal het het volgende opleveren:

    cli argumenten

    cli argumenten

    11) Hoe gebruik je de for-lus om een ​​lijst met waarden te doorlopen?

    Maak een scriptnaam `example.sh`.

    #!/bin/bash

    fruits=(appel banaan kersen dadel)
    voor fruit in ${fruits[@]}; Doen
    echo Huidig ​​fruit: $fruit
    klaar

    Uitleg:

    De lijn `fruits=` creëert een array met de naam fruit met vier elementen: appel, banaan, kers en dadel.

    • voor fruit in ${fruits[@]}; do: Deze regel start een for-lus. Dit is wat elk onderdeel betekent:
    • voor fruit: Dit declareert een lusvariabele genaamd fruit. In elke iteratie van de lus behoudt fruit de waarde van het huidige element uit de fruits-array.
    • ${fruits[@]}: Dit is een array-uitbreiding die alle elementen uit de fruits-array overneemt. De syntaxis ${…} zorgt ervoor dat elk element als een afzonderlijk item wordt behandeld.
    • do: Dit trefwoord markeert het begin van de lusbody.
    • echo Huidig ​​fruit: $fruit: Binnen de lus gebruikt deze regel het echo-commando om de huidige waarde van de lusvariabele fruit weer te geven. Er wordt een bericht afgedrukt als Huidig ​​fruit: appel voor elk fruit in de array.
    • done: Dit trefwoord markeert het einde van de lusbody. Het vertelt het script dat de lus is voltooid.
    for loop

    for loop

    12) Schrijf een shellscript dat de som van gehele getallen van 1 tot N berekent met behulp van een lus.

    Maak een scriptnaam `example.sh`.

    #!/bin/bash

    echo Voer een getal in (N):
    lees N
    som=0
    voor (( i=1; i<=$N; i++ )); Doen
    som=$((som + i))
    klaar
    echo De som van gehele getallen van 1 tot $N is: $sum

    Uitleg:
    Het script begint met de vraag om een ​​getal (N) in te voeren met behulp van read. Dit getal bepaalt hoe vaak de lus wordt uitgevoerd.

    1. De variabele som wordt geïnitialiseerd op 0. Deze variabele houdt de som van gehele getallen bij.
    2. De for-lus begint met for (( i=1; i<=$N; i++ )). Deze lusstructuur wordt gebruikt om een ​​reeks acties een bepaald aantal keren te herhalen, in dit geval van 1 tot de waarde van N.
    3. Binnen de lus gebeuren deze dingen:
      • i=1 stelt de lusvariabele i in op 1 aan het begin van elke iteratie.
      • De lusvoorwaarde i<=$N controleert of i nog steeds kleiner is dan of gelijk is aan het gegeven getal N.
      • Als de voorwaarde waar is, wordt de lusbody uitgevoerd.
      • sum=$((sum + i)) berekent de nieuwe waarde van sum door de huidige waarde van i erbij op te tellen. Dit telt de gehele getallen van 1 op tot de huidige i-waarde.
    4. Na elke iteratie verhoogt i++ de waarde van i met 1.
    5. De lus blijft lopen totdat de voorwaarde i<=$N onwaar wordt (wanneer i groter wordt dan N).
    6. Zodra de lus is voltooid, geeft het script de som weer van de gehele getallen van 1 tot het ingevoerde getal N.

    439

    13) Maak een script dat naar een specifiek woord in een bestand zoekt en het aantal keren dat het voorkomt telt.

    Maak een scriptnaam `word_count.sh`

    #!/bin/bash

    echo Voer het woord in waarnaar u wilt zoeken:
    lees doel_woord
    echo Voer de bestandsnaam in:
    lees bestandsnaam
    count=$(grep -o -w $doelwoord $bestandsnaam | wc -l)
    echo Het woord ‘$target_word’ verschijnt $count keer in ‘$filename’.

    Uitleg:

    • echo Voer het woord in waarnaar moet worden gezocht:: Op deze regel wordt een bericht weergegeven waarin de gebruiker wordt gevraagd een woord in te voeren waarnaar hij wil zoeken in een bestand.
    • read target_word: Deze regel leest de invoer van de gebruiker en slaat deze op in een variabele met de naam target_word.
    • echo Voer de bestandsnaam in:: Op deze regel wordt een bericht weergegeven waarin de gebruiker wordt gevraagd de naam in te voeren van het bestand waarin hij wil zoeken.
    • lees bestandsnaam: Deze regel leest de invoer van de gebruiker en slaat deze op in een variabele met de naam bestandsnaam.
    • count=$(grep -o -w $target_word $filename | wc -l): Deze regel doet het hoofdwerk van het script. Laten we het verder uitsplitsen:
      • grep -o -w $target_word $filename: Dit deel van de opdracht zoekt naar exemplaren van het target_word in de opgegeven bestandsnaam. De opties -o en -w zorgen ervoor dat alleen overeenkomsten van hele woorden worden geteld.
      • |: Dit is een pipe, die de uitvoer van het vorige commando neemt en deze als invoer voor het volgende commando verzendt.
      • wc -l: Dit deel van de opdracht gebruikt de opdracht wc om het aantal regels in de invoer te tellen. De optie -l telt specifiek de regels.
      • De hele opdracht berekent het aantal keren dat het doelwoord in het bestand voorkomt en wijst dat aantal toe aan de variabele aantal

    441

    14) Leg de verschillen uit tussen standaarduitvoer (stdout) en standaardfout (stderr).

    Het belangrijkste verschil tussen standaarduitvoer (stdout) en standaardfout (stderr) is als volgt:

    • Standaarduitvoer (stdout): Dit is de standaarduitvoerstroom waar de reguliere uitvoer van een opdracht naartoe gaat. Het wordt standaard op de terminal weergegeven. U kunt het omleiden naar een bestand met behulp van>.
    • Standaardfout (stderr): Dit is de uitvoerstroom voor foutmeldingen en waarschuwingen. Het wordt ook standaard op de terminal weergegeven. U kunt het omleiden naar een bestand met behulp van 2>.

    15) Leg het concept van voorwaardelijke instructies in shell-scripting uit.

    Voorwaardelijke instructies in shell-scripting stellen ons in staat beslissingen te nemen en de stroom van ons script te controleren op basis van bepaalde voorwaarden. Ze zorgen ervoor dat ons script verschillende sets opdrachten kan uitvoeren, afhankelijk van of een bepaalde voorwaarde waar of onwaar is. De primaire voorwaardelijke instructies in shell-scripting zijn de if-instructie, de elif-instructie (optioneel) en de else-instructie (optioneel).

    Hier is de basisstructuur van een voorwaardelijke instructie in shell-scripting:

    als [voorwaarde]; Dan
    # Commando's die moeten worden uitgevoerd als de voorwaarde waar is
    elif [andere_voorwaarde]; Dan
    # Commando's die moeten worden uitgevoerd als een andere_voorwaarde waar is (optioneel)
    anders
    # Uit te voeren opdrachten als geen van de voorwaarden waar is (optioneel)
    zijn

    Uitleg:

    • [ condition ] = Commando dat de voorwaarde evalueert en een waar (0) of onwaar (niet-nul) afsluitstatus retourneert.
    • then = Het is een trefwoord dat aangeeft dat de daaropvolgende opdrachten worden uitgevoerd als de voorwaarde als waar wordt geëvalueerd.
    • elif = (afkorting van else if) Het is een sectie waarmee we aanvullende voorwaarden kunnen opgeven om te controleren.
    • else = het is een sectie die opdrachten bevat die worden uitgevoerd als geen van de voorwaarden waar is.
    • fi = Het is een trefwoord dat het einde van het voorwaardelijke blok markeert.

    16) Hoe lees je regels uit een bestand binnen een shellscript?

    Naar lees regels vanuit een bestand binnen een shellscript kunnen we verschillende methoden gebruiken, maar een gebruikelijke benadering is het gebruik van een while-lus in combinatie met de leesopdracht. Zo kunnen we het doen:

    #!/bin/bash
    bestand=/home/jayeshkumar/jayesh.txt
    # Controleer of het bestand bestaat
    if [ -e $bestand ]; Dan
    terwijl IFS= lees -r regel; Doen
    echo Regel gelezen: $line
    # Voeg hier uw verwerkingslogica toe
    klaar <$bestand
    anders
    echo Bestand niet gevonden: $file
    zijn

    Uitleg:

    1. #!/bin/bash: Dit is de shebang-regel die de tolk (/bin/bash) specificeert die moet worden gebruikt voor het uitvoeren van het script.
    2. file=/home/jayeshkumar/jayesh.txt: Deze regel definieert het variabele bestand en wijst het volledige pad toe aan het bestand jayesh.txt in de map /home/jayeshkumar. Wijzig dit pad zodat het overeenkomt met het daadwerkelijke pad van het bestand dat u wilt lezen.
    3. if [ -e $bestand ]; then: Deze regel start een if-statement. Er wordt gecontroleerd of het bestand dat is opgegeven door de variabele $file bestaat. De vlag -e controleert of het bestand bestaat.
    4. terwijl IFS= lees -r regel; do: Deze regel initieert een while-lus die regels uit het bestand leest.
      • IFS=: De IFS (Internal Field Separator) is ingesteld op een lege waarde om voorloop- en volgspaties te behouden.
      • read -r line: Dit leest de huidige regel uit het bestand en slaat deze op in de variabele regel.
    5. echo Line read: $line: Deze regel geeft de inhoud weer van de regel die uit het bestand is gelezen. De variabele $line bevat de inhoud van de huidige regel.
    6. # Voeg hier uw verwerkingslogica toe: Dit is een plaatsaanduiding voor commentaar waarin u uw eigen logica kunt toevoegen om elke regel te verwerken. U kunt bijvoorbeeld de regel analyseren, informatie extraheren of specifieke acties uitvoeren op basis van de inhoud.
    7. done <$file: Dit markeert het einde van de while-lus. De < $file leidt de inhoud van het bestand om zodat deze door de lus kan worden gelezen.
    8. else: Als het bestand niet bestaat (de voorwaarde in de if-instructie is false), voert het script de code uit onder de else-vertakking.
    9. echo Bestand niet gevonden: $file: Deze regel geeft een foutmelding weer die aangeeft dat het opgegeven bestand niet is gevonden.
    10. fi: Deze regel markeert het einde van de if-instructie.
    bestand lezen

    bestand lezen

    Hier gebruikten we ` pwd ` commando om het pad van de huidige map op te halen.

    17) Schrijf een functie in een shellscript die de faculteit van een bepaald getal berekent.

    Hier is het script datbereken de faculteitvan een bepaald getal.

    #!/bin/bash
    # Definieer een functie om faculteit te berekenen
    berekenen_factorial() {
    aantal=$1
    feit=1
    voor ((i=1; i<=getal; i++)); Doen
    feit=$((feit * i))
    klaar
    echo $ feit
    }
    # Vraag de gebruiker om een ​​nummer in te voeren
    echo Voer een getal in:
    lees invoer_getal
    # Roep de functie 'calculate_factorial' aan met het invoernummer
    factorial_result=$(calculate_factorial $input_num)
    # Geef het faculteitsresultaat weer
    echo Faculteit van $input_num is: $factorial_result

    Uitleg:

    1. Het script begint met de regel #!/bin/bash om de tolk op te geven.
    2. berekenen_factorial() is gedefinieerd als een functie. Er is één argument nodig, num, wat het getal is waarvoor de faculteit moet worden berekend.
    3. Binnen de functie wordt feit geïnitialiseerd op 1. Deze variabele slaat het faculteitsresultaat op.
    4. De for-lus itereert van 1 naar het opgegeven getal (num). In elke iteratie vermenigvuldigt het de huidige feitelijke waarde met de lusindex i.
    5. Nadat de lus is voltooid, bevat de feitvariabele de berekende faculteit.
    6. Het script vraagt ​​de gebruiker om een ​​getal in te voeren met behulp van read.
    7. De functie ‘calculate_factorial’ wordt aangeroepen met het door de gebruiker opgegeven getal, en het resultaat wordt opgeslagen in de variabele factorial_result.
    8. Ten slotte geeft het script het berekende factoriële resultaat weer.
    Factorieel

    Factorieel

    18) Hoe ga je om met signalen als Ctrl+C in een shellscript?

    In een shellscript kun je signalen zoals Ctrl+C (ook bekend als SIGINT) verwerken met behulp van het trap-commando. Ctrl+C genereert een SIGINT-signaal wanneer de gebruiker erop drukt om het actieve script of programma te onderbreken. Door het trap-commando te gebruiken, kunt u de acties opgeven die moeten worden ondernomen wanneer een bepaald signaal wordt ontvangen. Zo verwerkt u signalen zoals Ctrl+C in een shellscript:

    #!/bin/bash
    opruimen() {
    echo Script onderbroken. Opruimen uitvoeren…
    # Voeg hier uw opruimacties toe
    uitgang 1
    }
    # Stel een trap in om de opruimfunctie aan te roepen wanneer Ctrl+C (SIGINT) wordt ontvangen
    valopruiming SIGINT
    # Rest van je script
    echo Rennen...
    slapen 10
    echo Klaar.

    Het omgaan met signalen is belangrijk om scripts robuust te maken en ervoor te zorgen dat ze onverwachte onderbrekingen netjes afhandelen. U kunt de opschoonfunctie aanpassen aan uw specifieke behoeften, zoals het sluiten van bestanden, het stoppen van processen of het loggen van informatie voordat het script wordt afgesloten.

    Uitleg:

    1. #!/bin/bash: Deze shebang-regel specificeert de tolk die moet worden gebruikt voor het uitvoeren van het script.
    2. cleanup() { … }: Dit definieert een functie met de naam cleanup. Binnen deze functie kunt u alle acties opnemen die moeten worden uitgevoerd wanneer het script wordt onderbroken, zoals het sluiten van bestanden, het vrijgeven van bronnen of het uitvoeren van andere opruimtaken.
    3. trap opruimen SIGINT: Het trap-commando wordt gebruikt om een ​​signaalhandler in te stellen. In dit geval specificeert het dat wanneer het SIGINT-signaal (Ctrl+C) wordt ontvangen, de opschoonfunctie moet worden uitgevoerd.
    4. echo Running…, sleep 10, echo Finished.: Dit zijn slechts voorbeeldopdrachten om de uitvoering van een script te simuleren.

    446

    19) Maak een script dat dubbele regels in een tekstbestand controleert en verwijdert.

    Hier is ons Linux-script waarin we dubbele regels uit een tekstbestand zullen verwijderen.

    #!/bin/bash
    invoer_bestand=invoer.txt
    uitvoer_bestand=uitvoer.txt
    sorteer $input_file | uniq> $output_file
    echo Dubbele regels zijn succesvol verwijderd.

    Uitleg:

    1. Het script begint met een shebang (#!/bin/bash), wat aangeeft dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. De variabele input_file wordt ingesteld op de naam van het invoerbestand dat dubbele regels bevat (wijzig dit in de werkelijke naam van het invoerbestand).
    3. De output_file variabele wordt ingesteld op de naam van het uitvoerbestand waar de duplicaten zullen worden verwijderd (wijzig dit in de gewenste uitvoerbestandsnaam).
    4. Het script gebruikt het sorteercommando om de regels in het invoerbestand te sorteren. Door de regels te sorteren, worden dubbele regels gegroepeerd.
    5. De gesorteerde regels worden vervolgens door het uniq-commando geleid, dat opeenvolgende dubbele regels verwijdert. De uitvoer van dit proces wordt omgeleid naar het uitvoerbestand.
    6. Nadat de duplicaten zijn verwijderd, drukt het script een succesbericht af.
    dubbele regel verwijderen

    dubbele regel verwijderen

    Hier gebruiken we ` kat ` om de tekst in het tekstbestand weer te geven.

    20) Schrijf een script dat een veilig willekeurig wachtwoord genereert.

    Hier is ons script om een ​​veilig willekeurig wachtwoord te genereren.

    #!/bin/bash
    # Functie om een ​​willekeurig wachtwoord te genereren
    Genereer wachtwoord() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Roep de functie op en sla het gegenereerde wachtwoord op
    wachtwoord=$(genereer_wachtwoord)
    echo Gegenereerd wachtwoord: $password

    Opmerking: De gebruiker kan de lengte van zijn wachtwoord dienovereenkomstig wijzigen door het getal `12` te vervangen.

    Uitleg:

    1. Het script begint met een shebang (#!/bin/bash), wat aangeeft dat het moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. De functie genereren_wachtwoord is gedefinieerd om een ​​willekeurig wachtwoord te genereren. Dit is hoe het werkt:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 verdeelt de gefilterde willekeurige gegevens in regels met een breedte van elk 12 tekens.
      • head -n 1 selecteert de eerste regel, waardoor we feitelijk een willekeurige reeks tekens met een lengte van 12 krijgen.
    3. Aan de wachtwoordvariabele wordt het resultaat toegewezen van het aanroepen van de functie genereren_wachtwoord.
    4. Ten slotte wordt het gegenereerde wachtwoord weergegeven met behulp van echo.

    448

    21) Schrijf een shellscript dat de totale grootte van alle bestanden in een map berekent.

    Hier is een shellscript om de totale grootte van alle bestanden in een map te berekenen.

    #!/bin/bash
    map=/pad/naar/uw/map
    total_size=$(du -csh $directory | grep totaal | awk ‘{print $1}’)
    echo Totale grootte van bestanden in $directory: $total_size

    Uitleg:

    1. Het script begint met #!/bin/bash shebang, wat aangeeft dat het moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. De mapvariabele wordt ingesteld op het pad van de map waarvoor u de totale bestandsgrootte wilt berekenen. Vervang /pad/naar/uw/directory door het daadwerkelijke pad.
    3. De opdracht du wordt gebruikt om het gebruik van de bestandsruimte te schatten. De gebruikte opties zijn:
      • -c: Produceer een eindtotaal.
      • -s: Geef alleen de totale grootte van de opgegeven map weer.
      • -h: afdrukformaten in een voor mensen leesbaar formaat (bijvoorbeeld KB, MB, GB).
    4. De uitvoer van du wordt doorgesluisd naar grep total om de regel uit te filteren die de totale grootte bevat.
    5. awk ‘{print $1}’ wordt gebruikt om het eerste veld (totale grootte) uit de regel te extraheren.
    6. De berekende totale grootte wordt opgeslagen in de variabele total_size.
    7. Ten slotte geeft het script de totale grootte weer met behulp van echo.
    Totale grootte van bestanden

    Totale grootte van bestanden

    Hier gebruikten we ` pwd ` commando om het huidige mappad te zien.

    22) Leg het verschil uit tussen if- en elif-instructies in shell-scripting.

    Functie `als`Staffement `elif`-verklaring
    Doel Leg het verschil uit tussen if- en elif-instructies in shell-scripting. Biedt alternatieve voorwaarden om te controleren of de initiële if-voorwaarde onwaar is.
    gebruik Gebruikt voor de begintoestand. Wordt gebruikt na de initiële if-voorwaarde om aanvullende voorwaarden te controleren.
    aantal blokken Kan er maar één hebben als blok. Kan meerdere elif-blokken hebben, maar slechts één ander blok (optioneel).
    Executie Voert het codeblok uit dat is gekoppeld aan de if-instructie als de voorwaarde waar is. Als de voorwaarde onwaar is, wordt het else-blok (indien aanwezig) uitgevoerd (optioneel). Controleert elke elif-voorwaarde op volgorde. Als één elif-voorwaarde waar is, wordt het corresponderende codeblok uitgevoerd en verlaat het script het volledige voorwaardelijke blok. Als geen van de elif-voorwaarden waar is, wordt het else-blok (indien aanwezig) uitgevoerd.
    Geneste structuren Kan worden genest in andere if-, elif- of else-blokken. Kan niet in een ander elif-blok worden genest, maar kan wel in een if- of else-blok worden gebruikt.

    Laten we het aan de hand van een voorbeeld begrijpen.

    #!/bin/bash
    aantal=5
    if [$nummer -gt 10]; Dan
    echo $getal is groter dan 10
    anders
    echo $number is niet groter dan 10
    zijn
    echo ——–
    if [$nummer -gt 10]; Dan
    echo $getal is groter dan 10
    elif [ $getal -eq 10 ]; Dan
    echo $getal is gelijk aan 10
    anders
    echo $getal is kleiner dan 10
    zijn

    Uitleg:

    In dit voorbeeld controleert het eerste if-blok of getal groter is dan 10. Als dit niet het geval is, wordt er een bericht afgedrukt dat aangeeft dat het getal niet groter is dan 10. Het tweede blok met elif-instructies controleert meerdere voorwaarden opeenvolgend totdat een van deze waar is. In dit geval zal de uitvoer, aangezien de waarde van getal 5 is:

    if_elif verschil

    if_elif verschil

    23) Hoe gebruik je een while-lus om herhaaldelijk opdrachten uit te voeren?

    Een while-lus wordt gebruikt in shell-scripts om herhaaldelijk een reeks opdrachten uit te voeren zolang een opgegeven voorwaarde waar is. De lus gaat door met het uitvoeren van de opdrachten totdat de voorwaarde onwaar wordt.

    Hier is de basissyntaxis van een while-lus:

    terwijl [voorwaarde]; Doen
    # Uit te voeren opdrachten
    klaar

    Uitleg:

    1. De 'while'-lus begint met het sleutelwoord 'while', gevolgd door een voorwaarde tussen vierkante haakjes '[ ]'.
    2. De body van de lus, die de uit te voeren opdrachten bevat, wordt omsloten door de trefwoorden `do` en `done`.
    3. De lus controleert eerst de toestand. Als de voorwaarde waar is, worden de opdrachten binnen de lusbody uitgevoerd. Nadat de lusbody is uitgevoerd, wordt de voorwaarde opnieuw gecontroleerd en herhaalt het proces zich totdat de voorwaarde onwaar wordt.

    Voorbeeld: Als we getallen van 1 tot 5 willen afdrukken

    #!/bin/bash
    teller=1
    while [ $counter -le 5 ]; Doen
    echo-nummer: $counter
    teller=$((teller + 1))
    klaar

    Uitleg:

    • De tellervariabele is ingesteld op 1.
    • De while-lus controleert of de waarde van counter kleiner dan of gelijk is aan 5. Zolang deze voorwaarde waar is, gaat de lus door met uitvoeren.
    • Binnen de lus wordt de huidige waarde van de teller afgedrukt met behulp van echo.
    • De teller wordt met 1 verhoogd met behulp van de uitdrukking $((teller + 1)).
    herhalingslus

    herhalingslus

    24) Maak een shellscript dat alle lege bestanden in een map vindt en vermeldt.

    Shell-script dat u kunt gebruiken om alle lege bestanden in een map te vinden en weer te geven met behulp van de opdrachten `find` en `stat`:

    #!/bin/bash
    map=$1″
    if [ -z $map ]; Dan
    echogebruik: $0
    uitgang 1
    zijn

    als [ ! -d $map]; Dan
    echo Fout: ‘$directory’ is geen geldige map.
    uitgang 1
    zijn
    echo Lege bestanden in $directory:
    zoek $directory -type f -leeg

    Uitleg:

    1. ` #!/bin/bash `: Dit wordt een shebang genoemd en vertelt het besturingssysteem om de Bash-shell te gebruiken om het script te interpreteren en uit te voeren.
    2. ` map=$1″ `: Deze regel wijst het eerste opdrachtregelargument (aangeduid met $1) toe aan de variabele ` map `.
    3. ` if [ -z $map ]; Dan `: Deze regel start een if-instructie die controleert of de ` map ` variabele is leeg (-z test voor een lege string).
    4. ` echogebruik: $0 `: Als de directory leeg is, drukt deze regel een gebruiksbericht af, waarbij ` $ 0 ` vertegenwoordigt de naam van het script.
    5. ` uitgang 1 `: Deze regel sluit het script af met de afsluitcode ` 1 ', wat een fout aangeeft.
    6. ` zijn `: Deze regel markeert het einde van de ` als ` verklaring.
    7. ` als [ ! -d $map]; Dan `: Dit start een nieuwe if-instructie om te controleren of de opgegeven map bestaat (` -D ` tests voor een directory).
    8. ` echo Fout: ‘$directory’ is geen geldige map. `: Als de opgegeven directory niet bestaat, drukt deze regel een foutmelding af.
    9. ` uitgang 1 `: Sluit het script af met de afsluitcode ` 1 `.
    10. ` zijn `: Markeert het einde van de tweede ` als` stelling.
    11. ` echo Lege bestanden in $directory: `: Als alles tot nu toe geldig is, drukt deze regel een bericht af dat aangeeft dat het script lege bestanden in de opgegeven map zal weergeven.
    12. ` zoek $directory -type f -leeg `: Deze regel gebruikt de ` vinden ` commando om te zoeken naar lege bestanden (` -leeg `) van het type gewone bestanden (` -type f `) in de opgegeven map. Vervolgens worden deze lege bestanden weergegeven.
    Lege bestanden vinden

    Lege bestanden vinden

    Opmerking : We moeten een map opgeven als argument bij het uitvoeren van het script. Hier hebben we het pad van de huidige map home/jayeshkumar/ gebruikt

    25) Wat is het doel van het leescommando in shell-scripting?

    Met de leesopdracht in shell-scripting kan het script u om informatie vragen. Het is alsof een computer je een vraag stelt en op je antwoord wacht. Dit is handig voor scripts waarbij u iets moet typen of wanneer het script moet werken met informatie uit bestanden. De leesopdracht helpt het script te stoppen en te wachten op wat u typt, en vervolgens kan het die informatie gebruiken om meer dingen in het script te doen.

    Syntaxis van leesopdracht:

    read variable_name>

    Voorbeeld : Als we de naam als invoer van de gebruiker willen gebruiken om deze af te drukken.

    #!/bin/bash
    echo Voer uw naam in:
    lees naam
    echo Hallo, $naam!

    453

    lees naam

    Samenvattend wordt het leescommando gebruikt om gebruikersinvoer of gegevens uit bestanden binnen shell-scripts vast te leggen, waardoor de scripts interactiever en veelzijdiger worden.

    26) Schrijf een shellscript dat alle bestandsnamen in een map naar kleine letters converteert.

    Hier is een shellscript dat alle bestandsnamen in een map naar kleine letters converteert.

    #!/bin/bash
    map=$1″
    if [ -z $map ]; Dan
    echogebruik: $0
    uitgang 1
    zijn

    als [ ! -d $map]; Dan

    echo Fout: ‘$directory’ is geen geldige map.
    uitgang 1
    zijn

    cd $map || uitgang 1

    voor bestand in *; Doen
    if [ -f $bestand ]; Dan
    nieuwenaam=$(echo $bestand | tr ‘A-Z’ ‘a-z’)
    [ $bestand != $nieuwenaam ] && mv $bestand $nieuwenaam
    zijn
    klaar

    Uitleg:

    1. #!/bin/bash : Dit is de shebang, waarin wordt gespecificeerd dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. map=$1″ : Deze regel wijst het eerste opdrachtregelargument toe aan de variabelenmap.
    3. if [ -z $map ]; Dan : Deze regel controleert of de mapvariabele leeg is (er wordt geen argument opgegeven bij het uitvoeren van het script).
    4. echogebruik: $0 : Als de map leeg is, drukt deze regel een gebruiksbericht af met de naam van het script ($0).
    5. uitgang 1 : deze regel sluit het script af met de afsluitcode 1, wat aangeeft dat er een fout is opgetreden.
    6. F i: Dit markeert het einde van de eerste if-instructie.
    7. als [ ! -d $map]; Dan : Deze regel controleert of de opgegeven map niet bestaat (-d test voor een map).
    8. echo Fout: ‘$directory’ is geen geldige map. : Als de opgegeven map niet bestaat, drukt deze regel een foutmelding af.
    9. uitgang 1 : Sluit het script af met de afsluitcode 1.
    10. zijn : Markeert het einde van de tweede if-instructie.
    11. cd $map || uitgang 1 : Wijzigt de huidige werkmap naar de opgegeven map. Als het wijzigen van de map mislukt (bijvoorbeeld als de map niet bestaat), wordt het script afgesloten met een foutcode.
    12. voor bestand in *; Doen: I voor bestand in *; Doen: zorgt voor een lus die alle items in de huidige map doorloopt (* komt overeen met alle bestandsnamen).
    13. if [ -f $bestand ]; Dan : Controleert of het huidige lus-iteratie-item een ​​normaal bestand is (-f test voor een normaal bestand).
    14. nieuwenaam=$(echo $bestand | tr ‘A-Z’ ‘a-z’) : Converteert de huidige bestandsnaam ($file) naar kleine letters met behulp van de opdracht tr en slaat het resultaat op in de variabele newname.
    15. [ $bestand != $nieuwenaam ] && mv $bestand $nieuwenaam : Vergelijkt de oorspronkelijke bestandsnaam met de nieuwe bestandsnaam in kleine letters. Als ze verschillend zijn, wordt de naam van het bestand gewijzigd met behulp van de opdracht mv.
    16. zijn : Markeert het einde van de innerlijke if-instructie.
    17. klaar : Markeert het einde van de lus.

    454

    Opmerking : We moeten een map opgeven als argument bij het uitvoeren van het script. Hier hebben we het pad van de huidige map home/jayeshkumar/test gebruikt

    27) Hoe kun je rekenkundige bewerkingen gebruiken binnen een shellscript?

    Rekenkundige bewerkingen kunnen worden uitgevoerd binnen een shellscript met behulp van verschillende ingebouwde methoden. De shell biedt mechanismen voor eenvoudige rekenkundige berekeningen met behulp van rekenkundige uitbreiding, zoals:

    1. Rekenkundige uitbreiding ($((…)))
    2. Gebruik expr-opdracht
    3. Met behulp van let Command

    Hier is ons Shell-script waarin alle drie de methoden voor rekenkundige bewerkingen worden uitgelegd.

    #!/bin/bash
    getal1=10
    aantal2=5

    #Rekenkundige uitbreiding ($((…)))

    resultaat=$((aantal1 + aantal2))
    echo Som: $resultaat

    #Expr-opdracht gebruiken

    som=$(expr $num1 + $num2)
    echo Som: $som

    #Let-opdracht gebruiken

    laat som = num1 + num2
    echo Som: $som

    Uitleg:

    1. `#!/bin/bash` : Dit is de shebang, waarin wordt gespecificeerd dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. `num1=10` en ` getal2=5` : Deze regels wijzen de waarden 10 en 5 toe aan de variabelen ` num1 ' en ' num2 ', respectievelijk.
    3. `#Rekenkundige uitbreiding ($((…)))` : Dit is een opmerking die het begin aangeeft van de sectie die de rekenkundige uitbreiding demonstreert.
    4. `resultaat=$((aantal1 + aantal2))` : Deze regel gebruikt rekenkundige expansie om de som van ` te berekenen num1 ' en ' num2 ` en slaat het resultaat op in de ` resultaat ` variabele.
    5. `echosom: $resultaat` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` resultaat ` variabele.
    6. `#Gebruik expr-opdracht` : Dit is een commentaar dat het begin aangeeft van de sectie die het gebruik van de ` uitspr ` commando voor rekenkundige bewerkingen.
    7. `som=$(expr $num1 + $num2)` : Deze regel gebruikt de ` uitspr ` commando om de som van ` te berekenen num1 ' en ' num2 ` en slaat het resultaat op in de ` som ` variabele. Merk op dat de ` uitspr Het commando ` vereist spaties rond de operatoren.
    8. `echo Som: $som` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` som ` variabele.
    9. `#Gebruik let-commando` : Dit is een commentaar dat het begin aangeeft van de sectie die het gebruik van de ` laten ` commando voor rekenkundige bewerkingen.
    10. `laat som = num1 + num2″` : Deze regel gebruikt de ` laten ` commando om de som van ` te berekenen num1 ' en ' num2 ' en wijst het resultaat toe aan de ' som ` variabele. De ` laten Het commando ` vereist geen spaties rond de operatoren.
    11. `echo Som: $som` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` som ` variabele.
    rekenkundig

    rekenkundig

    28) Maak een script dat controleert of een netwerkhost bereikbaar is.

    Hier is een eenvoudig shellscript dat de ping-opdracht gebruikt om te controleren of een netwerkhost bereikbaar is:

    #!/bin/bash
    gastheer=$1″
    als [ -z $host ]; Dan
    echogebruik: $0
    uitgang 1
    zijn
    ping -c 4 $host

    als [$? -eq 0]; Dan
    echo $host is bereikbaar.
    anders
    echo $host is niet bereikbaar.
    zijn

    Uitleg:

    1. Het neemt een hostnaam of IP-adres als argument en controleert of het argument wordt opgegeven.
    2. Als er geen argument wordt opgegeven, wordt er een gebruiksbericht weergegeven en wordt het afgesloten.
    3. Het gebruikt het ping-commando met de optie -c 4 om vier ICMP-echoverzoeken naar de opgegeven host te sturen.
    4. Nadat de ping-opdracht is uitgevoerd, wordt de afsluitstatus ($?) gecontroleerd. Als de afsluitstatus 0 is, betekent dit dat de host bereikbaar is en dat het script een succesbericht afdrukt. Anders wordt er een foutbericht afgedrukt.

    456

    Opmerking : We moeten een hostnaam opgeven als argument bij het uitvoeren van het script. Hier hebben we google.com gebruikt

    29) Schrijf een shellscript om het grootste element in een array te vinden:

    Hier is een shellscript om het grootste element in een array te vinden.

    #!/bin/bash
    # Declareer een array
    array=(3 56 24 89 67)

    # Initialiseer een variabele om de maximale waarde op te slaan, te beginnen met het eerste element

    max=${array[0]}

    # Herhaal de array

    voor num in ${array[@]}; Doen

    # Vergelijk elk element met het huidige maximum

    als ((aantal> max)); Dan
    max=$num
    zijn
    klaar

    # Druk de maximale waarde af

    echo Het maximale element in de array is: $max

    Uitleg:

    1. ` #!/bin/bash `: De shebang-regel specificeert dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
    2. ` array=(3 56 24 89 67) `: De array wordt gedeclareerd en geïnitialiseerd met waarden.
    3. ` max=${array[0]} `: `max` wordt geïnitialiseerd met het eerste element van de array.
    4. ` voor num in ${array[@]}; Doen `: Een `for`-lus wordt gebruikt om door de elementen van de array te lopen.
    5. ` als ((aantal> max)); Dan `: Een `if`-instructie controleert of het huidige element `num` groter is dan het huidige maximum `max`.
    6. ` max=$num`: Als`aantal ` groter is dan `max`, `max` wordt bijgewerkt met de waarde num.
    7. ` klaar `: De `for`-lus is gesloten.
    8. ` echo Het maximale element in de array is: $max `: Ten slotte drukt het script de maximale waarde af die in de array is gevonden.
    461

    grootste aantal

    30) Schrijf een script om de som van elementen in een array te berekenen.

    #!/bin/bash

    # Declareer een array

    array=(1 65 22 19 94)

    # Initialiseer een variabele om de som op te slaan

    som=0

    # Herhaal de array en voeg elk element toe aan de som

    voor num in ${array[@]}; Doen
    ben=$((ben + ben))
    klaar

    # Druk de som af

    echo De som van de elementen in de array is: $sum

    Uitleg:

    ` #!/bin/bash `: De shebang-regel specificeert dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.

    ` array=(1 65 22 19 94) `: De array wordt gedeclareerd en geïnitialiseerd met waarden.

    ` som=0 `:` som ` wordt geïnitialiseerd op nul om de som van de elementen vast te houden.

    ` voor num in ${array[@]}; Doen `: Een` voor ` lus wordt gebruikt om door de elementen van de array te lopen.

    ` ben=$((ben + ben)) `: Binnen de lus, elk element ` op een ` wordt toegevoegd aan ` som ` variabele.

    ` klaar `: De ` voor ' lus is gesloten.

    `echo De som van de elementen in de array is: $sum`: Ten slotte drukt het script de som van alle elementen in de array af.

    462

    Som van elementen

    Meer weten over Shell-scripts

    Conclusie

    We weten allemaal dat shell-script erg handig is om de werkproductiviteit te verhogen en ook tijd te besparen. Dus in dit artikel hebben we het besproken 30 zeer nuttige en meest conman shell-scriptvoorbeelden . We hopen dat deze complete handleiding over shell-scriptvoorbeelden u helpt alles over de shell-scripts te begrijpen.



    ).
  5. uitgang 1 : deze regel sluit het script af met de afsluitcode 1, wat aangeeft dat er een fout is opgetreden.
  6. F i: Dit markeert het einde van de eerste if-instructie.
  7. als [ ! -d $map]; Dan : Deze regel controleert of de opgegeven map niet bestaat (-d test voor een map).
  8. echo Fout: ‘$directory’ is geen geldige map. : Als de opgegeven map niet bestaat, drukt deze regel een foutmelding af.
  9. uitgang 1 : Sluit het script af met de afsluitcode 1.
  10. zijn : Markeert het einde van de tweede if-instructie.
  11. cd $map || uitgang 1 : Wijzigt de huidige werkmap naar de opgegeven map. Als het wijzigen van de map mislukt (bijvoorbeeld als de map niet bestaat), wordt het script afgesloten met een foutcode.
  12. voor bestand in *; Doen: I voor bestand in *; Doen: zorgt voor een lus die alle items in de huidige map doorloopt (* komt overeen met alle bestandsnamen).
  13. if [ -f $bestand ]; Dan : Controleert of het huidige lus-iteratie-item een ​​normaal bestand is (-f test voor een normaal bestand).
  14. nieuwenaam=$(echo $bestand | tr ‘A-Z’ ‘a-z’) : Converteert de huidige bestandsnaam ($file) naar kleine letters met behulp van de opdracht tr en slaat het resultaat op in de variabele newname.
  15. [ $bestand != $nieuwenaam ] && mv $bestand $nieuwenaam : Vergelijkt de oorspronkelijke bestandsnaam met de nieuwe bestandsnaam in kleine letters. Als ze verschillend zijn, wordt de naam van het bestand gewijzigd met behulp van de opdracht mv.
  16. zijn : Markeert het einde van de innerlijke if-instructie.
  17. klaar : Markeert het einde van de lus.

454

Opmerking : We moeten een map opgeven als argument bij het uitvoeren van het script. Hier hebben we het pad van de huidige map home/jayeshkumar/test gebruikt

27) Hoe kun je rekenkundige bewerkingen gebruiken binnen een shellscript?

Rekenkundige bewerkingen kunnen worden uitgevoerd binnen een shellscript met behulp van verschillende ingebouwde methoden. De shell biedt mechanismen voor eenvoudige rekenkundige berekeningen met behulp van rekenkundige uitbreiding, zoals:

  1. Rekenkundige uitbreiding ($((…)))
  2. Gebruik expr-opdracht
  3. Met behulp van let Command

Hier is ons Shell-script waarin alle drie de methoden voor rekenkundige bewerkingen worden uitgelegd.

#!/bin/bash
getal1=10
aantal2=5

#Rekenkundige uitbreiding ($((…)))

resultaat=$((aantal1 + aantal2))
echo Som: $resultaat

#Expr-opdracht gebruiken

som=$(expr $num1 + $num2)
echo Som: $som

#Let-opdracht gebruiken

laat som = num1 + num2
echo Som: $som

Uitleg:

  1. `#!/bin/bash` : Dit is de shebang, waarin wordt gespecificeerd dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. `num1=10` en ` getal2=5` : Deze regels wijzen de waarden 10 en 5 toe aan de variabelen ` num1 ' en ' num2 ', respectievelijk.
  3. `#Rekenkundige uitbreiding ($((…)))` : Dit is een opmerking die het begin aangeeft van de sectie die de rekenkundige uitbreiding demonstreert.
  4. `resultaat=$((aantal1 + aantal2))` : Deze regel gebruikt rekenkundige expansie om de som van ` te berekenen num1 ' en ' num2 ` en slaat het resultaat op in de ` resultaat ` variabele.
  5. `echosom: $resultaat` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` resultaat ` variabele.
  6. `#Gebruik expr-opdracht` : Dit is een commentaar dat het begin aangeeft van de sectie die het gebruik van de ` uitspr ` commando voor rekenkundige bewerkingen.
  7. `som=$(expr $num1 + $num2)` : Deze regel gebruikt de ` uitspr ` commando om de som van ` te berekenen num1 ' en ' num2 ` en slaat het resultaat op in de ` som ` variabele. Merk op dat de ` uitspr Het commando ` vereist spaties rond de operatoren.
  8. `echo Som: $som` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` som ` variabele.
  9. `#Gebruik let-commando` : Dit is een commentaar dat het begin aangeeft van de sectie die het gebruik van de ` laten ` commando voor rekenkundige bewerkingen.
  10. `laat som = num1 + num2″` : Deze regel gebruikt de ` laten ` commando om de som van ` te berekenen num1 ' en ' num2 ' en wijst het resultaat toe aan de ' som ` variabele. De ` laten Het commando ` vereist geen spaties rond de operatoren.
  11. `echo Som: $som` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` som ` variabele.
rekenkundig

rekenkundig

28) Maak een script dat controleert of een netwerkhost bereikbaar is.

Hier is een eenvoudig shellscript dat de ping-opdracht gebruikt om te controleren of een netwerkhost bereikbaar is:

#!/bin/bash
gastheer=″
als [ -z $host ]; Dan
echogebruik:

Voor alle Linux-distributies is het shellscript als een toverstaf die het proces automatiseert, gebruikers tijd bespaart en de productiviteit verhoogt. Deze zelfstudie voor scripting laat je kennismaken met de meer dan 25 voorbeelden van scripting.

Maar voordat we verder gaan met het onderwerp shell-scripting Laten we, met voorbeelden, het shell-script en de daadwerkelijke gebruiksscenario's van shell-scripting begrijpen.

Wat is Shell-script?

Nou, de schaal is een CLI ( opdrachtregelinterpreter ), dat wordt uitgevoerd in een tekstvenster waarin gebruikers shell-opdrachten kunnen beheren en uitvoeren. Aan de andere kant wordt het proces van het schrijven van een reeks opdrachten die op een Linux-systeem moeten worden uitgevoerd. Een bestand dat dergelijke instructies bevat, wordt een bash-script genoemd.

Gebruik van Shell-scripts

Hieronder staan ​​enkele veelvoorkomende toepassingen van Shell Script:

  • Taakautomatisering – Het kan worden gebruikt om repetitieve taken te automatiseren, zoals regelmatige back-ups en software-installatietaken.
  • Maatwerk - Men kan shell-scripts gebruiken om de opdrachtregelomgeving te ontwerpen en de taak eenvoudig uit te voeren volgens de behoeften.
  • Bestandsbeheer - De shellscripts kunnen ook worden gebruikt voor het beheren en manipuleren van bestanden en mappen, zoals het verplaatsen, kopiëren, hernoemen of verwijderen van bestanden.

Shell-scriptvoorbeelden in Linux

1) Wat geeft de shebang (#!) aan het begin van een shellscript aan?

De shebang (#!) aan het begin van een script geeft de tolk aan die moet worden gebruikt om het script uit te voeren. Het vertelt het systeem welke shell of tolk de opdrachten van het script moet interpreteren.

Bijvoorbeeld: Stel dat we een script hebben met de naam mijnscript.sh geschreven in de Bash-shell:

keet

keet

In dit voorbeeld:

  • De #!/bin/bash aan het begin van het script geeft aan dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  • De echo-opdrachten worden gebruikt om berichten naar de terminal af te drukken.

2) Hoe voer je een shellscript uit vanaf de opdrachtregel?

Om een ​​shellscript vanaf de opdrachtregel uit te voeren, moeten we deze stappen volgen:

  • Zorg ervoor dat het scriptbestand uitvoerbare machtigingen heeft met behulp van de chmod-opdracht :
chmod +x myscript.sh>
  • Voer het script uit met behulp van de bestandsnaam:
./myscript.sh>

Hier moet je vervangen mijnscript.sh met uw scriptnaam.

3) Schrijf een shellscript dat techcodeview.com naar de terminal afdrukt.

Maak een scriptnaam `myscript.sh` (we gebruiken ` omdat ` editor, u kunt elke editor kiezen)

vim myscript.sh>

#!/bin/bash
# Dit script drukt techcodeview.com af naar de terminal
echo techcodeview.com

print naam

print naam

We maken ons script uitvoerbaar door `chmod +x` te gebruiken en vervolgens uit te voeren met `./myscipt.sh` en krijgen de gewenste uitvoer techcodeview.com.

4) Leg het doel uit van het echo-commando in shell-scripting.

De echo-opdracht wordt gebruikt om tekst of variabelen op de terminal weer te geven. Het wordt vaak gebruikt voor het afdrukken van berichten, variabele waarden en het genereren van programma-uitvoer.

434

echo-opdracht

In dit voorbeeld moeten we `echo` rechtstreeks op terminal uitvoeren, omdat het binnen het shell-script hetzelfde werkt.

5) Hoe kun je een waarde toewijzen aan een variabele in een shellscript?

Aan variabelen worden waarden toegewezen met behulp van de toewijzingsoperator =.

Bijvoorbeeld:

#!/bin/bash
# Een waarde aan een variabele toekennen
naam=Jayesh
leeftijd = 21
echo $naam $leeftijd

Uitleg:

  • Aan de naamvariabele wordt de waarde Jayesh toegewezen.
  • De leeftijdsvariabele krijgt de waarde 21.
  • echo wordt gebruikt om af te drukken en `$name` `$age` wordt gebruikt om de waarde aan te roepen die in de variabelen is opgeslagen.

435

6) Schrijf een shellscript dat de naam van een gebruiker als invoer neemt en deze begroet.

Maak een scriptnaam `example.sh`.

#!/bin/bash
# Vraag de gebruiker naar zijn naam
echo Hoe heet je?
lees naam
# Begroet de gebruiker
echo Hallo, $naam! Aangenaam.

Uitleg:

  • #!/bin/bash: Dit is de shebang-regel. Het vertelt het systeem dat het de Bash-interpreter moet gebruiken om het script uit te voeren.
  • # Vraag de gebruiker naar zijn naam: Dit is een opmerking. Het biedt context over de komende code. Opmerkingen worden door de tolk genegeerd.
  • echo Hoe heet je?: Het echo-commando wordt gebruikt om de tekst tussen dubbele aanhalingstekens op de terminal weer te geven.
  • leesnaam: Het leescommando wacht tot de gebruiker tekst invoert en slaat deze op in de variabelenaam.
  • echo Hallo, $naam! Leuk je te ontmoeten.: Deze regel gebruikt het echo-commando om een ​​begroetingsbericht af te drukken dat de waarde bevat van de naamvariabele, die is verzameld uit de invoer van de gebruiker.

436

7) Hoe voeg je commentaar toe aan een shellscript?

Opmerkingen in shell-scripting worden gebruikt om uitleg of context aan de code te geven. Ze worden door de tolk genegeerd en zijn alleen bedoeld voor mensen die het script lezen. U kunt opmerkingen toevoegen met het #-symbool.

#!/bin/bash
# Dit is een commentaar waarin het doel van het script wordt uitgelegd
echo gfg

8) Maak een shellscript dat controleert of een bestand in de huidige map bestaat.

Hier is een script dat controleert of een bestand met de naam example.txt in de huidige map bestaat:

#!/bin/bash
bestand=voorbeeld.txt
# Controleer of het bestand bestaat
if [ -e $bestand ]; Dan
echo Bestand bestaat: $file
anders
echo Bestand niet gevonden: $file
zijn

Uitleg:

  1. #!/bin/bash: Dit is de shebang-regel die de tolk (/bin/bash) specificeert die moet worden gebruikt voor het uitvoeren van het script.
  2. file=example.txt: Deze regel definieert het variabele bestand en wijst er de waarde example.txt aan toe. U kunt dit vervangen door de naam van het bestand waarop u wilt controleren.
  3. if [ -e $bestand ]; then: Deze regel start een if-statement. De voorwaarde [ -e $file ] controleert of het bestand dat wordt opgegeven door de waarde van de bestandsvariabele bestaat. De vlag -e wordt gebruikt om te controleren of het bestand bestaat.
  4. echo Bestand bestaat: $file: Als de voorwaarde waar is (dat wil zeggen: het bestand bestaat), wordt op deze regel een bericht afgedrukt dat aangeeft dat het bestand bestaat, samen met de naam van het bestand.
  5. else: Als de voorwaarde onwaar is (dat wil zeggen: het bestand bestaat niet), voert het script de code uit onder de else-vertakking.
  6. echo Bestand niet gevonden: $file: Deze regel geeft een foutmelding weer die aangeeft dat het opgegeven bestand niet is gevonden, samen met de bestandsnaam.
  7. fi: Deze regel markeert het einde van de if-instructie.
Bestand zoeken

Bestand zoeken

9) Wat is het verschil tussen enkele aanhalingstekens (‘) en dubbele aanhalingstekens () in shell-scripting?

Enkele aanhalingstekens (‘) en dubbele aanhalingstekens () worden gebruikt om tekenreeksen in shell-scripting te omsluiten, maar ze gedragen zich verschillend:

  • Enkele aanhalingstekens: Alles tussen enkele aanhalingstekens wordt behandeld als een letterlijke tekenreeks. Variabelenamen en de meeste speciale tekens worden niet uitgevouwen.
  • Dubbele aanhalingstekens: Variabelen en bepaalde speciale tekens binnen dubbele aanhalingstekens worden uitgevouwen. De inhoud is onderhevig aan variabele vervanging en opdrachtvervanging.

#!/bin/bash

abcd=Hallo
echo ‘$abcd’ # Uitvoer: $abcd
echo $abcd # Uitvoer: Hallo

10) Hoe kunt u opdrachtregelargumenten gebruiken in een shellscript?

Opdrachtregelargumenten zijn waarden die aan een script worden verstrekt wanneer het wordt uitgevoerd. Ze zijn binnen het script toegankelijk met behulp van speciale variabelen zoals $1, $2, etc., waarbij $1 het eerste argument vertegenwoordigt, $2 het tweede argument, enzovoort.

Bijvoorbeeld: Als onze scriptnaam `example.sh`

#!/bin/bash

echo Scriptnaam: $0
echo Eerste argument: $1
echo Tweede argument: $2

Als we het script uitvoeren met `.example.sh hello_1 hello_2`, zal het het volgende opleveren:

cli argumenten

cli argumenten

11) Hoe gebruik je de for-lus om een ​​lijst met waarden te doorlopen?

Maak een scriptnaam `example.sh`.

#!/bin/bash

fruits=(appel banaan kersen dadel)
voor fruit in ${fruits[@]}; Doen
echo Huidig ​​fruit: $fruit
klaar

Uitleg:

De lijn `fruits=` creëert een array met de naam fruit met vier elementen: appel, banaan, kers en dadel.

  • voor fruit in ${fruits[@]}; do: Deze regel start een for-lus. Dit is wat elk onderdeel betekent:
  • voor fruit: Dit declareert een lusvariabele genaamd fruit. In elke iteratie van de lus behoudt fruit de waarde van het huidige element uit de fruits-array.
  • ${fruits[@]}: Dit is een array-uitbreiding die alle elementen uit de fruits-array overneemt. De syntaxis ${…} zorgt ervoor dat elk element als een afzonderlijk item wordt behandeld.
  • do: Dit trefwoord markeert het begin van de lusbody.
  • echo Huidig ​​fruit: $fruit: Binnen de lus gebruikt deze regel het echo-commando om de huidige waarde van de lusvariabele fruit weer te geven. Er wordt een bericht afgedrukt als Huidig ​​fruit: appel voor elk fruit in de array.
  • done: Dit trefwoord markeert het einde van de lusbody. Het vertelt het script dat de lus is voltooid.
for loop

for loop

12) Schrijf een shellscript dat de som van gehele getallen van 1 tot N berekent met behulp van een lus.

Maak een scriptnaam `example.sh`.

#!/bin/bash

echo Voer een getal in (N):
lees N
som=0
voor (( i=1; i<=$N; i++ )); Doen
som=$((som + i))
klaar
echo De som van gehele getallen van 1 tot $N is: $sum

Uitleg:
Het script begint met de vraag om een ​​getal (N) in te voeren met behulp van read. Dit getal bepaalt hoe vaak de lus wordt uitgevoerd.

  1. De variabele som wordt geïnitialiseerd op 0. Deze variabele houdt de som van gehele getallen bij.
  2. De for-lus begint met for (( i=1; i<=$N; i++ )). Deze lusstructuur wordt gebruikt om een ​​reeks acties een bepaald aantal keren te herhalen, in dit geval van 1 tot de waarde van N.
  3. Binnen de lus gebeuren deze dingen:
    • i=1 stelt de lusvariabele i in op 1 aan het begin van elke iteratie.
    • De lusvoorwaarde i<=$N controleert of i nog steeds kleiner is dan of gelijk is aan het gegeven getal N.
    • Als de voorwaarde waar is, wordt de lusbody uitgevoerd.
    • sum=$((sum + i)) berekent de nieuwe waarde van sum door de huidige waarde van i erbij op te tellen. Dit telt de gehele getallen van 1 op tot de huidige i-waarde.
  4. Na elke iteratie verhoogt i++ de waarde van i met 1.
  5. De lus blijft lopen totdat de voorwaarde i<=$N onwaar wordt (wanneer i groter wordt dan N).
  6. Zodra de lus is voltooid, geeft het script de som weer van de gehele getallen van 1 tot het ingevoerde getal N.

439

13) Maak een script dat naar een specifiek woord in een bestand zoekt en het aantal keren dat het voorkomt telt.

Maak een scriptnaam `word_count.sh`

#!/bin/bash

echo Voer het woord in waarnaar u wilt zoeken:
lees doel_woord
echo Voer de bestandsnaam in:
lees bestandsnaam
count=$(grep -o -w $doelwoord $bestandsnaam | wc -l)
echo Het woord ‘$target_word’ verschijnt $count keer in ‘$filename’.

Uitleg:

  • echo Voer het woord in waarnaar moet worden gezocht:: Op deze regel wordt een bericht weergegeven waarin de gebruiker wordt gevraagd een woord in te voeren waarnaar hij wil zoeken in een bestand.
  • read target_word: Deze regel leest de invoer van de gebruiker en slaat deze op in een variabele met de naam target_word.
  • echo Voer de bestandsnaam in:: Op deze regel wordt een bericht weergegeven waarin de gebruiker wordt gevraagd de naam in te voeren van het bestand waarin hij wil zoeken.
  • lees bestandsnaam: Deze regel leest de invoer van de gebruiker en slaat deze op in een variabele met de naam bestandsnaam.
  • count=$(grep -o -w $target_word $filename | wc -l): Deze regel doet het hoofdwerk van het script. Laten we het verder uitsplitsen:
    • grep -o -w $target_word $filename: Dit deel van de opdracht zoekt naar exemplaren van het target_word in de opgegeven bestandsnaam. De opties -o en -w zorgen ervoor dat alleen overeenkomsten van hele woorden worden geteld.
    • |: Dit is een pipe, die de uitvoer van het vorige commando neemt en deze als invoer voor het volgende commando verzendt.
    • wc -l: Dit deel van de opdracht gebruikt de opdracht wc om het aantal regels in de invoer te tellen. De optie -l telt specifiek de regels.
    • De hele opdracht berekent het aantal keren dat het doelwoord in het bestand voorkomt en wijst dat aantal toe aan de variabele aantal

441

14) Leg de verschillen uit tussen standaarduitvoer (stdout) en standaardfout (stderr).

Het belangrijkste verschil tussen standaarduitvoer (stdout) en standaardfout (stderr) is als volgt:

  • Standaarduitvoer (stdout): Dit is de standaarduitvoerstroom waar de reguliere uitvoer van een opdracht naartoe gaat. Het wordt standaard op de terminal weergegeven. U kunt het omleiden naar een bestand met behulp van>.
  • Standaardfout (stderr): Dit is de uitvoerstroom voor foutmeldingen en waarschuwingen. Het wordt ook standaard op de terminal weergegeven. U kunt het omleiden naar een bestand met behulp van 2>.

15) Leg het concept van voorwaardelijke instructies in shell-scripting uit.

Voorwaardelijke instructies in shell-scripting stellen ons in staat beslissingen te nemen en de stroom van ons script te controleren op basis van bepaalde voorwaarden. Ze zorgen ervoor dat ons script verschillende sets opdrachten kan uitvoeren, afhankelijk van of een bepaalde voorwaarde waar of onwaar is. De primaire voorwaardelijke instructies in shell-scripting zijn de if-instructie, de elif-instructie (optioneel) en de else-instructie (optioneel).

Hier is de basisstructuur van een voorwaardelijke instructie in shell-scripting:

als [voorwaarde]; Dan
# Commando's die moeten worden uitgevoerd als de voorwaarde waar is
elif [andere_voorwaarde]; Dan
# Commando's die moeten worden uitgevoerd als een andere_voorwaarde waar is (optioneel)
anders
# Uit te voeren opdrachten als geen van de voorwaarden waar is (optioneel)
zijn

Uitleg:

  • [ condition ] = Commando dat de voorwaarde evalueert en een waar (0) of onwaar (niet-nul) afsluitstatus retourneert.
  • then = Het is een trefwoord dat aangeeft dat de daaropvolgende opdrachten worden uitgevoerd als de voorwaarde als waar wordt geëvalueerd.
  • elif = (afkorting van else if) Het is een sectie waarmee we aanvullende voorwaarden kunnen opgeven om te controleren.
  • else = het is een sectie die opdrachten bevat die worden uitgevoerd als geen van de voorwaarden waar is.
  • fi = Het is een trefwoord dat het einde van het voorwaardelijke blok markeert.

16) Hoe lees je regels uit een bestand binnen een shellscript?

Naar lees regels vanuit een bestand binnen een shellscript kunnen we verschillende methoden gebruiken, maar een gebruikelijke benadering is het gebruik van een while-lus in combinatie met de leesopdracht. Zo kunnen we het doen:

#!/bin/bash
bestand=/home/jayeshkumar/jayesh.txt
# Controleer of het bestand bestaat
if [ -e $bestand ]; Dan
terwijl IFS= lees -r regel; Doen
echo Regel gelezen: $line
# Voeg hier uw verwerkingslogica toe
klaar <$bestand
anders
echo Bestand niet gevonden: $file
zijn

Uitleg:

  1. #!/bin/bash: Dit is de shebang-regel die de tolk (/bin/bash) specificeert die moet worden gebruikt voor het uitvoeren van het script.
  2. file=/home/jayeshkumar/jayesh.txt: Deze regel definieert het variabele bestand en wijst het volledige pad toe aan het bestand jayesh.txt in de map /home/jayeshkumar. Wijzig dit pad zodat het overeenkomt met het daadwerkelijke pad van het bestand dat u wilt lezen.
  3. if [ -e $bestand ]; then: Deze regel start een if-statement. Er wordt gecontroleerd of het bestand dat is opgegeven door de variabele $file bestaat. De vlag -e controleert of het bestand bestaat.
  4. terwijl IFS= lees -r regel; do: Deze regel initieert een while-lus die regels uit het bestand leest.
    • IFS=: De IFS (Internal Field Separator) is ingesteld op een lege waarde om voorloop- en volgspaties te behouden.
    • read -r line: Dit leest de huidige regel uit het bestand en slaat deze op in de variabele regel.
  5. echo Line read: $line: Deze regel geeft de inhoud weer van de regel die uit het bestand is gelezen. De variabele $line bevat de inhoud van de huidige regel.
  6. # Voeg hier uw verwerkingslogica toe: Dit is een plaatsaanduiding voor commentaar waarin u uw eigen logica kunt toevoegen om elke regel te verwerken. U kunt bijvoorbeeld de regel analyseren, informatie extraheren of specifieke acties uitvoeren op basis van de inhoud.
  7. done <$file: Dit markeert het einde van de while-lus. De < $file leidt de inhoud van het bestand om zodat deze door de lus kan worden gelezen.
  8. else: Als het bestand niet bestaat (de voorwaarde in de if-instructie is false), voert het script de code uit onder de else-vertakking.
  9. echo Bestand niet gevonden: $file: Deze regel geeft een foutmelding weer die aangeeft dat het opgegeven bestand niet is gevonden.
  10. fi: Deze regel markeert het einde van de if-instructie.
bestand lezen

bestand lezen

Hier gebruikten we ` pwd ` commando om het pad van de huidige map op te halen.

17) Schrijf een functie in een shellscript die de faculteit van een bepaald getal berekent.

Hier is het script datbereken de faculteitvan een bepaald getal.

#!/bin/bash
# Definieer een functie om faculteit te berekenen
berekenen_factorial() {
aantal=$1
feit=1
voor ((i=1; i<=getal; i++)); Doen
feit=$((feit * i))
klaar
echo $ feit
}
# Vraag de gebruiker om een ​​nummer in te voeren
echo Voer een getal in:
lees invoer_getal
# Roep de functie 'calculate_factorial' aan met het invoernummer
factorial_result=$(calculate_factorial $input_num)
# Geef het faculteitsresultaat weer
echo Faculteit van $input_num is: $factorial_result

Uitleg:

  1. Het script begint met de regel #!/bin/bash om de tolk op te geven.
  2. berekenen_factorial() is gedefinieerd als een functie. Er is één argument nodig, num, wat het getal is waarvoor de faculteit moet worden berekend.
  3. Binnen de functie wordt feit geïnitialiseerd op 1. Deze variabele slaat het faculteitsresultaat op.
  4. De for-lus itereert van 1 naar het opgegeven getal (num). In elke iteratie vermenigvuldigt het de huidige feitelijke waarde met de lusindex i.
  5. Nadat de lus is voltooid, bevat de feitvariabele de berekende faculteit.
  6. Het script vraagt ​​de gebruiker om een ​​getal in te voeren met behulp van read.
  7. De functie ‘calculate_factorial’ wordt aangeroepen met het door de gebruiker opgegeven getal, en het resultaat wordt opgeslagen in de variabele factorial_result.
  8. Ten slotte geeft het script het berekende factoriële resultaat weer.
Factorieel

Factorieel

18) Hoe ga je om met signalen als Ctrl+C in een shellscript?

In een shellscript kun je signalen zoals Ctrl+C (ook bekend als SIGINT) verwerken met behulp van het trap-commando. Ctrl+C genereert een SIGINT-signaal wanneer de gebruiker erop drukt om het actieve script of programma te onderbreken. Door het trap-commando te gebruiken, kunt u de acties opgeven die moeten worden ondernomen wanneer een bepaald signaal wordt ontvangen. Zo verwerkt u signalen zoals Ctrl+C in een shellscript:

#!/bin/bash
opruimen() {
echo Script onderbroken. Opruimen uitvoeren…
# Voeg hier uw opruimacties toe
uitgang 1
}
# Stel een trap in om de opruimfunctie aan te roepen wanneer Ctrl+C (SIGINT) wordt ontvangen
valopruiming SIGINT
# Rest van je script
echo Rennen...
slapen 10
echo Klaar.

Het omgaan met signalen is belangrijk om scripts robuust te maken en ervoor te zorgen dat ze onverwachte onderbrekingen netjes afhandelen. U kunt de opschoonfunctie aanpassen aan uw specifieke behoeften, zoals het sluiten van bestanden, het stoppen van processen of het loggen van informatie voordat het script wordt afgesloten.

Uitleg:

  1. #!/bin/bash: Deze shebang-regel specificeert de tolk die moet worden gebruikt voor het uitvoeren van het script.
  2. cleanup() { … }: Dit definieert een functie met de naam cleanup. Binnen deze functie kunt u alle acties opnemen die moeten worden uitgevoerd wanneer het script wordt onderbroken, zoals het sluiten van bestanden, het vrijgeven van bronnen of het uitvoeren van andere opruimtaken.
  3. trap opruimen SIGINT: Het trap-commando wordt gebruikt om een ​​signaalhandler in te stellen. In dit geval specificeert het dat wanneer het SIGINT-signaal (Ctrl+C) wordt ontvangen, de opschoonfunctie moet worden uitgevoerd.
  4. echo Running…, sleep 10, echo Finished.: Dit zijn slechts voorbeeldopdrachten om de uitvoering van een script te simuleren.

446

19) Maak een script dat dubbele regels in een tekstbestand controleert en verwijdert.

Hier is ons Linux-script waarin we dubbele regels uit een tekstbestand zullen verwijderen.

#!/bin/bash
invoer_bestand=invoer.txt
uitvoer_bestand=uitvoer.txt
sorteer $input_file | uniq> $output_file
echo Dubbele regels zijn succesvol verwijderd.

Uitleg:

  1. Het script begint met een shebang (#!/bin/bash), wat aangeeft dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. De variabele input_file wordt ingesteld op de naam van het invoerbestand dat dubbele regels bevat (wijzig dit in de werkelijke naam van het invoerbestand).
  3. De output_file variabele wordt ingesteld op de naam van het uitvoerbestand waar de duplicaten zullen worden verwijderd (wijzig dit in de gewenste uitvoerbestandsnaam).
  4. Het script gebruikt het sorteercommando om de regels in het invoerbestand te sorteren. Door de regels te sorteren, worden dubbele regels gegroepeerd.
  5. De gesorteerde regels worden vervolgens door het uniq-commando geleid, dat opeenvolgende dubbele regels verwijdert. De uitvoer van dit proces wordt omgeleid naar het uitvoerbestand.
  6. Nadat de duplicaten zijn verwijderd, drukt het script een succesbericht af.
dubbele regel verwijderen

dubbele regel verwijderen

Hier gebruiken we ` kat ` om de tekst in het tekstbestand weer te geven.

20) Schrijf een script dat een veilig willekeurig wachtwoord genereert.

Hier is ons script om een ​​veilig willekeurig wachtwoord te genereren.

#!/bin/bash
# Functie om een ​​willekeurig wachtwoord te genereren
Genereer wachtwoord() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Roep de functie op en sla het gegenereerde wachtwoord op
wachtwoord=$(genereer_wachtwoord)
echo Gegenereerd wachtwoord: $password

Opmerking: De gebruiker kan de lengte van zijn wachtwoord dienovereenkomstig wijzigen door het getal `12` te vervangen.

Uitleg:

  1. Het script begint met een shebang (#!/bin/bash), wat aangeeft dat het moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. De functie genereren_wachtwoord is gedefinieerd om een ​​willekeurig wachtwoord te genereren. Dit is hoe het werkt:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 verdeelt de gefilterde willekeurige gegevens in regels met een breedte van elk 12 tekens.
    • head -n 1 selecteert de eerste regel, waardoor we feitelijk een willekeurige reeks tekens met een lengte van 12 krijgen.
  3. Aan de wachtwoordvariabele wordt het resultaat toegewezen van het aanroepen van de functie genereren_wachtwoord.
  4. Ten slotte wordt het gegenereerde wachtwoord weergegeven met behulp van echo.

448

21) Schrijf een shellscript dat de totale grootte van alle bestanden in een map berekent.

Hier is een shellscript om de totale grootte van alle bestanden in een map te berekenen.

#!/bin/bash
map=/pad/naar/uw/map
total_size=$(du -csh $directory | grep totaal | awk ‘{print $1}’)
echo Totale grootte van bestanden in $directory: $total_size

Uitleg:

  1. Het script begint met #!/bin/bash shebang, wat aangeeft dat het moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. De mapvariabele wordt ingesteld op het pad van de map waarvoor u de totale bestandsgrootte wilt berekenen. Vervang /pad/naar/uw/directory door het daadwerkelijke pad.
  3. De opdracht du wordt gebruikt om het gebruik van de bestandsruimte te schatten. De gebruikte opties zijn:
    • -c: Produceer een eindtotaal.
    • -s: Geef alleen de totale grootte van de opgegeven map weer.
    • -h: afdrukformaten in een voor mensen leesbaar formaat (bijvoorbeeld KB, MB, GB).
  4. De uitvoer van du wordt doorgesluisd naar grep total om de regel uit te filteren die de totale grootte bevat.
  5. awk ‘{print $1}’ wordt gebruikt om het eerste veld (totale grootte) uit de regel te extraheren.
  6. De berekende totale grootte wordt opgeslagen in de variabele total_size.
  7. Ten slotte geeft het script de totale grootte weer met behulp van echo.
Totale grootte van bestanden

Totale grootte van bestanden

Hier gebruikten we ` pwd ` commando om het huidige mappad te zien.

22) Leg het verschil uit tussen if- en elif-instructies in shell-scripting.

Functie `als`Staffement `elif`-verklaring
Doel Leg het verschil uit tussen if- en elif-instructies in shell-scripting. Biedt alternatieve voorwaarden om te controleren of de initiële if-voorwaarde onwaar is.
gebruik Gebruikt voor de begintoestand. Wordt gebruikt na de initiële if-voorwaarde om aanvullende voorwaarden te controleren.
aantal blokken Kan er maar één hebben als blok. Kan meerdere elif-blokken hebben, maar slechts één ander blok (optioneel).
Executie Voert het codeblok uit dat is gekoppeld aan de if-instructie als de voorwaarde waar is. Als de voorwaarde onwaar is, wordt het else-blok (indien aanwezig) uitgevoerd (optioneel). Controleert elke elif-voorwaarde op volgorde. Als één elif-voorwaarde waar is, wordt het corresponderende codeblok uitgevoerd en verlaat het script het volledige voorwaardelijke blok. Als geen van de elif-voorwaarden waar is, wordt het else-blok (indien aanwezig) uitgevoerd.
Geneste structuren Kan worden genest in andere if-, elif- of else-blokken. Kan niet in een ander elif-blok worden genest, maar kan wel in een if- of else-blok worden gebruikt.

Laten we het aan de hand van een voorbeeld begrijpen.

#!/bin/bash
aantal=5
if [$nummer -gt 10]; Dan
echo $getal is groter dan 10
anders
echo $number is niet groter dan 10
zijn
echo ——–
if [$nummer -gt 10]; Dan
echo $getal is groter dan 10
elif [ $getal -eq 10 ]; Dan
echo $getal is gelijk aan 10
anders
echo $getal is kleiner dan 10
zijn

Uitleg:

In dit voorbeeld controleert het eerste if-blok of getal groter is dan 10. Als dit niet het geval is, wordt er een bericht afgedrukt dat aangeeft dat het getal niet groter is dan 10. Het tweede blok met elif-instructies controleert meerdere voorwaarden opeenvolgend totdat een van deze waar is. In dit geval zal de uitvoer, aangezien de waarde van getal 5 is:

if_elif verschil

if_elif verschil

23) Hoe gebruik je een while-lus om herhaaldelijk opdrachten uit te voeren?

Een while-lus wordt gebruikt in shell-scripts om herhaaldelijk een reeks opdrachten uit te voeren zolang een opgegeven voorwaarde waar is. De lus gaat door met het uitvoeren van de opdrachten totdat de voorwaarde onwaar wordt.

Hier is de basissyntaxis van een while-lus:

terwijl [voorwaarde]; Doen
# Uit te voeren opdrachten
klaar

Uitleg:

  1. De 'while'-lus begint met het sleutelwoord 'while', gevolgd door een voorwaarde tussen vierkante haakjes '[ ]'.
  2. De body van de lus, die de uit te voeren opdrachten bevat, wordt omsloten door de trefwoorden `do` en `done`.
  3. De lus controleert eerst de toestand. Als de voorwaarde waar is, worden de opdrachten binnen de lusbody uitgevoerd. Nadat de lusbody is uitgevoerd, wordt de voorwaarde opnieuw gecontroleerd en herhaalt het proces zich totdat de voorwaarde onwaar wordt.

Voorbeeld: Als we getallen van 1 tot 5 willen afdrukken

#!/bin/bash
teller=1
while [ $counter -le 5 ]; Doen
echo-nummer: $counter
teller=$((teller + 1))
klaar

Uitleg:

  • De tellervariabele is ingesteld op 1.
  • De while-lus controleert of de waarde van counter kleiner dan of gelijk is aan 5. Zolang deze voorwaarde waar is, gaat de lus door met uitvoeren.
  • Binnen de lus wordt de huidige waarde van de teller afgedrukt met behulp van echo.
  • De teller wordt met 1 verhoogd met behulp van de uitdrukking $((teller + 1)).
herhalingslus

herhalingslus

24) Maak een shellscript dat alle lege bestanden in een map vindt en vermeldt.

Shell-script dat u kunt gebruiken om alle lege bestanden in een map te vinden en weer te geven met behulp van de opdrachten `find` en `stat`:

#!/bin/bash
map=$1″
if [ -z $map ]; Dan
echogebruik: $0
uitgang 1
zijn

als [ ! -d $map]; Dan
echo Fout: ‘$directory’ is geen geldige map.
uitgang 1
zijn
echo Lege bestanden in $directory:
zoek $directory -type f -leeg

Uitleg:

  1. ` #!/bin/bash `: Dit wordt een shebang genoemd en vertelt het besturingssysteem om de Bash-shell te gebruiken om het script te interpreteren en uit te voeren.
  2. ` map=$1″ `: Deze regel wijst het eerste opdrachtregelargument (aangeduid met $1) toe aan de variabele ` map `.
  3. ` if [ -z $map ]; Dan `: Deze regel start een if-instructie die controleert of de ` map ` variabele is leeg (-z test voor een lege string).
  4. ` echogebruik: $0 `: Als de directory leeg is, drukt deze regel een gebruiksbericht af, waarbij ` $ 0 ` vertegenwoordigt de naam van het script.
  5. ` uitgang 1 `: Deze regel sluit het script af met de afsluitcode ` 1 ', wat een fout aangeeft.
  6. ` zijn `: Deze regel markeert het einde van de ` als ` verklaring.
  7. ` als [ ! -d $map]; Dan `: Dit start een nieuwe if-instructie om te controleren of de opgegeven map bestaat (` -D ` tests voor een directory).
  8. ` echo Fout: ‘$directory’ is geen geldige map. `: Als de opgegeven directory niet bestaat, drukt deze regel een foutmelding af.
  9. ` uitgang 1 `: Sluit het script af met de afsluitcode ` 1 `.
  10. ` zijn `: Markeert het einde van de tweede ` als` stelling.
  11. ` echo Lege bestanden in $directory: `: Als alles tot nu toe geldig is, drukt deze regel een bericht af dat aangeeft dat het script lege bestanden in de opgegeven map zal weergeven.
  12. ` zoek $directory -type f -leeg `: Deze regel gebruikt de ` vinden ` commando om te zoeken naar lege bestanden (` -leeg `) van het type gewone bestanden (` -type f `) in de opgegeven map. Vervolgens worden deze lege bestanden weergegeven.
Lege bestanden vinden

Lege bestanden vinden

Opmerking : We moeten een map opgeven als argument bij het uitvoeren van het script. Hier hebben we het pad van de huidige map home/jayeshkumar/ gebruikt

25) Wat is het doel van het leescommando in shell-scripting?

Met de leesopdracht in shell-scripting kan het script u om informatie vragen. Het is alsof een computer je een vraag stelt en op je antwoord wacht. Dit is handig voor scripts waarbij u iets moet typen of wanneer het script moet werken met informatie uit bestanden. De leesopdracht helpt het script te stoppen en te wachten op wat u typt, en vervolgens kan het die informatie gebruiken om meer dingen in het script te doen.

Syntaxis van leesopdracht:

read variable_name>

Voorbeeld : Als we de naam als invoer van de gebruiker willen gebruiken om deze af te drukken.

#!/bin/bash
echo Voer uw naam in:
lees naam
echo Hallo, $naam!

453

lees naam

Samenvattend wordt het leescommando gebruikt om gebruikersinvoer of gegevens uit bestanden binnen shell-scripts vast te leggen, waardoor de scripts interactiever en veelzijdiger worden.

26) Schrijf een shellscript dat alle bestandsnamen in een map naar kleine letters converteert.

Hier is een shellscript dat alle bestandsnamen in een map naar kleine letters converteert.

#!/bin/bash
map=$1″
if [ -z $map ]; Dan
echogebruik: $0
uitgang 1
zijn

als [ ! -d $map]; Dan

echo Fout: ‘$directory’ is geen geldige map.
uitgang 1
zijn

cd $map || uitgang 1

voor bestand in *; Doen
if [ -f $bestand ]; Dan
nieuwenaam=$(echo $bestand | tr ‘A-Z’ ‘a-z’)
[ $bestand != $nieuwenaam ] && mv $bestand $nieuwenaam
zijn
klaar

Uitleg:

  1. #!/bin/bash : Dit is de shebang, waarin wordt gespecificeerd dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. map=$1″ : Deze regel wijst het eerste opdrachtregelargument toe aan de variabelenmap.
  3. if [ -z $map ]; Dan : Deze regel controleert of de mapvariabele leeg is (er wordt geen argument opgegeven bij het uitvoeren van het script).
  4. echogebruik: $0 : Als de map leeg is, drukt deze regel een gebruiksbericht af met de naam van het script ($0).
  5. uitgang 1 : deze regel sluit het script af met de afsluitcode 1, wat aangeeft dat er een fout is opgetreden.
  6. F i: Dit markeert het einde van de eerste if-instructie.
  7. als [ ! -d $map]; Dan : Deze regel controleert of de opgegeven map niet bestaat (-d test voor een map).
  8. echo Fout: ‘$directory’ is geen geldige map. : Als de opgegeven map niet bestaat, drukt deze regel een foutmelding af.
  9. uitgang 1 : Sluit het script af met de afsluitcode 1.
  10. zijn : Markeert het einde van de tweede if-instructie.
  11. cd $map || uitgang 1 : Wijzigt de huidige werkmap naar de opgegeven map. Als het wijzigen van de map mislukt (bijvoorbeeld als de map niet bestaat), wordt het script afgesloten met een foutcode.
  12. voor bestand in *; Doen: I voor bestand in *; Doen: zorgt voor een lus die alle items in de huidige map doorloopt (* komt overeen met alle bestandsnamen).
  13. if [ -f $bestand ]; Dan : Controleert of het huidige lus-iteratie-item een ​​normaal bestand is (-f test voor een normaal bestand).
  14. nieuwenaam=$(echo $bestand | tr ‘A-Z’ ‘a-z’) : Converteert de huidige bestandsnaam ($file) naar kleine letters met behulp van de opdracht tr en slaat het resultaat op in de variabele newname.
  15. [ $bestand != $nieuwenaam ] && mv $bestand $nieuwenaam : Vergelijkt de oorspronkelijke bestandsnaam met de nieuwe bestandsnaam in kleine letters. Als ze verschillend zijn, wordt de naam van het bestand gewijzigd met behulp van de opdracht mv.
  16. zijn : Markeert het einde van de innerlijke if-instructie.
  17. klaar : Markeert het einde van de lus.

454

Opmerking : We moeten een map opgeven als argument bij het uitvoeren van het script. Hier hebben we het pad van de huidige map home/jayeshkumar/test gebruikt

27) Hoe kun je rekenkundige bewerkingen gebruiken binnen een shellscript?

Rekenkundige bewerkingen kunnen worden uitgevoerd binnen een shellscript met behulp van verschillende ingebouwde methoden. De shell biedt mechanismen voor eenvoudige rekenkundige berekeningen met behulp van rekenkundige uitbreiding, zoals:

  1. Rekenkundige uitbreiding ($((…)))
  2. Gebruik expr-opdracht
  3. Met behulp van let Command

Hier is ons Shell-script waarin alle drie de methoden voor rekenkundige bewerkingen worden uitgelegd.

#!/bin/bash
getal1=10
aantal2=5

#Rekenkundige uitbreiding ($((…)))

resultaat=$((aantal1 + aantal2))
echo Som: $resultaat

#Expr-opdracht gebruiken

som=$(expr $num1 + $num2)
echo Som: $som

#Let-opdracht gebruiken

laat som = num1 + num2
echo Som: $som

Uitleg:

  1. `#!/bin/bash` : Dit is de shebang, waarin wordt gespecificeerd dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. `num1=10` en ` getal2=5` : Deze regels wijzen de waarden 10 en 5 toe aan de variabelen ` num1 ' en ' num2 ', respectievelijk.
  3. `#Rekenkundige uitbreiding ($((…)))` : Dit is een opmerking die het begin aangeeft van de sectie die de rekenkundige uitbreiding demonstreert.
  4. `resultaat=$((aantal1 + aantal2))` : Deze regel gebruikt rekenkundige expansie om de som van ` te berekenen num1 ' en ' num2 ` en slaat het resultaat op in de ` resultaat ` variabele.
  5. `echosom: $resultaat` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` resultaat ` variabele.
  6. `#Gebruik expr-opdracht` : Dit is een commentaar dat het begin aangeeft van de sectie die het gebruik van de ` uitspr ` commando voor rekenkundige bewerkingen.
  7. `som=$(expr $num1 + $num2)` : Deze regel gebruikt de ` uitspr ` commando om de som van ` te berekenen num1 ' en ' num2 ` en slaat het resultaat op in de ` som ` variabele. Merk op dat de ` uitspr Het commando ` vereist spaties rond de operatoren.
  8. `echo Som: $som` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` som ` variabele.
  9. `#Gebruik let-commando` : Dit is een commentaar dat het begin aangeeft van de sectie die het gebruik van de ` laten ` commando voor rekenkundige bewerkingen.
  10. `laat som = num1 + num2″` : Deze regel gebruikt de ` laten ` commando om de som van ` te berekenen num1 ' en ' num2 ' en wijst het resultaat toe aan de ' som ` variabele. De ` laten Het commando ` vereist geen spaties rond de operatoren.
  11. `echo Som: $som` : Deze regel drukt de berekende som af met behulp van de waarde die is opgeslagen in het bestand ` som ` variabele.
rekenkundig

rekenkundig

28) Maak een script dat controleert of een netwerkhost bereikbaar is.

Hier is een eenvoudig shellscript dat de ping-opdracht gebruikt om te controleren of een netwerkhost bereikbaar is:

#!/bin/bash
gastheer=$1″
als [ -z $host ]; Dan
echogebruik: $0
uitgang 1
zijn
ping -c 4 $host

als [$? -eq 0]; Dan
echo $host is bereikbaar.
anders
echo $host is niet bereikbaar.
zijn

Uitleg:

  1. Het neemt een hostnaam of IP-adres als argument en controleert of het argument wordt opgegeven.
  2. Als er geen argument wordt opgegeven, wordt er een gebruiksbericht weergegeven en wordt het afgesloten.
  3. Het gebruikt het ping-commando met de optie -c 4 om vier ICMP-echoverzoeken naar de opgegeven host te sturen.
  4. Nadat de ping-opdracht is uitgevoerd, wordt de afsluitstatus ($?) gecontroleerd. Als de afsluitstatus 0 is, betekent dit dat de host bereikbaar is en dat het script een succesbericht afdrukt. Anders wordt er een foutbericht afgedrukt.

456

Opmerking : We moeten een hostnaam opgeven als argument bij het uitvoeren van het script. Hier hebben we google.com gebruikt

29) Schrijf een shellscript om het grootste element in een array te vinden:

Hier is een shellscript om het grootste element in een array te vinden.

#!/bin/bash
# Declareer een array
array=(3 56 24 89 67)

# Initialiseer een variabele om de maximale waarde op te slaan, te beginnen met het eerste element

max=${array[0]}

# Herhaal de array

voor num in ${array[@]}; Doen

# Vergelijk elk element met het huidige maximum

als ((aantal> max)); Dan
max=$num
zijn
klaar

# Druk de maximale waarde af

echo Het maximale element in de array is: $max

Uitleg:

  1. ` #!/bin/bash `: De shebang-regel specificeert dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. ` array=(3 56 24 89 67) `: De array wordt gedeclareerd en geïnitialiseerd met waarden.
  3. ` max=${array[0]} `: `max` wordt geïnitialiseerd met het eerste element van de array.
  4. ` voor num in ${array[@]}; Doen `: Een `for`-lus wordt gebruikt om door de elementen van de array te lopen.
  5. ` als ((aantal> max)); Dan `: Een `if`-instructie controleert of het huidige element `num` groter is dan het huidige maximum `max`.
  6. ` max=$num`: Als`aantal ` groter is dan `max`, `max` wordt bijgewerkt met de waarde num.
  7. ` klaar `: De `for`-lus is gesloten.
  8. ` echo Het maximale element in de array is: $max `: Ten slotte drukt het script de maximale waarde af die in de array is gevonden.
461

grootste aantal

30) Schrijf een script om de som van elementen in een array te berekenen.

#!/bin/bash

# Declareer een array

array=(1 65 22 19 94)

# Initialiseer een variabele om de som op te slaan

som=0

# Herhaal de array en voeg elk element toe aan de som

voor num in ${array[@]}; Doen
ben=$((ben + ben))
klaar

# Druk de som af

echo De som van de elementen in de array is: $sum

Uitleg:

` #!/bin/bash `: De shebang-regel specificeert dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.

` array=(1 65 22 19 94) `: De array wordt gedeclareerd en geïnitialiseerd met waarden.

` som=0 `:` som ` wordt geïnitialiseerd op nul om de som van de elementen vast te houden.

` voor num in ${array[@]}; Doen `: Een` voor ` lus wordt gebruikt om door de elementen van de array te lopen.

` ben=$((ben + ben)) `: Binnen de lus, elk element ` op een ` wordt toegevoegd aan ` som ` variabele.

` klaar `: De ` voor ' lus is gesloten.

`echo De som van de elementen in de array is: $sum`: Ten slotte drukt het script de som van alle elementen in de array af.

462

Som van elementen

Meer weten over Shell-scripts

Conclusie

We weten allemaal dat shell-script erg handig is om de werkproductiviteit te verhogen en ook tijd te besparen. Dus in dit artikel hebben we het besproken 30 zeer nuttige en meest conman shell-scriptvoorbeelden . We hopen dat deze complete handleiding over shell-scriptvoorbeelden u helpt alles over de shell-scripts te begrijpen.




uitgang 1
zijn
ping -c 4 $host

als [$? -eq 0]; Dan
echo $host is bereikbaar.
anders
echo $host is niet bereikbaar.
zijn

Uitleg:

  1. Het neemt een hostnaam of IP-adres als argument en controleert of het argument wordt opgegeven.
  2. Als er geen argument wordt opgegeven, wordt er een gebruiksbericht weergegeven en wordt het afgesloten.
  3. Het gebruikt het ping-commando met de optie -c 4 om vier ICMP-echoverzoeken naar de opgegeven host te sturen.
  4. Nadat de ping-opdracht is uitgevoerd, wordt de afsluitstatus ($?) gecontroleerd. Als de afsluitstatus 0 is, betekent dit dat de host bereikbaar is en dat het script een succesbericht afdrukt. Anders wordt er een foutbericht afgedrukt.

456

Opmerking : We moeten een hostnaam opgeven als argument bij het uitvoeren van het script. Hier hebben we google.com gebruikt

29) Schrijf een shellscript om het grootste element in een array te vinden:

Hier is een shellscript om het grootste element in een array te vinden.

abstractie in Java

#!/bin/bash
# Declareer een array
array=(3 56 24 89 67)

# Initialiseer een variabele om de maximale waarde op te slaan, te beginnen met het eerste element

max=${array[0]}

# Herhaal de array

voor num in ${array[@]}; Doen

# Vergelijk elk element met het huidige maximum

als ((aantal> max)); Dan
max=$num
zijn
klaar

# Druk de maximale waarde af

echo Het maximale element in de array is: $max

Uitleg:

  1. ` #!/bin/bash `: De shebang-regel specificeert dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.
  2. ` array=(3 56 24 89 67) `: De array wordt gedeclareerd en geïnitialiseerd met waarden.
  3. ` max=${array[0]} `: `max` wordt geïnitialiseerd met het eerste element van de array.
  4. ` voor num in ${array[@]}; Doen `: Een `for`-lus wordt gebruikt om door de elementen van de array te lopen.
  5. ` als ((aantal> max)); Dan `: Een `if`-instructie controleert of het huidige element `num` groter is dan het huidige maximum `max`.
  6. ` max=$num`: Als`aantal ` groter is dan `max`, `max` wordt bijgewerkt met de waarde num.
  7. ` klaar `: De `for`-lus is gesloten.
  8. ` echo Het maximale element in de array is: $max `: Ten slotte drukt het script de maximale waarde af die in de array is gevonden.
461

grootste aantal

30) Schrijf een script om de som van elementen in een array te berekenen.

#!/bin/bash

# Declareer een array

array=(1 65 22 19 94)

# Initialiseer een variabele om de som op te slaan

som=0

# Herhaal de array en voeg elk element toe aan de som

voor num in ${array[@]}; Doen
ben=$((ben + ben))
klaar

# Druk de som af

echo De som van de elementen in de array is: $sum

Uitleg:

` #!/bin/bash `: De shebang-regel specificeert dat het script moet worden geïnterpreteerd met behulp van de Bash-shell.

` array=(1 65 22 19 94) `: De array wordt gedeclareerd en geïnitialiseerd met waarden.

` som=0 `:` som ` wordt geïnitialiseerd op nul om de som van de elementen vast te houden.

` voor num in ${array[@]}; Doen `: Een` voor ` lus wordt gebruikt om door de elementen van de array te lopen.

` ben=$((ben + ben)) `: Binnen de lus, elk element ` op een ` wordt toegevoegd aan ` som ` variabele.

` klaar `: De ` voor ' lus is gesloten.

`echo De som van de elementen in de array is: $sum`: Ten slotte drukt het script de som van alle elementen in de array af.

462

Som van elementen

Meer weten over Shell-scripts

Conclusie

We weten allemaal dat shell-script erg handig is om de werkproductiviteit te verhogen en ook tijd te besparen. Dus in dit artikel hebben we het besproken 30 zeer nuttige en meest conman shell-scriptvoorbeelden . We hopen dat deze complete handleiding over shell-scriptvoorbeelden u helpt alles over de shell-scripts te begrijpen.